Код: Выделить всё
struct Point {
int x, y, z;
};
auto sum(Point p) -> int {
int result = 0;
template for (int c : p)
result += c;
return result;
}
Для цели поиска и инстанции for-range-declaration и составного создания expansion-statement . /> < /blockquote>
Что если бы я включил структурированные пакеты связывания, которые должны быть объявлены внутри составления составления < /em>. < /p>
Если тело расширения рассматривается как определение шаблона, это означает, что любой объект определяется в носовано, что изнаносилось, что в носовано, впервые завязываемое, в носовано, что в носовано. Поэтому добавлено:
объект шаблон, если это объект, определенная или созданная в рамках for-range-declaration или составления состава , если это будет связано, что это будет связано, так, если это будет связано, так, что будет связано, что это будет связано, так, что будет связано, так, что будет связано, что будет связано, что будет связано, что это будет связано, так, что будет связано, что будет связано, так, как будет связано, так, как будет связано, что это будет связано, так, как будет связано, что это будет связано, так и будет, так как это будет (Поскольку упаковка может быть объявлена только шаблонной сущностью)? < /p>
auto sum(Point p) -> int {
template for (auto _ : {0}) {
auto [...parts] = p;
return (... + parts);
}
// proposed P3525: Explicit Template Regions
// template {
// auto [...parts] = p;
// return (... + parts);
// }
}
< /code>
Я знаю, что многие люди, включая меня, предпочли бы первый пример, так как он более элегантный и читаемый, чем второй, который хакерский. Но я спрашиваю здесь только о достоверности этой программы.
Я что -то здесь пропустил?
Подробнее здесь: https://stackoverflow.com/questions/796 ... e-template