【发布时间】:2017-10-16 07:02:55
【问题描述】:
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 , i2] = 元组;
#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)。
标签: c++ c++17 auto structured-bindings