【发布时间】:2021-08-05 03:11:46
【问题描述】:
以下来自an authoritative C++ proposal:
template<class... TYPES>
constexpr void tuple<TYPES...>::swap(tuple& other)
{
for...(constexpr size_t N : view::iota(0uz, sizeof...(TYPES)))
{
swap(get<N>(*this), get<N>(other));
}
}
但是,我无法以相同的方式编译以下代码:
#include <iostream>
#include <vector>
template<typename... Args>
void f(Args&&... args)
{
for...(auto n : args) // error: expected '(' before '...' token
{
std::cout << n << std::endl;
}
}
int main()
{
auto v = std::vector{1, 2, 3};
f(v, v, v);
}
见:https://godbolt.org/z/dEKsoqq8s
为什么折叠表达式不适用于 for 循环?
【问题讨论】:
标签: c++ syntax compiler-errors c++17 fold-expression