Здравствуйте, Erop, Вы писали:
E>2) Никогда не понимал, зачем так страдать. Нет бы написать понятно ххх != 0
Как я понимаю, это пошло-поехало от умных указателей. Там оператор "!" переопределяется с целью изучить внутреннее содержимое, а не обертку.
p = NULL;
if (p)
{
// do something
}
if (!!p)
{
// do something
}
Если p — обычный указатель, то оба if пролетят мимо, а если p — "умный", то в первый if мы таки заскочим. Получается, что написание !! превращает код в легко мигрирующий (или безопасную заготовку для шаблона).