LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Фича, std::make_pair сделано для того, чтоб автоматически определять тип результирующего std::pair (посредством template type deduction).

std::make_pair использует так называемую universal (aka forwarding) reference: T&&. Такая ссылка «схлопывается» по особым правилам: https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers

Специализируя std::make_pair ты нарушаешь его семантику. Т.е. вместо forwarding reference твоя специализация принимает rvalue reference.

Исходная версия KennyMinigun, :

Фича, std::make_pair сделано для того, чтоб автоматически определять тип результирующего std::pair (посредством template type deduction).

std::make_pair использует так называемую universal (aka forwarding) reference: T&&. Такая ссылка «схлопывается» по особым правилам: https://blog.petrzemek.net/2016/09/17/universal-vs-forwarding-references-in-cpp/