提问者:小点点

另一个类范围内的类模板参数类型推导[重复]


我有一些类型演绎指南问题与一个简单的类模板,这是实例化的问题在主要函数范围内,但未能做到在另一个类。

下面是一个例子:

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;
}

我有点纳闷,为什么会这样,怎么才能解决。有什么想法吗?


共1个答案

匿名用户

Clangd给出了一个更有意义的错误消息,这可能会让你(或我,或其他人)更容易地在web上搜索答案,

Use of class template 'X' requires template arguments;
argument deduction not allowed in non-static struct member

而这其中的原因在这里解释得很好。