如何专门化模板类成员函数?

时间:2016-05-22 19:14:32

标签: c++ templates traits template-specialization specialization

考虑以下示例:

    template <class T, class U>
class Test {
public:
    void f(){std::cout<<"f() not specized"<<std::endl;}
    void g(){std::cout<<"g() not specized"<<std::endl;}
    void h(){std::cout<<"h() not specized"<<std::endl;}

    //void g<long, double>(){}
};

这里我对注释代码有错误。 我想实现预期结果的唯一方法是将整个班级空间化。但是在下面提到的类中,我不能使用原始类的默认行为(例如f(f()和h()函数)。

template <>
class Test<long, double> {
public:
    void f(){std::cout<<"f() specized long, double"<<std::endl;}
};

那么有没有办法在原始类中对函数进行空间化?

1 个答案:

答案 0 :(得分:8)

当然,你可以do it with a definition

<% hash = Hash.new(0) %>
<% sailing.primary_language.each { |language| hash[language] += 1 } %>
<%= debug hash %> # Example output, English: 2 French: 3 German:1
<%= hash.max_by{ |k,v| v}[0] %> # Example output, French