Мой коллега Zag обнаружил, что предупреждение C4706: назначение, используемое в качестве условия , обнаруживается MSVC с/Wall Switch только для некоторых выражений, а не для других.
В следующем примере:
#include
#include
int main() {
std::unique_ptr ptr {new int(42)};
if (ptr = 0) {} // no MSVC warning
std::optional opt {42};
if (opt = 0) {} // warning C4706: assignment used as a condition
}
Есть две очень похожие проверки с назначением, но MSVC показывает предупреждение только для if (opt = 0) , а не для if (ptr = 0) . Онлайн -демонстрация: https://gcc.godbolt.org/z/5swkgezv7
Какова здесь логика? Контролируется ли он компилятором или стандартной реализацией библиотеки? Может ли можно привести предупреждение в строке с if (ptr = 0) ?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -c4706-abo
При каких обстоятельствах визуальный компилятор, предупреждающий компилятор Visual Studio, предупреждение C4706 о назнач ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как изменить предупреждающий текст, когда шаблон используется при вводе?
Anonymous » » в форуме Html - 0 Ответы
- 0 Просмотры
-
Последнее сообщение Anonymous
-