C++/Boost MPL:结构代码同样是Haskell的let,其中,

use*_*081 9 c++ boost haskell metaprogramming boost-mpl

因为C++元编程是功能性的:有没有什么方法可以做任何类似于任何函数式编程语言(例如Haskell的)let或where构造的东西?

我正在使用Boost :: MPL,但希望有更多结构用于更长的元函数.拆分成几个函数很好,但在某些情况下我更喜欢let/where.

pmr*_*pmr 2

MPL 本身不支持let子句,但构建在它之上的一些库支持子句。一个例子是metamonad。顾名思义,它还支持一些其他更高级别的功能概念(monad)。一个很大的缺点是,这metamonad不是 Boost 发行版的官方部分。

就 MPL 的解决方法而言,将事物拆分为函数并使用更多命名空间对它们进行分组,然后将重要符号导入到顶级命名空间中可能是您​​的最佳选择。