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;

}

相关推荐
yzy8520 小时前
数据同步工具 -- syncthing
开发语言
catchadmin20 小时前
PHP 应用 security.txt 漏洞披露实践
开发语言·php
糖果店的幽灵21 小时前
LangChain 1.3 完全教程:从入门到精通-Part 11: Tools(工具系统)
开发语言·langchain·c#
夜勤月21 小时前
AQS 与 ThreadPoolExecutor 深度拆解:JDK 高并发底层设计精髓
android·java·开发语言
luj_176821 小时前
R语言生态优势与学习曲线分析
c语言·开发语言·网络·经验分享·算法
程序大视界21 小时前
【C++ 从基础到项目实战】C++(二):数组、字符串与结构体——组织数据的容器
开发语言·c++·cpp
叶子野格21 小时前
《C语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
AI科技星21 小时前
万有引力G与真空介电常数ε0全维度完整关系式汇编(基于v=c螺旋时空理论)
c语言·开发语言·前端·javascript·网络·汇编·electron
如竟没有火炬21 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
Lumbrologist21 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法