typedef和C ++ 11类型别名之间的区别

马克·A

我在这里阅读模板别名:http : //en.cppreference.com/w/cpp/language/type_alias

而且我想知道,即使它写在我链接的页面的第一行,typedef和类型别名(using mytype = T;)有什么区别?

它们不是可互换的吗?

皮埃尔·福格(Pierre Fourgeaud)

两者之间绝对没有区别。

如果您看一下标准:

7.1.3 typedef规范[dcl.typedef]

一个typedef的名称,也可以通过引入的别名声明标识符下面的using关键字成为typedef的名称它具有与typedef说明符所引入的语义相同的语义特别是,它没有定义新的类型,也不应出现在type-id中

7.3.3使用声明[namespace.udecl]

如果using-declaration使用关键字typename并指定了从属名称(14.6.2),则using-declaration引入的名称将被视为typedef-name


但是,从此页面:http : //en.cppreference.com/w/cpp/language/type_alias

据说 :

类型别名类似于typedef但是具有使用模板的优点。

看来这

// template type alias
template<class T> using ptr = T*;
// the name 'ptr<T>' is now an alias for pointer to T
ptr<int> x;

仅可与该using指令一起使用。


并且不要忘记这是C ++ 11的功能。一些编译器尚不支持它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

typedef和C ++ 11类型别名之间的区别

来自分类Dev

类型别名和NewType之间的区别

来自分类Dev

用模板别名(类型别名,使用C ++ 11)弃用模板化类名吗?

来自分类Dev

使用模板别名(类型别名,使用C ++ 11)弃用模板化的类名吗?

来自分类常见问题

类型和类型别名之间的Elm差异?

来自分类Dev

C ++ 11“使用”类型别名的默认模板参数

来自分类Dev

C ++ 11“使用”类型别名的默认模板参数

来自分类Dev

使用类型作为其他名称和类型别名有什么区别?

来自分类Dev

Scala类型标签和类型别名

来自分类Dev

类型别名和类似类型

来自分类Dev

Scala:从mixin类型别名继承时,“类类型是必需的,但找到了{trait}和{trait}”

来自分类Dev

REPL中类型别名和单例对象之间的冲突

来自分类Dev

“ typedef”在类型和别名之间是否符合标准?

来自分类Dev

避免在Scala类和同伴对象中使用重复的类型别名

来自分类Dev

将模板类拆分为头文件和实现文件时使用类型别名

来自分类Dev

Scala类型别名和方法重载

来自分类Dev

为什么C ++中的类型别名在其语法中使用“ using”而不是“ typedef”?

来自分类Dev

如何从类型别名提取类型实参和类型参数引用其他类型别名?

来自分类Dev

如何从类型别名提取类型实参和类型参数引用其他类型别名?

来自分类Dev

Scala:类型类和ADT之间的区别?

来自分类Dev

C ++-转发声明和别名(使用using或typedef)

来自分类Dev

C ++名称与typedef别名和继承的名称发生冲突

来自分类Dev

C ++模板的类和类型名之间的区别

来自分类Dev

C ++模板的类和类型名之间的区别

来自分类Dev

C ++ 11:typedef std :: function和自变量

来自分类Dev

C#泛型类型typedef / alias和InvalidCastException

来自分类Dev

通用超类和超类类型之间的区别

来自分类Dev

typedef struct和struct之间的区别?

来自分类Dev

typedef struct和struct之间的区别?

Related 相关文章

  1. 1

    typedef和C ++ 11类型别名之间的区别

  2. 2

    类型别名和NewType之间的区别

  3. 3

    用模板别名(类型别名,使用C ++ 11)弃用模板化类名吗?

  4. 4

    使用模板别名(类型别名,使用C ++ 11)弃用模板化的类名吗?

  5. 5

    类型和类型别名之间的Elm差异?

  6. 6

    C ++ 11“使用”类型别名的默认模板参数

  7. 7

    C ++ 11“使用”类型别名的默认模板参数

  8. 8

    使用类型作为其他名称和类型别名有什么区别?

  9. 9

    Scala类型标签和类型别名

  10. 10

    类型别名和类似类型

  11. 11

    Scala:从mixin类型别名继承时,“类类型是必需的,但找到了{trait}和{trait}”

  12. 12

    REPL中类型别名和单例对象之间的冲突

  13. 13

    “ typedef”在类型和别名之间是否符合标准?

  14. 14

    避免在Scala类和同伴对象中使用重复的类型别名

  15. 15

    将模板类拆分为头文件和实现文件时使用类型别名

  16. 16

    Scala类型别名和方法重载

  17. 17

    为什么C ++中的类型别名在其语法中使用“ using”而不是“ typedef”?

  18. 18

    如何从类型别名提取类型实参和类型参数引用其他类型别名?

  19. 19

    如何从类型别名提取类型实参和类型参数引用其他类型别名?

  20. 20

    Scala:类型类和ADT之间的区别?

  21. 21

    C ++-转发声明和别名(使用using或typedef)

  22. 22

    C ++名称与typedef别名和继承的名称发生冲突

  23. 23

    C ++模板的类和类型名之间的区别

  24. 24

    C ++模板的类和类型名之间的区别

  25. 25

    C ++ 11:typedef std :: function和自变量

  26. 26

    C#泛型类型typedef / alias和InvalidCastException

  27. 27

    通用超类和超类类型之间的区别

  28. 28

    typedef struct和struct之间的区别?

  29. 29

    typedef struct和struct之间的区别?

热门标签

归档