c – 模板构造函数继承的标准符合语法是什么?
发布时间:2020-12-16 03:11:42 所属栏目:百科 来源:网络整理
导读:GCC 4.8.1接受 template typename Tclass Subclass : public BaseclassT{public: using typename BaseclassT::Baseclass;}; 但MSVC没有.另一方面,MSVC接受 template typename Tclass Subclass : public BaseclassT{public: using typename Baseclass::Basecl
GCC 4.8.1接受
template <typename T> class Subclass : public Baseclass<T> { public: using typename Baseclass<T>::Baseclass; }; 但MSVC没有.另一方面,MSVC接受 template <typename T> class Subclass : public Baseclass<T> { public: using typename Baseclass::Baseclass; }; 但GCC没有.那么我在这个问题上看到了另一种声明:c++11 inheriting template constructors template <typename T> class Subclass : public Baseclass<T> { public: using typename Baseclass::Baseclass<T>; }; 而MSVC则向其提供了一个“过时的声明风格”,GCC说 prog.cpp:8:24: error: ‘template<class T> class Baseclass’ used without template parameters using typename Baseclass::Baseclass<T>; 我以为第一个例子是标准符合语法.直观地看,对我来说是正确的. 什么是c 11标准符合语法? 解决方法
答案有点埋在标准中.使用声明定义为(7.3.3):
using [typename] nested-name-specifier unqualified-id; 嵌套名称说明符在一些步骤之后解析为simple-template-id,定义为 template-name < [template-argument-list] > 简而言之,符合标准的语法是 template <typename T> class Subclass : public Baseclass<T> { public: using typename Baseclass<T>::Baseclass; }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 我可以在ironruby中运行rubygems吗?
- 依赖注入那些事儿
- c – 为什么不能自动使用模板类型参数?
- ruby-on-rails – PG:错误关系不存在
- 【Java EE】--Contexts and Dependency Injection (上下文
- ios – 如何在故事板中搜索Segue Identifier?
- Oracle EBS INV 查询物料无值 ECO
- Cocos2dx 学习笔记31 cocos2dx 播放gif
- sqlite – 在sqlalchemy.exc.IntegrityError :( IntegrityE
- Ruby Hash:无法将String转换为Integer TypeError