Structured bindings은 C++ 17로 도입되었습니다. 튜플이나 구조체에서 초기화 된 여러 변수를 선언 할 수있는 기능을 제공합니다.구조화 된 바인딩이 자동으로 작동하는 이유
이 코드는 c++17
컴파일러를 사용하여 컴파일됩니다. I는 auto
와 변수를 선언하지 않으면
#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;
}
I 오류를 얻을
오류 : 람다 식 예상 본체 [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'] (http://en.cppreference.com/w/cpp/utility/tuple/tie)를 사용하여)으로는 불가능합니다. –