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;

}

相关推荐
倒头就睡的小比特9 小时前
算法竞赛C++常用的STL
c++·算法
weilx12349 小时前
C++笔记-文件IO-<fcntl.h>
c++
小羊没烦恼!9 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读10 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
Smileyqp沛沛11 小时前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车11 小时前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光12 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·12 小时前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁12 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven12 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法