Исправление 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/