如"mpl::plus<_1, _2>",其中的"_1"大致相当于下边的定义:
struct arg<1>
{
template <class A1, class A2 >
struct apply
{
typedef A1 type; // return first argument
}
};
整个语句的含义相当于:
struct Temp
{
template<typename Arg1, typename Arg2>
struct apply {
typedef mpl::plus<Arg1, Arg2> type;
};
}
2. mpl::vector, mpl::list, etc. 与std::vector, std::list有类似语义的元数据。但是,std容器中装的是变量,mpl容器中装的是类型。即:mpl可以对mpl容器中的类型进行运算,得到新的类型。
3.有价值的概念
3.1 compile time to runtime mapping,
用途: 从mataprogramming 转到
工具:mpl::for_each<>, boost::fusion
3.2 runtime to compile time mapping。
用途:提供缓式计算,避免不必要的运行时开销,提高性能
工具:参照blitz++
3.3 闭包
3.4 命名参数
用途:函数接受大量参数时,简化参数传递
工具:
No comments:
Post a Comment