According to the current standard draft, the effect of pair& operator=(pair&& p) should be:"Assigns to first with std::forward<first_type>(p.first) and to second withstd::forward<second_type>(p.second)."What it actually does is:this->first = _STD move(_Right.first);this->second = _STD move(_Right.second);See reproduction below, why may silently break older, existing code.
Visual Studio/Team Foundation Server/.NET Framework Tooling version
Steps to reproduce
Operating System Language