
我意识到我可以在元函数类中包装元函数,以使更高阶的函数能够访问嵌套的apply函数,并且意识到可以通过使用允许占位符的元函数mpl :: lambda来避免这种努力.
这怎么实际工作?我的头脑围绕着喇叭和占位符在封面下实际做了很麻烦.
解决方法 请参阅 Boost.MPL manual:占位符是mpl :: arg< X>形式的元功能类.元功能类是包含应用元功能的类.template <int N> struct arg; // forward declarationsstruct voID_;template <>struct arg<1>{ template < class A1,class A2 = voID_,... class Am = voID_> struct apply { typedef A1 type; // return the first argument };};typedef arg<1> _1 mpl :: lambda的工作是将占位符表达式转换为元函数类.这是通过嵌入像this这样的元功能类完成的:
template< typename X,typename Tag = unspecifIEd >struct lambda{ typedef unspecifIEd type;}; 如果x是通用形式X< a1,... an>中的占位符表达式,其中X是类模板,a1,… an是任意类型,嵌入的未指定类型f等价于
typedef protect< bind< quoten<X>,lambda<a1>::type,... lambda<an>::type> > f;
否则,f与X相同.应用元功能通过访问嵌入式类型来计算lambda表达式.
在MPL manual中,您可以查找保护,绑定和引用的定义.他们都是围绕他们的论据,尽可能延迟评估.
总结以上是内存溢出为你收集整理的c – 提升MPL占位符和Lambda全部内容,希望文章能够帮你解决c – 提升MPL占位符和Lambda所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)