parens вокруг функции проясняют, что функция является выражением. parens после являются вызовом к функции.
Уведомление, что функция не имеет имени.
Похоже, что в стандартном разделе 27.4.4.3 C ++ 0x есть ответ (выделено мной).
operator unspecified-bool-type() const;
Возвращает: Если
fail ()
, то значение, которое будет оценивать false в логическом контекст; в противном случае значение, которое будет оценить true в логическом контексте. Возвращаемый тип значения не должен быть конвертируемый вint
.Примечание. Это преобразование можно использовать в контексты, в которых ожидается
bool
(например, условие if); Однако, неявные преобразования (например, вint
) что может произойти сbool
не разрешено, исключив некоторые источники ошибка пользователя.