【发布时间】:2013-02-07 17:48:39
【问题描述】:
以下类模板Sequencer 包含一个嵌套类模板Process,带有两个模板参数。
template<typename P>
struct Sequencer
{
template<typename A , bool = A::CAN_BE_BUFFERED>
struct Process;
};
我想将Sequencer 专门用于自定义struct Foo,同时专门用于自己的Process 版本以仅支持一个模板参数,如下所示
template<>
struct Sequencer<Bar>
{
template<typename A>
struct Process;
};
由于实施时间过长,我已将整个清单发布在ideone。
在 GCC 4.5.3 上,我收到以下错误消息
prog.cpp:60:24: error: partial specialization ‘Sequencer<Bar>::Process<A>’ does not specialize any template arguments
在 Visual Studio 2008 上出现以下错误
prog.cpp(62) : error C2753: 'Sequencer<Bar>::Process<A>' : partial specialization cannot match argument list for primary template
【问题讨论】:
标签: c++ templates inner-classes template-specialization