C++ 17에서 추가된 기능으로 구조적 바인딩이란 개념이 추가됐다고 한다.
이것을 이용하면 여러개의 변수를 선언 할 때 배열, 구조체, 페어 혹은 튜플의 값으로 초기화 할 수 있다고 한다.
적용 방법은 auto 키워드와 [ ] 대괄호 사이에 변수명을 적고 오른쪽에 값을 넣어주면 된다.
array<int, 3> value = {1, 2, 3};
auto [x, y, z] = value;
다만 유의할 점은 무조건 auto 키워드를 사용해야 한다는 것과 왼쪽에 선언한 변수의 개수와 오른쪽에 표현식의 값 개수가 일치해야 한다는 것이다.
구조적 바인딩은 배열 뿐 아니라 모든 멤버가 non-static 이면서 public으로 선언된 데이터 구조라면 어떤 것도 적용 할 수 있다고 한다. (예를 들면 struct, pair, tuple)
struct에 구조적 바인딩을 사용한 예시
struct Point {
double a, b;
int c;
};
int main() {
Point p = {1, 2, 3};
auto [x, y, z] = p;
}
pair과 tuple은 내가 더 공부해보고 추후 더 자세히 적어보는 것으로 하겠다.