Structured bindings已经与C++ 17一起引入。它们可以声明从元组或结构初始化的多个变量。为什么结构化绑定只能与自动运行
该代码使用c++17
编译器进行编译。
#include <iostream>
#include <tuple>
int main() {
auto tuple = std::make_tuple(1.0, 1);
auto [ d, i ] = tuple;
std::cout << "d=" << d << " i=" << i << '\n';
return 0;
}
如果我不auto
声明变量出现错误
错误:lambda表达式的预期身体 [D2,12] =元组;
#include <iostream>
#include <tuple>
int main() {
auto tuple = std::make_tuple(1.0, 2);
double d2;
int i2;
[d2 , i2] = tuple;
return 0;
}
我用clang version 4.0.0
和编译选项-std=c++1z
。
我可以将现有变量分配给结构化绑定吗?我需要使用auto
吗?
结构化绑定只有在定义和初始化变量时才可能。这是不可能的作为一般的任务(用于['std :: tie'](http://en.cppreference.com/w/cpp/utility/tuple/tie))。 –