关于模板的模板参数问题

simonlx 2018-08-18 06:30:01
template <typename T>
class role
{
using ptr = std::shared_ptr<role>;
};


class npc : public role<npc>
{

};


template <typename T, template <typename> class PTR = role<T>::template ptr>
PTR<T> foo( int id )
{
return nullptr;
}


这个foo想返回给:
role<npc>::ptr npc_ptr = foo<npc>( 1 );
这样问题在哪里?
...全文
145 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjzzmdn 2018-08-21
  • 打赏
  • 举报
回复
template <typename T>
class role
{
public:
using ptr = std::shared_ptr<role>;
};


class npc : public role<npc>
{

};


template <typename T, class PTR = role<T>::ptr>
PTR foo(int id)
{
return nullptr;
}
int main() {
role<npc>::ptr npc_ptr = foo<npc>(1);
return 0;
}

这样vs2017编译通过了


顺便问下
template <typename T, template <typename> class PTR = role<T>::template ptr>
这句,::template这部分是什么意思啊

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧