c++ default template arguments may not be used in partial specializations

这个错误信息是因为在 C++ 中,模板的默认参数只能在主模板中使用,而不能在部分特化中使用。

举个例子,如果你定义了一个带有默认模板参数的主模板:

template<typename T, typename U = int>
class MyClass {
   // ...

那么你不能在这个主模板的部分特化中再次使用默认参数,否则会出现上述错误:

template<typename T>
class MyClass<T, double> {  // 错误:不能在部分特化中使用默认参数
   // ...

为了解决这个问题,你需要在部分特化中显式地提供所有的模板参数,例如:

template<typename T>
class MyClass<T, double> {
   // 显式提供所有模板参数
   // ...

总之,如果你遇到了这个错误,就要检查一下你的模板定义是否在部分特化中使用了默认模板参数。如果有的话,就需要在部分特化中显式地提供所有模板参数。

  • Choice_
    5年前
  •