c – 模板构造函数继承的标准符合语法是什么?

c – 模板构造函数继承的标准符合语法是什么?,第1张

概述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 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;};
总结

以上是内存溢出为你收集整理的c – 模板构造函数继承的标准符合语法是什么?全部内容,希望文章能够帮你解决c – 模板构造函数继承的标准符合语法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1253679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存