声明参数时出错:模板类型参数的模板参数必须是类型;你忘记了' typename&#39 ;?

时间:2018-01-09 01:46:15

标签: c++ templates

我一直在尝试让这段代码正常工作,但我一直在收到错误

  

模板类型参数的模板参数必须是一个类型;你忘了' typename'?

template <typename T>
class Templated_Class {


  std::unique_ptr<
      folly::NotificationQueue<T>::Consumer,
      folly::DelayedDestruction::Destructor>
      xyz;
};

根据我的阅读Hue-6144如果成员模板专业化的名称出现在。, - &gt;或::运算符之后,并且该名称具有明确限定的模板参数,则为成员添加前缀模板名称和关键字模板。

我试图遵循这个建议,但这个错误并没有消失。 我究竟做错了什么 ?请注意,我是现代c ++的新手,c ++的学习曲线并不是最容易解决的问题。

1 个答案:

答案 0 :(得分:0)

如果没有完整的代码,就无法做出明确的答案,但是,看看你所期望的改变:

folly::NotificationQueue<T>::Consumer,

为:

typename folly::template NotificationQueue<T>::Consumer,

是你想要开始寻找的地方。 typename folly :: DelayedDestruction :: Destructor&gt;