Boost
arrow_drop_down
Boost.Hof
M
D

本次发布

Paul
Paul
作者

依赖项

库依赖关系将很快生成,请稍后再查看。

Boost.Hof Travis status Appveyor status

关于

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_FUNCTIONBOOST_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 文件夹中。

全部时间

sdarwin
sdarwin
贡献者
Shreyans Doshi
Shreyans Doshi
贡献者
Edward Diener
Edward Diener
贡献者
Peter Dimov
Peter Dimov
贡献者
nekko1119
nekko1119
贡献者
Nikolay Kondratyev
贡献者
CJBussey
CJBussey
贡献者