模板类方法的部分特化

时间:2015-07-27 17:49:26

标签: c++ templates c++11

我觉得我已经尝试了所有可能的语法排列,但是我无法编译以下代码,即使我想要实现的是非常简单的:我想要模板类如果类以某种方式专门化,则表现出不同的方法。我认为这个片段是不言自明的:

#include <iostream>

template<class F, class T = void>
struct A {
   void foo();
};

template<class F, class T>
void A<F,T>::foo()
{
   std::cout << "two\n";
}

template<class F>
void A<F,void>::foo()
{
   std::cout << "one\n";
}

int main() {
   int tmp = 0;
   A<double, double> a;
   a.foo();
   A<int> b;
   b.foo();

   return 0;
}

我已经仔细研究了有关stackoverflow的模板特化的众多问题,这帮助我做到了这一点。在这一点上,我觉得应该编译,并且不知道正确的语法是什么。

0 个答案:

没有答案