int* get(){return nullptr;}
int main()
{
if(auto p = get(); (*p) != 1231231233)
{
std::cout << "NO"; // not printed
}
else
{
std::cout << "we should be here" << std::endl;;
}
}
Почему здесь не напечатано NO
, потому что согласно стандарту , init-Statement не проверяется на true и доступ к *p
должен быть UB, и мы должны привести к true
? Я озадачен: LIVE