我有一些类型演绎指南问题与一个简单的类模板,这是实例化的问题在主要函数范围内,但未能做到在另一个类。
下面是一个例子:
template<class T>
struct X
{
X(T&)
{
}
};
struct User
{
X x{1}; // error: invalid use of template-name 'X' without an argument list
};
int main()
{
int i;
auto x = X(i); // OK
(void)x;
}
我有点纳闷,为什么会这样,怎么才能解决。有什么想法吗?
Clangd给出了一个更有意义的错误消息,这可能会让你(或我,或其他人)更容易地在web上搜索答案,
Use of class template 'X' requires template arguments;
argument deduction not allowed in non-static struct member
而这其中的原因在这里解释得很好。