tuple::operator=

tuple& operator=(const tuple& right);
    template <class... Types2>
        tuple& operator=(const tuple<Types2...>& right);
    template <class U1, class U2>
        tuple& operator=(const pair<U1, U2>& right);

    tuple& operator=(tuple&& right);
    template <class... Types2>
        tuple& operator=(tuple<Types2...>&& right);
    template <class U1, class U2>
        tuple& operator=(pair<U1, U2>&& right);

The first two member operators assign the elements of right to the corresponding elements of *this. The third member operator assigns right.first to the element at index 0 of *this and right.second to the element at index 1. All three member operators return *this.