函数级别的部分模板类专用化
Partial template class specialization at function level
可能的重复项:
具有多个模板参数错误的模板部分专用化
是否可以将 e 模板类专门化为功能级别?
我会给你和我想要实现的目标的例子,但我得到编译错误:
template<typename T1, typename T2>
class C
{
public:
void f();
};
template<typename T1, typename T2>
void C<T1, T2>::f()
{
}
template<typename T1, int>
void C<T1, int>::f()
{
}
错误:
template argument list following class template name must list parameters in the order used in template parameter list
'void C<T1,T2>::f(void)' : function template has already been defined
'C<T1,T2>': template parameter 'T2' is incompatible with the declaration
如果你想使C::f
的行为依赖于T2
你可以尝试将其实现放到一个单独的类中,如下所示:
template <typename T>
class C_aux
{
public:
void f() {}
};
template <>
class C_aux<int>
{
void f() {}
};
template <typename T1, typename T2>
class C
{
public:
void f();
};
template <typename T1, typename T2>
void C<T1, T2>::f()
{
C_aux<T2>::f();
}
根据您的需求细节,C_aux::f
必须采用额外的参数。或者你可以让class C
继承class C_aux
,反之亦然。
相关文章:
- 字符串化递归的"std::vector<std::vector<...>>"而不使用部分模板函数专用化
- 具有常量引用参数的函数模板专用化
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- C++模板专用化 - 无法匹配函数定义
- 具有专用化的模板类中的可靠条件复制和移动构造函数
- 如何使专用函数模板成为某个类的朋友?
- 如何按类型为元组元素创建专用函数
- 无法访问专用函数
- 使用指向部分专用函数成员的指针自动填充向量
- 64 位 G++ 4.6.3 不会在专用函数模板中将长整型视为长整型,即使它们的大小相同。这是一个错误吗?
- 操作员过载的专用函数
- C++调用模板专用函数
- 模板类中专用函数的声明
- 使用专用函数对异构集合的 STL 算法
- C++专用函数-不在此范围内错误
- 为什么我不能专用函数模板?
- 用于专用函数参数的模板
- 代码重复和模板专用化(当专用函数具有不同的返回类型时)
- 具有专用函数的Pull-Apart函数类型
- 专用函数模板