Вызов return в конструкторе

Подскажите, пожалуйста, разрешено ли вызывать return для завершения работы конструктора?


Ответы (1 шт):

Автор решения: Croessmah

В теле самого конструктора использовать return разрешено. Но, согласно правилам языка, в обработчике исключения function-try-block конструктора использование return запрещено:

If a return statement ([stmt.return]) appears in a handler of the function-try-block of a constructor, the program is ill-formed.

т.е.

struct some
{
    some() try {
        //Тело конструктора
        return; //Ок
    } catch (...) {
        //Обработчик исключения function-try-block
        return; //Ошибка!
    }
};
→ Ссылка