【问题标题】:Inner template class as template template parameter内部模板类作为模板模板参数
【发布时间】:2018-08-26 02:13:13
【问题描述】:

我有一个接受模板模板参数的类:

template <template <typename> class F>
class A {};

还有另一个带有内部模板类的模板类:

template <typename T>
class B {
  public:
    template <typename U>
    class C {};
};

我希望能够在模板化上下文中使用C 作为A 的模板模板参数:

template <typename T>
using D = A<B<T>::C>;

但是,这会导致错误消息:

"模板参数的模板参数必须是类模板或类型别名模板"

我假设我在D 的声明中遗漏了typenametemplate 的一些魔法咒语,但我终其一生都无法弄清楚,而且错误消息并不是特别有用。

【问题讨论】:

    标签: c++ templates template-templates


    【解决方案1】:

    报错提示B&lt;T&gt;::C不是模板,因此与A的模板模板参数不匹配。

    您需要使用template 关键字告诉编译器dependent name B&lt;T&gt;::C(取决于模板参数T模板。

    template <typename T>
    using D = A<B<T>::template C>;
    //                ~~~~~~~~
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多