Что, если я напишу оператор возврата в конструкторе?

Что, если я напишу оператор return в конструкторе? Соответствует ли он стандарту?

struct A
{ 
     A() { return; } 
};

Приведенный выше код компилируется без ошибок на ideone . Но следующий код не работает:

struct A
{ 
   A() { return 100; } 
};

Он выдает эту ошибку на ideone :

error: возврат значения из конструктора

Я понимаю, что возвращение значения из конструктора не имеет смысла вообще, потому что он явно не упоминает тип возвращаемого значения, и мы не можем в конце концов сохранить возвращаемое значение. Но мне любопытно знать:

  • Какой оператор стандарта C ++ допускает первый пример, но запрещает второй? Есть ли какой-либо явный оператор?
  • Является ли возвращаемый тип в первом примере недействительным ?
  • Есть ли вообще какой-либо неявный возвращаемый тип?

44
задан Nawaz 10 March 2011 в 05:18
поделиться