C++ 没有类型,结构绑定就不能工作?

C++ 没有类型,结构绑定就不能工作?,c++,binding,c++17,C++,Binding,C++17,我试着做这样的事情 pair<int, int> f() { return {1, 2}; } int a, b; [a, b] = f(); 并获取编译错误。所有错误归结为编译器认为它是语法错误的lambda。所以,如果我使用结构化绑定,我应该总是编写auto?是的,这就是工作原理。它引入了新的标识符,因此它们不能是现有的变量。所以当使用它时,你必须使用自动,例如 如果要使用现有变量,可以使用: 请注意,所有标识符都必须是新的,因此不能混合和匹配这两种方法。e、 g.不

我试着做这样的事情

pair<int, int> f() {
    return {1, 2};
}

int a, b;
[a, b] = f();
并获取编译错误。所有错误归结为编译器认为它是语法错误的lambda。所以,如果我使用结构化绑定,我应该总是编写auto?

是的,这就是工作原理。它引入了新的标识符,因此它们不能是现有的变量。所以当使用它时,你必须使用自动,例如

如果要使用现有变量,可以使用:

请注意,所有标识符都必须是新的,因此不能混合和匹配这两种方法。e、 g.不能将结构化绑定与单个已存在的变量一起使用

auto [a, b] = f();   // can also be auto&, auto const, etc
int a, b;
std::tie(a, b) = f();