Тернарный оператор и продление срока службы временного объекта через справочник на концентрацию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

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