C++11使用using定义别名(替代typedef)

这篇具有很好参考价值的文章主要介绍了C++11使用using定义别名(替代typedef)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

把typedef丢进垃圾桶里

typedef用来给类型定义别名。从C++11开始,using可以用来给类型定义别名,它完全可以替代typedef

using除了提供类型别名的功能,还可以通过别名模版指代一族类型的名字。

关于using的介绍,可以参考下面连接:

  • C++ 关键词:using – using功能的全面介绍
  • What is the logic behind the “using” keyword in C++? – C++添加了新功能,但是没有引入新的关键字
  • C++11使用using定义别名(替代typedef) – using的使用

下面是一个使用using的demo。以后(c++)编程,需要给类型定义别名,统统使用using

#include <iostream>

template<typename T>
using call_back = void (*) (T);

void print_int(int num) {std::cout << num << std::endl;}

int main(int argc, char* argv[]){
    call_back<int> func = print_int;
    func(233);
    return 0;
}

查看当前编译器支持的C/C++标准

using的类型别名功能,从C++11标准才开始。所以,我们需要查看当前编译器支持的C/C++标准。

即使编译器支持了需要的C++标准,但也可能只是支持部分功能。C++编译器支持情况,可以参考:C++ 编译器支持情况表。

至于查看当前环境的C++标准支持。

  • MSVC的C++标准查看方法:待。

  • gcc的C++标准查看方法:g++ -dM -E - < /dev/null | grep -e __cplusplus -e __STDC_VERSION__

  • clang的C++标准查看方法:clang -dM -E - < /dev/null | grep -e __cplusplus -e __STDC_VERSION__

上面命令的含义,我问了下chat-gpt,参数大体如下:

  • -dM:指示g++输出预定义宏的列表。(-d后面可以接不同的字母选项,如-da,-db等)
  • -E:指示g++对输入文件进行预处理,并将预处理输出写入标准输出。因为输入文件是从标准输入(即键盘)读取的,所以这里使用-表示输入文件是从管道中读取的。
  • < /dev/null:将/dev/null设备文件的内容作为标准输入传递给g++,以便不必输入任何内容。

我当前的环境支持到c++17。所以C++11的标准放心用。当然,最好是在编译中添加C++标准参数:文章来源地址https://www.toymoban.com/news/detail-401076.html

# cmake 
set(CMAKE_CXX_STANDARD 11)

到了这里,关于C++11使用using定义别名(替代typedef)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言【自定义数据类型、typedef、动态内存分配】

    一、自定义数据类型。 ​ 关于下面讲到的所有自定义数据类型(enum、struct、union),有一点要说的是:定义类型不是声明变量,做这步操作时不分配内存,也不能在定义类型时赋值(枚举那个不是赋值,是做一个限定,赋值时赋限定之外的值也不报错。)。 1、typedef (给类

    2024年02月05日
    浏览(44)
  • Golang自定义类型与类型别名

    type myInt int32 与 type myInt = int32 ,概念并不相同 自定义类型: type myInt int32 通过这种方式定义的类型是一个 全新的类型 ,这个新类型与 int32 有相同的底层结构,但是却与 int32 类型不兼容。 尽管 myInt 的底层类型是 int32 ,但它们在类型系统中是不同的。 类型别名: type myInt

    2024年02月13日
    浏览(42)
  • win11还原win10磁贴方法ExplorerPatcher,替代Start 11、StartALLBack(开源免费~)

    微软:我不向前兼容,用户喷我兼容性差。我向前兼容,开发者就用老方法把程序写成一坨,我能怎么办,我也很绝望啊!微软献祭了一位高管,于是做出了Windows11。 于是win11,微软就把用户觉得好用的功能砍掉,一些挤牙膏似的小功能全上,并且强行改变用户之前养成的使用习

    2024年02月02日
    浏览(43)
  • 使用@别名

    @types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API,并提供了对它们的类型检查和智能提示的支持。 比如安装之后,就可以导入nodejs的 path模块,在下面代码 import path from \\\"path\\\"; 中, path 是 Node.js 的核心模块之一,用于处理文件路径的操作。它提供了一些方法,用于

    2024年02月22日
    浏览(31)
  • 别名的设置与使用

    在 Linux 中,你可以使用 alias 命令来设置别名。别名允许你为常用的命令创建自定义的缩写或快捷方式。这些别名会存在于当前会话中,如果你希望使别名永久生效,可以将其添加到你的 shell 配置文件中(例如 .bashrc 、 .bash_profile 、 .zshrc 等)。 通过执行以下命令来查看Lin

    2024年02月19日
    浏览(21)
  • 提升搜索引擎效率:使用 Elasticsearch 别名

    ​ ​Elasticsearch 因其强大的搜索能力而备受推崇,使其成为构建高性能搜索引擎的热门选择。其中一个关键特性是使用别名,Elasticsearch 的别名为优化搜索操作、提升查询性能以及启用动态索引管理提供了强大的机制。 在本文中,我们将探讨如何使用别名在 Elasticsearch 中创建

    2024年02月11日
    浏览(50)
  • 【ES实战】索引别名的使用说明

    索引别名可以通过API的方式进行操作 一个索引别名可以映射到一个或一个以上的索引 索引名和索引别名不能重复,在集群中都是唯一的 别名可以与过滤器结合使用 一个索引可以拥有多个别名 只映射到一个索引的索引别名默认可以写入。目前有特性,当别名关联到多个索引

    2024年02月14日
    浏览(52)
  • Elasticsearch 索引管理:使用别名来修改字段类型

    在 Elasticsearch 中,一个常见的问题是如何修改已存在的索引的字段类型。这是一个棘手的问题,因为 Elasticsearch 本身不允许直接修改字段类型。如果删除现有索引,重新建索引的话则会导致数据丢失。有一个方法是使用别名索引,当需要调整索引时可以先新建一个索引,把数

    2024年02月03日
    浏览(43)
  • 【TypeScript】类型推断与类型别名的使用方式。

    什么是类型推断? 在 TypeScript 中, 如果声明变量时, 没有明确的指定类型 ,那么 TypeScript 会依照类型推论(Type Inference)的规则推断出一个类型。 以下代码虽然 没有明确指定类型 ,但是会在编译的时候报错: 事实上,它等价于: TypeScript 会在没有明确的指定类型的时候,

    2024年02月16日
    浏览(44)
  • ElasticSearch第十七讲 ES索引别名的使用

    ES中可以为索引添加别名,一个别名可以指向到多个索引中,同时在添加别名时可以设置筛选条件,指向一个索引的部分数据,实现在关系数据库汇总的视图功能,这就是ES中别名的强大之处。别名是一个非常实用的功能,为我们使用索引提供了极大的灵活性,许多ES的API都支

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包