[c++] Structured bindings

In C++, structured bindings provide a convenient way to decompose tuples, pairs, and other structured data types into their individual components. This feature was introduced in C++17 and aims to simplify the extraction of multiple values from a single object.

What are Structured Bindings?

Structured bindings make it easier to work with complex data types by enabling the simultaneous declaration and initialization of multiple variables. This can be particularly useful when working with containers or custom data structures. Instead of individually accessing each element, structured bindings allow you to unpack the components directly into local variables.

Basic Syntax

In the basic form, structured bindings are declared using the auto keyword and the tie syntax, like this:

auto [x, y, z] = someFunctionReturningTuple(); 

Here, x, y, and z will be initialized with the values extracted from the returned tuple.

Benefits of Structured Bindings

Drawbacks and Considerations


Consider a simple example where a function returns a tuple, and structured bindings are used to unpack the elements:

#include <tuple>
#include <iostream>

std::tuple<int, std::string, double> getData() {
    return std::make_tuple(42, "Hello", 3.14);

int main() {
    auto [num, message, value] = getData();
    std::cout << "Number: " << num << std::endl;
    std::cout << "Message: " << message << std::endl;
    std::cout << "Value: " << value << std::endl;
    return 0;


Structured bindings in C++ provide a powerful mechanism for simplifying the extraction of structured data types. By enabling concise and expressive syntax, they contribute to improved code readability and maintenance. However, it’s essential to consider potential name collisions and type inference issues when using this feature.

For more details, please refer to the C++ documentation on structured bindings.

내부 링크에서 외부 링크로 이동하여 공식 C++ 문서를 참조하실 수 있습니다.