O HigherOrderFunctions é uma biblioteca C ++ 11/C ++ 14 que fornece utilitários para funções e objetos de função, que podem resolver muitos problemas com construções muito mais simples do que o que é tradicionalmente feito com a metaprogramação.
HigherOrderFunctions é:
constexpr e a avaliação constexpr de funções. Aproveite a dedução do tipo, modelos variádicos e a encaminhamento perfeito para fornecer uma interface simples e moderna.Superior de Funções é dividido em três componentes:
Github: https://github.com/boostorg/hof/
Documentação: http://boost-hof.readthedocs.io/
Isso requer um compilador C ++ 11. Não há dependências de terceiros. Isso foi testado no CLANG 3.5-3.8, GCC 4.6-7 e Visual Studio 2015 e 2017.
Tanto o MSVC quanto o GCC 4.6 têm suporte limitado ao constexpr devido a muitos erros na implementação do Constexpr. No entanto, a inicialização das funções do Constexpr é suportada ao usar as construções BOOST_HOF_STATIC_FUNCTION e BOOST_HOF_STATIC_LAMBDA_FUNCTION .
Em compiladores mais antigos, como o GCC 4.6 e o GCC 4.7, noexcept não é usado devido a muitos erros na implementação. Além disso, a maioria dos compiladores não suporta deduzir noexcept com ponteiros de função de membro. Apenas versões mais recentes do GCC (4,9 e posterior) suportam isso.
A biblioteca Boost.HigherOrderFunctions usa o CMake para construir. Para configurar com o cmake, crie um diretório de construção e execute cmake:
mkdir build
cd build
cmake ..
Para instalar a biblioteca, basta executar o destino install :
cmake --build . --target install
Os testes podem ser construídos e executados usando o destino check :
cmake --build . --target check
Os testes também podem ser executados usando o boost.build, basta copiar a biblioteca para a árvore de origem do Boost e depois:
cd test
b2
A documentação é construída usando a esfinge. Primeiro, instale os requisitos necessários para a documentação usando pip :
pip install -r doc/requirements.txt
Em seguida, a documentação HTML pode ser gerada usando sphinx-build :
sphinx-build -b html doc/ doc/html/
Os documentos finais estarão na pasta doc/html .