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 , i2] = tuple;
#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
吗?