模板模板参数的模板专业化

时间:2014-12-21 15:15:02

标签: c++ templates c++11

我在.h文件中创建了一个带有模板模板参数的模板类:

template<typename Index=Date, typename Value=double, template<typename> 
class Container=std::vector> class FastDataSeries 

然后我尝试在.cpp文件中专门化它,以便在其他文件中使用C ++ 11“extern模板”功能,

    template<> class FastDataSeries <Date, double, std::vector >;
    template<> class FastDataSeries <int, double, std::vector >;

然后我收到如下错误消息:

  

../ src / timeseries / FastDataSeries.cpp:13:61:错误:类型/值不匹配   在模板参数列表中的参数3,用于'模板类Container&gt;类   MarketRisk :: FastDataSeries的模板&lt;&gt; class FastDataSeries;                                                                ^ ../src/timeseries/FastDataSeries.cpp:13:61:错误:预期a   得到了'模板类容器'类型的模板   'template class std :: vector'   ../src/timeseries/FastDataSeries.cpp:14:60:错误:类型/值不匹配   在模板参数列表中的参数3,用于'模板类Container&gt;类   MarketRisk :: FastDataSeries的模板&lt;&gt; class FastDataSeries;                                                               ^ ../src/timeseries/FastDataSeries.cpp:14:60:错误:预期a   得到了'模板类容器'类型的模板   'template class std :: vector'make:***   [src / timeseries / FastDataSeries.o]错误1

这样做的正确语法是什么?

1 个答案:

答案 0 :(得分:3)

template<typename>

这与std :: vector的模板不匹配。您必须提供所有模板参数。

template<class T, class Allocator = std::allocator<T> class Container