为什么结构化绑定不支持变量?

问题描述 投票:3回答:1

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捕获可以包含参数包了。

我知道委员会中充满了聪明的创造力,而且像我这样的想法肯定已经提出并被拒绝是有充分理由的。那是什么原因?

c++ templates c++17 variadic-templates
1个回答
0
投票

随着时间的推移,功能的增加是一种开发语言的本质。

仅仅因为某种语言还没有,这并不意味着委员会已经完全拒绝了它。这并不意味着他们“排除”了它。可能只是它被忽略了,或者还没有被认真考虑过。请记住,std::make_unique在C ++ 14之前不可用。

在这种情况下,最近才提出了[[]]作为P1061的功能。您将从修订历史记录部分中注意到,委员会“对其进行了好评,并认为这是对我们时代的一项很好的投资”。所以我想你很幸运。 :)

© www.soinside.com 2019 - 2024. All rights reserved.