为什么结构化绑定不支持可变数组?
Why do structured bindings not support variadics?
C++17 添加了结构化绑定:
tuple<int, int, int> make_tuple();
int test() {
auto [a, b, c] = make_tuple();
return a | b | c;
}
我的直接直觉是尝试将它们用作参数包。
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);
}
唉,我做不到。为什么委员会排除了这种功能?现在感觉不一致,lambda 捕获可以包含参数包。
我知道委员会里到处都是聪明的创意人士,像我这样的想法一定是有充分理由提出并被拒绝的。这是什么原因?
发展中语言的本质是随着时间的推移而添加的功能。
仅仅因为某些内容还没有语言,并不意味着委员会已经彻底拒绝了它。这并不意味着他们"排除"了它。可能只是它被忽视了,或者只是还没有被认真考虑过。请记住,std::make_unique
直到 C++14 才可用。
在这种特殊情况下,它是最近提出的功能,称为P1061。你会从修订历史部分注意到,委员会"对它进行了积极的审查,并认为这是我们这个时代的一项很好的投资"。所以我想你很幸运。:)
相关文章:
- 具有随机数的二维数组不会更改
- C++ - 块不移动,我的数组不起作用
- 0 的 2D 数组 不相关循环的破坏逻辑 - C++
- 为什么数组不打印第一个元素?
- C++字符数组不接受超过 4 个字符的输入
- 如何从字符数组(不是字符串数组)中删除符号
- C++指针数组不会接受更多值
- 字符数组不起作用:C++
- 数组不保存初始化值
- Arduino 数组不命名类型
- 在 Qt 中解析嵌套的 JSON 时出现意外结果(数组不存在)
- 数组不会存储超出第一个空间的范围
- 为什么具有单独字符的字符数组不像字符串文字那样以 null 终止符结尾?
- 如果 2D 数组不是双指针,那么为什么会发生这种情况?
- 我的 c++ 程序中的字符数组不会打印任何内容
- 循环中的矢量到数组不起作用
- 由于某种原因,多维数组不会从函数中更改元素
- 如何以递归方式反转任何数组?(不使用C++标准库)
- Cuda 写入设备上的数组不会更改值
- 标准::矢量数组不起作用