我试图制作"复合"模板类型。像这样的东西
template <typename A, typename T>
class configurator
{
public:
configurator(const A<T> & adapter) : m_adapter(adapter) {}
private:
A<T> m_adapter;
};
编译器抱怨
error: expected ')'
configurator(const A<T> & adapter
^
为什么这不起作用?是否有可能使其有效?
答案 0 :(得分:5)
A
被声明为type template parameter;您不能将其用作模板名称并为其指定模板参数。
你想要template template parameter。 e.g。
template <template <typename> typename A, typename T>
class configurator
BTW如果A
应该使用多个模板参数,您可以使用template parameter pack指定A
:
template <template <typename...> typename A, typename T>
class configurator