Консистентное поведение return в конструкторах

yuyoyuppe
yuyoyuppe

Пример кода:

void log(...) { }

void func(const bool v)
{
    if(v) return log();
}

struct S
{
    S(const bool v)
    {
        // works!
        if(v) return;

        // error: constructor 'S' must not return void expression
        //if(v) return log();
    }
};

Из текущего стандарта http://eel.is/c++draft/class.ctor#6:

A return statement in the body of a constructor shall not specify a return value.

-1
рейтинг
core
1 комментарий
Antervis

так это же ничего не дает. Конструкторы по определению не должны возвращать значение, поэтому return foo(); в конструкторах не имеет смысла даже если foo() возвращает void

Antervis
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения