gpt4 book ai didi

c++ - cpp 模板特化,错误说参数 1 的类型是 T,这取决于参数 T

转载 作者:行者123 更新时间:2023-11-28 04:04:29 25 4
gpt4 key购买 nike

line 1; template <class T, T t> struct C {}; // primary template
line 2: template <class T> struct C<T, 1>; // error: type of the argument 1 is
// which depends on the parameter T

我的理解是主模板接受两个相同类型的模板参数。但是在第2行中,一个参数是未知的,第二个是int(1),所以这两个参数在某些情况下不能是同一类型。

但是根据 https://en.cppreference.com/w/cpp/language/partial_specialization 显示的错误消息是“depend one...”

我应该如何理解这个案例?

另一个问题是

template <class T, T t>
template <class T, T>

这两者在行为或其他方面有什么不同吗

谢谢你的帮助

最佳答案

根据 C++ 17 标准(17.5.5 类模板部分特化)

8 Within the argument list of a class template partial specialization, the following restrictions apply:

(8.1) — The type of a template parameter corresponding to a specialized non-type argument shall not be dependent on a parameter of the specialization

至于这两个模板参数列表

template <class T, T t>
template <class T, T>

那么唯一的区别就是没有指定第二种情况下非类型模板参数的标识。所以在模板定义中你不能引用它。

关于c++ - cpp 模板特化,错误说参数 1 的类型是 T,这取决于参数 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com