C++ Boost库【3】 --类型推导

/*

C++11引入类型自动推断,auto关键字可自动推断,但auto定义的变量必须有初始值

新特性中还有decltype关键字,其是以表达式作为参数,返回该表达式的类型,并且decltype不会对表达式求值

BOOST_TYPEOF宏 与decltype类似,BOOST_TYPEOF使用一个表达式作为宏的参数,推导出表达式Expr类型。

头文件#include<boost/typeof/typeof.hpp>

BOOST_AUTO宏 与auto类似,BOOST_AUTO推导出表达式的类型,然后用这个类型声明变量Var,并将表达式赋值给Var

BOOST_AUTO实际上调用了BOOST_TYPEOF

#define BOOST_AUTO(Var,Expr) BOOST_TYPEOF(Expr) Var = Expr;

*/

#include<iostream>

// BOOST_TYPEOF库的头文件

#include<boost/typeof/typeof.hpp>

using namespace std;

int main()

{

auto a = 100;

// 打印出类型

cout << typeid(a).name() << endl;

decltype(1.2345f) b;

cout << typeid(b).name() << endl;

decltype(a++) c;

cout << typeid(c).name() << endl;

decltype(&c) d;

cout << typeid(d).name() << endl;

cout <<endl << "BOOST_TYPEOF" << endl;

BOOST_TYPEOF(1.23456) bb; //和decltype类似

cout << typeid(bb).name() << endl;

cout << endl << "BOOST_AUTO" << endl;

BOOST_AUTO(f, "sdddef"); // 利用BOOST_TYPEOF定义变量 + 初始化

cout << f << " " << typeid(f).name() << endl;

for (BOOST_AUTO(i, 0); i < 10; i++) {

cout << "1 " ;

}

return 0;

}

相关推荐
Tairitsu_H4 分钟前
[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?
数据结构·c++·图论·最小生成树
fengci.5 分钟前
CTF2困难部分
开发语言·网络·python·安全·php
佳得动6 分钟前
编译和链接的认识(C语言)
c语言·开发语言
大黄说说16 分钟前
PHP 异步怎么实现?Swoole、Workerman 使用场景对比
开发语言·php·swoole
十二同学啊17 分钟前
Python 工程化详解:项目结构、依赖管理、代码质量、测试与部署
java·开发语言·python
乐橙开放平台24 分钟前
跨地域监控难管理?通过 GB28181 把各地海康大华乐橙摄像头注册到云端平台
开发语言·笔记·物联网·自动化·php·音视频·智能家居
广东融科数据服务有限公司25 分钟前
网络监控经常卡顿、掉线、画面模糊?一线排查问答实录
开发语言·网络·php
Bczheng131 分钟前
VS2022 安装MFC和QT
c++·qt·mfc
Sarvartha1 小时前
Iterator 迭代器、ListIterator & foreach 循环
开发语言
樱花落木兰1 小时前
Redis 消息队列的可靠性演进:从 List、Pub/Sub 到 Stream 消费者组,以及 8.x 版本改变了什么
java·开发语言·经验分享·redis·分布式·python·软件工程