如何使用类模板完全专门化功能模板?

时间:2012-05-17 13:54:27

标签: c++ template-specialization explicit-specialization

template <typename T>
void foo(T t)
{
   ... // do stuff with type T
}

template <typename T>
class class_template
{
    // class body
};

template<>                       // failed attempt at full specialization
void foo(class_template<T> t)    // which doesn't work of course
{
    //full specialization for all classes of class_template
} 

在上面的代码中,我如何使用类模板明确地专门化函数foo?

1 个答案:

答案 0 :(得分:1)

  

在上面的代码中,我如何使用类模板明确地专门化函数foo?

你做不到。这是部分专业化的重点。但它们并不适用于功能。

您有两种解决方案:

  • 重载功能。这通常有效。
  • 将工作引用到类模板,可以部分专业化。也就是说,在函数内部,调用类模板中的(静态)函数,并专门化