模板类,其模板方法专门化为自身

Template class with template method specialized for itself

本文关键字:专门化 模板方法      更新时间:2023-10-16

假设我有一个模板类和模板函数。例子:

template<typename T>
class example
{
    T some_member;
    template<typename X>
    example& foo(X& val)
    {
        /* general stuff */
        return *this;
    }
    // rest of class
};

我未能实现的是对该方法进行专门化,该方法以类型示例(与呼叫者的类型相同)。一个小例子来说明它是如何工作的:

example<int> exampleObj;
example<int> sameTypeObj;
int diffrentType1;
example<double> diffrentType2;
exampleObj.foo(diffrentType1); // general template used
exampleObj.foo(diffrentType2); // general template used
exampleObj.foo(sameTypeObj); // specialization used

可以重载,但不能专门化,因为没有局部模板函数专门化。

example& foo(example&)
{
}