当前位置: 首页 > 知识库问答 >
问题:

typedef与C++11类型别名[duplicate]之间的差异

吕学
2023-03-14

它们不是可以互换的吗?

共有1个答案

谢学名
2023-03-14

如果你看一下标准:

7.1.3 typedef规范[dcl.typedef]

也可以通过别名声明引入typedef-name。using关键字后面的标识符变为typedef-name。它具有与typedef说明符引入的语义相同的语义。特别是,它不定义一个新的类型,它不应该出现在类型ID中。

7.3.3使用声明[namespace.udecl]

如果using声明使用关键字typename并指定从属名称(14.6.2),则using声明引入的名称将被视为TypeDef-Name。

但是,从本页可以看到:http://en.cppreference.com/w/cpp/language/type_alias

据说:

类型别名与typedefs类似,但具有使用模板的优点。

看来这

// 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的特性。一些编译器还不支持它。

 类似资料:
  • 本文向大家介绍C语言 typedef:给类型起一个别名,包括了C语言 typedef:给类型起一个别名的使用技巧和注意事项,需要的朋友参考一下 C语言允许为一个数据类型起一个新的别名,就像给人起“绰号”一样。 起别名的目的不是为了提高程序运行效率,而是为了编码方便。例如有一个结构体的名字是 stu,要想定义一个结构体变量就得这样写: struct stu stu1; struct 看起来就是多余的

  • 我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?

  • 上次,我发现了Java8及以上版本函数式编程的难点,并在Collectors类中发现了一个静态方法。 我们有一个类员工像: 假设我们有一个类的POJO列表,并且我们希望接收一个所有员工姓名的列表。我们有两种方法,比如: 我知道第一种方法在上使用终端操作,而第二种方法在上使用中间操作,但我想知道第一种方法的性能是否比第二种方法差,反之亦然。如果您能解释第一种情况的潜在性能下降,当我们的数据源(emp

  • 主要内容:typedef 与 #define 区别Objective-C编程语言提供了一个名称为的关键字,可以使用此关键字为类型指定新名称。 以下是为单字节数字定义术语的示例 - 在此类型定义之后,标识符可以用作类型的缩写(或别名),例如: 按照惯例,大写字母用于这些定义,以提醒用户类型名称实际上是符号缩写,但可以使用小写,如下所示 - 也可以使用为用户定义的数据类型指定名称。 例如,使用带结构的来定义新的数据类型,然后使用该数据类型直接定义结构

  • 很好的一天! 我读得越多,就越感到困惑。外观和别名之间有什么区别? 我有这个类: /应用程序/库/项目/数据。php 和相应的外观,所以我可以只使用PJD进行访问::。 根据周围的一些网页: ... Laravel Facades是代理。它们环绕并调用代码底层真实实现上的函数。此外,在Laravel应用程序的上下文中,通过将这些Facades分配给别名来访问它们。依赖注入容器的这种使用允许您通过简

  • 在swift中似乎有两个相等运算符:双相等()和三相等(),这两者有什么区别?