是什么
boost_auto和boost_typeof属于
,是用于类型推导的宏定义
怎么用
boost_auto
boost_auto(a, b)
声明一个类型为表达式b类型的变量a,并且用表达式b初始化a
void boost_auto(std::vector &v){
boost_auto(test, v.begin());
for(; test != v.end(); test ){
std::cout << *test << std::endl;
}
}
其实boost_auto也是调用的boost_typeof
#define boost_auto(var, expr) boost_typeof(expr) var = expr
boost_typeof
boost_typeof(b) a
推导出表达式b的类型,并且声明该类型的一个变量a,可以初始化也可以不初始化。
void boost_typeof(std::vector &v){
boost_typeof(v.begin()) test = v.begin(); // boost_auto(test, v.begin()) 两者一样
for(; test != v.end(); test ){
std::cout << *test << std::endl;
}
}
一些联系
//boost_auto 相当于c 11的 auto 关键字
auto test = v.begin();
//boost_typeof 相当于c 11的 decltype 关键字
decltype(v.begin()) test = v.begin();