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);
}
A,我不能这样做。委员会为什么要排除这种功能?现在感觉到lambda捕获可以包含参数包了。
我知道委员会中充满了聪明的创造力,而且像我这样的想法肯定已经提出并被有充分的理由拒绝了。那是什么原因
随着时间的流逝,功能的发展是语言的本质。
仅仅因为某种语言还没有使用某种语言,并不意味着委员会已经完全拒绝了它。这并不意味着他们“排除”了它。可能只是它被忽略了,或者还没有被认真考虑过。请记住,std::make_unique
直到C ++ 14才可用。
在这种特殊情况下,它是一个功能已经被提出,最近,作为P1061。您将从修订历史记录部分中注意到,该委员会“对其进行了好评,并认为这是对我们时代的一项很好的投资”。所以我想你很幸运。:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句