Код: Выделить всё
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
}
Приведенный выше пример, однако, вызвал конструктор копирования Gizmo на arg < /code>, когда frobnicate < /code> был false < /code>.
мне удалось избежать Вызов конструктора копирования путем изменения frobnicate (arg) на static_cast (frobnicate (arg)) .
my Вопрос становится: как тройной оператор взаимодействует с правилом о обязательном переводе с локальной ссылкой на временный? Мое решение законно и хорошо себя ведет?
Подробнее здесь: https://stackoverflow.com/questions/286 ... -reference