Тернарный оператор и продление срока службы временного объекта через справочник на концентрациюC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Тернарный оператор и продление срока службы временного объекта через справочник на концентрацию

Сообщение Anonymous »

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

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

class Gizmo
{
// Rule of Five members implemented
};

Gizmo Frobnicate(const Gizmo& arg);

void ProcessGizmo(const Gizmo& arg, bool frobnicate)
{
const Foo& local = frobnicate ? Frobnicate(arg) : arg;
// Perform some work on local
}
Практический пример: Boolean указывает, сжимать ли буфер, и вы хотели бы написать единый код, который работает на локальном в любом случае.

Приведенный выше пример, однако, вызвал конструктор копирования Gizmo на arg < /code>, когда frobnicate < /code> был false < /code>.
мне удалось избежать Вызов конструктора копирования путем изменения frobnicate (arg) на static_cast (frobnicate (arg)) .

my Вопрос становится: как тройной оператор взаимодействует с правилом о обязательном переводе с локальной ссылкой на временный? Мое решение законно и хорошо себя ведет?

Подробнее здесь: https://stackoverflow.com/questions/286 ... -reference
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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