我觉得我已经尝试了所有可能的语法排列,但是我无法编译以下代码,即使我想要实现的是非常简单的:我想要模板类如果类以某种方式专门化,则表现出不同的方法。我认为这个片段是不言自明的:
#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的模板特化的众多问题,这帮助我做到了这一点。在这一点上,我觉得应该编译,并且不知道正确的语法是什么。