Это есть ли способ избежать копирования строки при оценке первой ветки?
Код: Выделить всё
bool f(const std::vector& vec, const std::string& s) {
const std::string& s2 = !s.empty() && s[0] == '{' ? s : '{' + s + '}';
for (const std::string& v : vec) {
if (v == s2)
return true;
}
return false;
}
Похоже, я слишком конкретно сформулировал вопрос. Я хотел, чтобы код со строками был просто примером. Вопрос, который я имел в виду, более общий. Если вам нужна потенциально дорогостоящая модификация большого объекта, но при выполнении условия вы можете использовать объект как есть, есть ли способ привязать исходный объект или результат вычисления к ссылке, не копируя исходный объект, если вычисление не требуется?
Подробнее здесь: https://stackoverflow.com/questions/790 ... y-operator