##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::tie

From cppreference.com
< cpp‎ | utility‎ | tuple

Defined in header `<tuple>` |  |
template< class... Types > tuple<Types&...> tie( Types&... args ); |  | (since C++11) (until C++14)
template< class... Types > constexpr tuple<Types&...> tie( Types&... args ); |  | (since C++14)

Creates a tuple of lvalue references to its arguments or instances of std::ignore.

### [edit] Parameters

args | - | zero or more lvalue arguments to construct the tuple from

### [edit] Return value

A std::tuple object containing lvalue references.

### [edit] Exceptions

`noexcept` specification:
noexcept

### [edit] Notes

`std::tie` may be used to unpack a std::pair because std::tuple has a converting assignment from pairs:

    bool result;
    std::tie(std::ignore, result) = set.insert(value);

### [edit] Example

`std::tie` can be used to introduce lexicographical comparison to a struct or to unpack a tuple:

Run this code

    #include <iostream>
    #include <string>
    #include <set>
    #include <tuple>

    struct S {
        int n;
        std::string s;
        float d;
        bool operator<(const S& rhs) const
        {
            // compares n to rhs.n,
            // then s to rhs.s,
            // then d to rhs.d
            return std::tie(n, s, d) < std::tie(rhs.n, rhs.s, rhs.d);
        }
    };

    int main()
    {
        std::set<S> set_of_s; // S is LessThanComparable

        S value{42, "Test", 3.14};
        std::set<S>::iterator iter;
        bool inserted;

        // unpacks the return value of insert into iter and inserted
        std::tie(iter, inserted) = set_of_s.insert(value);

        if (inserted)
            std::cout << "Value was inserted successfully\n";
    }

Output:

    Value was inserted successfully

make_tuple | creates a `tuple` object of the type defined by the argument types (function template) [edit]
forward_as_tuple | creates a `tuple` of rvalue references (function template) [edit]
tuple_cat | creates a `tuple` by concatenating any number of tuples (function template) [edit]
ignore | placeholder to skip an element when unpacking a `tuple` using `tie` (constant) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/utility/tuple/tie&oldid=91686"
Category:

- unconditionally noexcept

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template