本次发布
依赖项
Boost.Hof

关于
HigherOrderFunctions 是一个仅限头文件的 C++11/C++14 库,它提供用于函数和函数对象的实用程序,可以比传统的元编程方法更简单地解决许多问题。
HigherOrderFunctions 是
- 现代:HigherOrderFunctions 利用了现代 C++11/C++14 的特性。它支持函数的
constexpr
初始化和constexpr
求值。它利用类型推导、变长模板和完美转发来提供简单现代的接口。 - 相关:HigherOrderFunctions 提供函数实用程序,并且不尝试在 C++ 中实现函数式语言。因此,HigherOrderFunctions 解决了许多与 C++ 程序员相关的问题,包括函数对象和 lambda 的初始化、带有排序的重载、改进的返回类型推导等等。
- 轻量级:HigherOrderFunctions 在函数对象之上构建简单轻量级的抽象。它不需要订阅整个框架。只需使用您需要的组件。
HigherOrderFunctions 分为三个组件
- 函数适配器和装饰器:它们增强了函数的附加功能。
- 函数:它们返回实现特定目的的函数。
- 实用程序:这些是在定义或使用函数时很有用的通用实用程序
Github: https://github.com/boostorg/hof/
文档: http://boost-hof.readthedocs.io/
动机
- 提高函数的表达力和能力,包括函数重载集合的一等公民、扩展方法、中缀运算符等。
- 简化 C++ 中通常需要元编程的构造
- 实现无点风格编程
- 解决 C++14 中 lambda 的限制
要求
这需要 C++11 编译器。没有第三方依赖。已在 clang 3.5-3.8、gcc 4.6-7 和 Visual Studio 2015 和 2017 上进行了测试。
Contexpr 支持
由于 constexpr 实现中的许多错误,MSVC 和 gcc 4.6 对 constexpr 的支持有限。但是,在使用 BOOST_HOF_STATIC_FUNCTION
和 BOOST_HOF_STATIC_LAMBDA_FUNCTION
构造时,支持函数的 constexpr 初始化。
Noexcept 支持
在 gcc 4.6 和 gcc 4.7 等较旧的编译器上,由于实现中的许多错误,不使用 noexcept
。此外,大多数编译器不支持使用成员函数指针推导 noexcept
。只有较新版本的 gcc(4.9 及更高版本)支持此功能。
构建
Boost.HigherOrderFunctions 库使用 cmake 进行构建。要使用 cmake 配置,请创建一个构建目录,然后运行 cmake
mkdir build
cd build
cmake ..
安装
要安装库,只需运行 install
目标
cmake --build . --target install
测试
可以通过使用 check
目标来构建和运行测试
cmake --build . --target check
也可以使用 Boost.Build 运行测试,只需将库复制到 boost 源代码树,然后
cd test
b2
文档
文档使用 Sphinx 构建。首先,使用 pip
安装文档所需的依赖项
pip install -r doc/requirements.txt
然后可以使用 sphinx-build
生成 html 文档
sphinx-build -b html doc/ doc/html/
最终文档将位于 doc/html
文件夹中。