头文件里定义了两个宏:BOOST_TYPEOF和BOOST_AUTO,可以在编译期自动推导表达式的类型。不仅能够推导C++语言内建的int、double、数组、函数指针等等类型,也支持标准库中的容器类型。 BOOST_TYPEOF 获取目标类型。 BOOST_AUTO 按目标对象新建一个对象。内部采用了BOOST_TYPEOF。
#include
#include
void boost_typeof()
{
BOOST_TYPEOF(5) x = 10; //x为int类型,初始值为10
int n = 10;
BOOST_TYPEOF(n) y = 0; //y为int类型,初始值为0
BOOST_TYPEOF(&n) p = NULL; //p为int*类型,初始值为NULL
double d = 2.0;
BOOST_TYPEOF(n + d) pi = 3.14; //pi为double类型,初始值为3.14
}
void boost_auto()
{
BOOST_AUTO(x, 5); //x为int类型,初始值为5
int n = 10;
BOOST_AUTO(&i, n);//加了&表示引用,所以i为int&类型,初始值为10
BOOST_AUTO(p, new char[20]); //p为char*类型
BOOST_AUTO(v, std::vector(10, 0)); //v为vector类型,初始为包含10个值为0的元素
BOOST_AUTO(ptr, &n); //ptr为int*类型,指向n
BOOST_AUTO(y, n * 5); //y为int类型,初始值为n * 5
}
int main()
{
boost_typeof();
boost_auto();
return 0;
}