我在.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
这样做的正确语法是什么?
答案 0 :(得分:3)
template<typename>
这与std :: vector的模板不匹配。您必须提供所有模板参数。
template<class T, class Allocator = std::allocator<T> class Container