template<typename T1, typename T2>
class Bimap {
public:
class Data {
private:
template<typename T> Data& set(T);
template<> Data& set<T1>(typename T1 v) { /*...*/ }
};
};
这给了我错误:
error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'
我明白错误的意思。但为什么我不能这样做呢?我该如何解决它?
忘记模板的一种方法是重载:
Data& set(T1 v) { /*...*/ }
但这是我有时会使用的一个技巧
您可以在类中专门化类模板:
class {
template<typename T>
struct function_ {
static void apply(T);
};
template<>
struct function_<int> {
...
};
template<typename T>
void function(T t) { return function_<T>::apply(t); }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)