Re: Копирование при auto инициализации
От: VTT http://vtt.to
Дата: 27.11.16 12:11
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Увы поиск по форуму ничего не дал.

_NN>Хочется прояснить ситуацию с инициализацией через auto.

_NN>Являются ли a1 и a3 равносильными , а также a2 и a4 ?

_NN>
_NN>    A a1 = f("1");
    
_NN>    A a2(f("2"));
    
_NN>    auto a3 = f("3");

_NN>    auto a4(f("3"));
_NN>

Если f возвращает A, то может иметь место Copy elision, и все четыре записи окажутся равносильны.
Если f возвращает не A, то a3 и a4 будут иметь этот тип (или производный), и вторые две записи не будут равносильны первым двум.

_NN>Если это так, то имеет ли смысл писать auto a = ... вместо auto a(...) ?

Имеет смысл писать auto a(...) вместо auto a = ... чтобы потом было проще искать настоящие вызовы оператора присваивания.
Имеет смысл писать auto, если нас особо не волнует тип созданной переменной.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.