Когда тройной оператор подходит для копирования Elision?C++

Программы на C++. Форум разработчиков
Anonymous
Когда тройной оператор подходит для копирования Elision?

Сообщение Anonymous »

Согласно
этой статье
Raymond Chen, выражение Ternary не является кандидатом на копию Elision. < /p>

Проблема с тщательным Правило для тройных выражений заключается в том, что
Результат инициализируется из < /em> ветви выбранного тройного. Сделал еще несколько тестирования: < /p>
код (

Код: Выделить всё

struct Widget : WidgetBase
) Модифицированная из сообщения в блоге Рэймонда Чена теперь удален, так как оказывается, что это не имеет ничего общего с тройным оператором. Пожалуйста, обратитесь к тому, почему RVO не применяется к инициализации субобекта базового класса?#include
#include
#include
struct WidgetBase
{
// local mode
WidgetBase() {};

// remote mode
WidgetBase(std::string const& server)
:m_server(server)
{
std::cout
Godbolt < /p>
Есть еще одна особенно странная вещь: член Struct, похоже, влияет на то, выполняет ли MSVC копию Elision или нет!?

Если я удаляю std :: string m_server < /code> from widgetbase < /code>: < /p>
: < /p>


Подробнее здесь: https://stackoverflow.com/questions/797 ... py-elision

Вернуться в «C++»