Является ли nullptr
постоянно ложным при использовании в качестве логического выражения или в явном или неявном виде в логическом выражении? Эта реализация определена или определена в стандарте?
Я написал некоторый код для тестирования, но не уверен, что он полностью проверяет это свойство. Я не мог найти существующий ответ SO, который говорил конкретно об этом. cppreference не упоминает об этом из того, что я вижу.
if (nullptr) {
;
} else {
std::cout << "Evaluates to false implicitly\n";
}
if (!nullptr) {
std::cout << "Evaluates to false if operated on\n";
}
if (!(bool)(nullptr)) {
std::cout << "Evaluates to false if explicitly cast to bool\n";
}
Ожидаемый и фактический:
Evaluates to false implicitly
Evaluates to false if operated on
Evaluates to false if explicitly cast to bool