С++ 17 поддерживает
template argument deduction for class templates
.См. www.open-std.org/ jtc1/sc22/wg21/docs/papers/2016/p0091r3.html для получения подробной справочной информации.
Однако приведенный ниже код не работает должным образом;
#include <utility>
template<typename T>
struct A
{
T x;
};
int main()
{
auto p = std::pair{ 1, 2 }; // ok, as expected.
auto a = A{ 0 };
//
// error : no viable constructor or deduction guide
// for deduction of template arguments of 'A'
//
}
Мой компилятор clang 5.0 с -std=c++1z
.
Почему template argument deduction for class templates
не работает с простой структурой?