正确的模板语法

时间:2014-04-26 21:01:31

标签: c++ templates syntax

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>

3 个答案:

答案 0 :(得分:1)

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

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

};

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

宣布专业化时删除=less<typename _Type::value_type>