所有模板类定义都在头文件中。
template <typename X> class A {
public:
template <typename Option> Option get_option(error& error) const;
};
template<> template<> Option1 A<Class1>::get_option<Option1>(error& error) const{ return something ...}
template<> template<> Option2 A<Class1>::get_option<Option2>(error& error) const{ return something ...}
template<> template<> Option3 A<Class1>::get_option<Option3>(error& error) const{ return something ...}
没有编译错误。但是,在链接期间
在功能&#39;
的引用Option1 A<Class1>::get_option<Option1>(error&)
&#39;: 未定义对&#39;Option1 A<Class1>::get_option<Option1>(error&)
&#39;
依此类推,所有基于ClassN,OptionM组合的完全专业化。