В С++ 17 мы можем делать что-то вроде
std::pair p = {1,3}; // compiler deduces template parameters to pair<int,int>
Из документации в cppreference Я понимаю, что следующее НЕ будет работать:
template<class T1, class T2>
void bar(std::pair<T1,T2>)
{}
void foo()
{
bar({1,3}); // No deduction of pair template arguments
}
Может ли кто-нибудь подтвердить это и дать некоторое представление, почему это не сработает? Технически это должно работать, не так ли? Проводилось ли какое-либо обсуждение этой работы, или это какая-то надзор?