【发布时间】:2019-12-31 02:20:59
【问题描述】:
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 捕获可以包含参数包,感觉不一致。
我知道委员会里到处都是聪明的创意人,像我这样的想法一定是有充分理由被拒绝的。这是什么原因?
【问题讨论】:
-
不相关:但是在这种情况下说“我知道委员会里到处都是聪明的创意人”听起来你的意思正好相反。
-
假设他们有这个想法不是你应该做的假设。东西总是被遗漏。您应该加入标准提案组并提出您的想法。
-
我的意思不是相反,而且我做出这个假设的绝大多数时间证明我是对的。 2020 年也快乐。
标签: c++ templates c++17 variadic-templates