Fil*_*ipp 5 c++ templates variadic-templates c++17
C++17 添加了结构化绑定:
tuple<int, int, int> make_tuple();
int test() {
auto [a, b, c] = make_tuple();
return a | b | c;
}
Run Code Online (Sandbox Code Playgroud)
我的直觉是尝试将它们用作参数包。
template <size_t N>
auto make_tuple(); // returns tuple with N ints
template <size_t N>
int test() {
auto [...values] = make_tuple<N>();
return (0 | ... | values);
}
Run Code Online (Sandbox Code Playgroud)
唉,我不能这样做。为什么委员会排除了这样的功能?现在感觉不一致,因为 lambda 捕获可以包含参数包。
我知道委员会充满了聪明的创意人士,像我这样的想法一定有充分的理由被拒绝。那是什么原因?