C ++ 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'
//
}
我的编译器铛5.0 -std=c++1z
。
为什么template argument deduction for class templates
不是一个普通结构的工作?