Хотя синтаксически &
разрешено в этой позиции в грамматике (это пример декларатора , который представляет собой последовательность: декларатор ptr-оператора , &
является ptr-оператор ), семантически это не имеет смысла и здесь не допускается.Тот факт, что он действителен исключительно с грамматической точки зрения, может указывать, почему Visual Studio может его принять.
Изучая возможности, это объявление выглядит как определение функции без возвращаемого типа.7 [dcl.dcl] / 6 гласит: «Только в объявлениях функций для конструкторов, деструкторов и преобразований типов можно опустить decl-specier-seq ».и при отсутствии ~
или operator
единственной возможностью является объявление конструктора.
12.1 [class.ctor] / 1 описывает специальный синтаксис объявления, используемый для конструкторов, и он должен быть только необязательной последовательностью спецификаторы функций , за которыми следует имя класса конструктора.* &
или другие оператор ptr не допускаются перед именем класса конструктора.