Что делать, если я пишу оператор return в конструкторе? Является ли он стандартным?
struct A
{
A() { return; }
};
Вышеприведенный код компилируется отлично, без ошибок на ideone. Но следующий код не делает:
struct A
{
A() { return 100; }
};
Он дает эту ошибку в ideone:
error: возвращает значение из конструктора
Я понимаю, что возвращающее значение из конструктора вообще не имеет смысла, поскольку в нем явно не упоминается тип возвращаемого значения, и мы не можем сохранить возвращаемое значение в конце концов. Но мне любопытно узнать:
- Какое утверждение из стандарта С++ допускает первый пример, но запрещает второй? Есть ли явное выражение?
- Является ли тип возврата в первом примере
void
? - Есть ли какой-либо неявный тип возврата вообще?