模板的正确语法

correct syntax for template

本文关键字:语法      更新时间:2023-10-16
template <typename _Type, typename _Comparator=less<typename _Type::value_type> >
class Myclass
// and then comes the rest of my class

我想用字符串创建一个专门的模板(但也要使用默认比较器以外的其他比较器(我试过这个,但它不是编译的。

template <typename _Comparator=less<typename _Type::value_type> >
class Myclass<string>

我知道下一个例子有效,但它使用了我修复的默认比较器。

template <>
class Myclass<string>

不允许在类模板专用化中指定默认模板参数。使用以下语法来实现您想要的:

template <typename Comparator>
class Myclass<string, Comparator>
{
    // ...
};

您可以创建另一个默认模板参数:

template<class Comparator = other_functor>
class Myclass<string, Comparator> {
};

在声明专用化时删除=less<typename _Type::value_type>