有许多令人印象深刻的 Boost 库,例如 Boost.Lambda 或 Boost.Phoenix,它们在使 C++ 成为真正的函数式语言方面大有帮助。但是是否有一种直接的方法可以从任意 2 个或更多任意函数或函子创建复合函数?
如果我有:int f(int x)
and int g(int x)
,我想做类似的事情f . g
这将静态生成一个新的函数对象,相当于f(g(x)).
这似乎可以通过各种技术实现,例如所讨论的技术here。当然,您可以将调用链接到boost::lambda::bind
创建一个复合函子。但是 Boost 中是否有任何东西可以轻松地允许您采用任意 2 个或多个函数或函数对象并将它们组合起来创建一个复合函子,类似于在 Haskell 等语言中的做法?
对于任何偶然发现此页面的人,bureau14 有一篇关于此主题的精彩博客文章:
http://blog.quasardb.net/function-composition-in-c11/
这利用了 C++ 11 中的新功能以及 boost。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)