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;

}

相关推荐
宵时待雨1 小时前
回溯算法专题1:递归
数据结构·c++·笔记·算法·leetcode·深度优先
枫叶丹41 小时前
【HarmonyOS 6.0】状态栏扩展新特性:点击状态栏图标展开二级菜单的场景动效详解
开发语言·华为·harmonyos
yaoxin5211231 小时前
405. Java 文件操作基础 - 装饰者模式与 I/O Streams
java·开发语言·python
Unbelievabletobe1 小时前
免费外汇api的响应时间在不同时段下的波动分析
大数据·开发语言·前端·python
洛水水1 小时前
【力扣100题】37.从前序与中序遍历序列构造二叉树
c++·算法·leetcode
Chase_______1 小时前
Java基础语言 ④ :面向对象核心——构造方法、this关键字与对象内存模型详解
java·开发语言·面向对象·类与对象
欢璃1 小时前
表白墙案例
java·开发语言·jvm·spring boot·spring·maven·mybatis
IT知识分享2 小时前
数字上标、下标如何打,6种常用方法详解
开发语言·c#·xhtml
蜡笔小马2 小时前
08.C++设计模式-享元模式
c++·设计模式·享元模式