В поддержку принятого ответа.
Из dcl.init # 11 :
Объект, инициализатор которого является пустым набором круглых скобок, т.е. , ()
, инициализируется значением.
[Примечание: Поскольку
()
не разрешено синтаксисом инициализатора,X a();
не является объявление объекта
blockquote>class X
, но объявление функции, не принимающей аргумента и возвращающей X. Форма()
разрешена в некоторых других контекстах инициализации ([expr.new], [expr.type.conv], [class.base.init]). - примечание к концу]