Стандарт сообщает, как будет выполняться этот код?
Примечание: во время компиляции невозможно определить, какое значение условия оценивается ниже.
Будет ли сгенерированный код иметьдва пути?Один, где v свернут до r-значения, когда условие истинно, и другой, где v будет l-значением, когда условие ложно.
Или это будет наихудший случай, и v сворачивается в l-значение для обоихслучаи?
Или это просто определяется реализацией?
struct SomeClass { std::vector<std::string> vec_member_; };
void f(const SomeClass& d, bool condition) {
auto&& v = (condition) ?
std::vector<std::string>{ "fallback case" }
: d.vec_member_;
for(auto&& e : v) {
... // operate on e (Read only)
}
}
Извините за форматирование.Я использую Android для редактирования и не могу исправить раздел кода после редактирования.