复合模板

时间:2018-05-10 09:53:53

标签: c++ templates template-templates

我试图制作"复合"模板类型。像这样的东西

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
                        ^

为什么这不起作用?是否有可能使其有效?

1 个答案:

答案 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