{"id":13418517,"url":"https://github.com/boostorg/hof","last_synced_at":"2025-04-14T20:55:31.792Z","repository":{"id":18232903,"uuid":"21376888","full_name":"boostorg/hof","owner":"boostorg","description":"Higher-order functions for c++","archived":false,"fork":false,"pushed_at":"2025-03-15T16:57:49.000Z","size":2374,"stargazers_count":508,"open_issues_count":59,"forks_count":94,"subscribers_count":37,"default_branch":"develop","last_synced_at":"2025-04-07T16:21:30.559Z","etag":null,"topics":["c-plus-plus","constexpr","cplusplus","cplusplus-11","cplusplus-14","cpp","cpp11","cpp14","functional","functional-programming","lambda","modern"],"latest_commit_sha":null,"homepage":"http://boost-hof.readthedocs.io/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/boostorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-01T06:02:14.000Z","updated_at":"2025-04-04T03:52:01.000Z","dependencies_parsed_at":"2024-05-01T00:35:45.638Z","dependency_job_id":"c8e63af9-500f-4fa4-b6a2-ff942fe524f6","html_url":"https://github.com/boostorg/hof","commit_stats":{"total_commits":1157,"total_committers":16,"mean_commits":72.3125,"dds":"0.025064822817631782","last_synced_commit":"1fa2229b700f6f8f87c0f12b127eb2034eefa1af"},"previous_names":["pfultz2/fit"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostorg%2Fhof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostorg%2Fhof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostorg%2Fhof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boostorg%2Fhof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boostorg","download_url":"https://codeload.github.com/boostorg/hof/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248961129,"owners_count":21189991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","constexpr","cplusplus","cplusplus-11","cplusplus-14","cpp","cpp11","cpp14","functional","functional-programming","lambda","modern"],"created_at":"2024-07-30T22:01:03.222Z","updated_at":"2025-04-14T20:55:31.772Z","avatar_url":"https://github.com/boostorg.png","language":"C++","readme":"# Boost.Hof \u003ca target=\"_blank\" href=\"https://travis-ci.org/boostorg/hof\"\u003e![Travis status][badge.Travis]\u003c/a\u003e \u003ca target=\"_blank\" href=\"https://ci.appveyor.com/project/pfultz2/hof\"\u003e![Appveyor status][badge.Appveyor]\u003c/a\u003e\n\nAbout\n=====\n\nHigherOrderFunctions is a header-only C++11/C++14 library that provides utilities for functions and function objects, which can solve many problems with much simpler constructs than what's traditionally been done with metaprogramming.\n\nHigherOrderFunctions is:\n\n- Modern: HigherOrderFunctions takes advantages of modern C++11/C++14 features. It supports both `constexpr` initialization and `constexpr` evaluation of functions. It takes advantage of type deduction, variadic templates, and perfect forwarding to provide a simple and modern interface. \n- Relevant: HigherOrderFunctions provides utilities for functions and does not try to implement a functional language in C++. As such, HigherOrderFunctions solves many problems relevant to C++ programmers, including initialization of function objects and lambdas, overloading with ordering, improved return type deduction, and much more.\n- Lightweight: HigherOrderFunctions builds simple lightweight abstraction on top of function objects. It does not require subscribing to an entire framework. Just use the parts you need.\n\nHigherOrderFunctions is divided into three components:\n\n* Function Adaptors and Decorators: These enhance functions with additional capability.\n* Functions: These return functions that achieve a specific purpose.\n* Utilities: These are general utilities that are useful when defining or using functions\n\nGitHub: [https://github.com/boostorg/hof/](https://github.com/boostorg/hof/)\n\nDocumentation: [http://boost-hof.readthedocs.io/](http://boost-hof.readthedocs.io/)\n\nMotivation\n==========\n\n- Improve the expressiveness and capabilities of functions, including first-class citizens for function overload set, extension methods, infix operators and much more.\n- Simplify constructs in C++ that have generally required metaprogramming\n- Enable point-free style programming\n- Workaround the limitations of lambdas in C++14\n\nRequirements\n============\n\nThis requires a C++11 compiler. There are no third-party dependencies. This has been tested on clang 3.5-3.8, gcc 4.6-7, and Visual Studio 2015 and 2017.\n\nConstexpr support\n----------------\n\nBoth MSVC and gcc 4.6 have limited constexpr support due to many bugs in the implementation of constexpr. However, constexpr initialization of functions is supported when using the [`BOOST_HOF_STATIC_FUNCTION`](BOOST_HOF_STATIC_FUNCTION) and [`BOOST_HOF_STATIC_LAMBDA_FUNCTION`](BOOST_HOF_STATIC_LAMBDA_FUNCTION) constructs.\n\nNoexcept support\n----------------\n\nOn older compilers such as gcc 4.6 and gcc 4.7, `noexcept` is not used due to many bugs in the implementation. Also, most compilers don't support deducing `noexcept` with member function pointers. Only newer versions of gcc(4.9 and later) support this.\n\nBuilding\n========\n\nBoost.HigherOrderFunctions library uses cmake to build. To configure with cmake create a build directory, and run cmake:\n\n    mkdir build\n    cd build\n    cmake ..\n\nInstalling\n----------\n\nTo install the library just run the `install` target:\n\n    cmake --build . --target install\n\nTests\n-----\n\nThe tests can be built and run by using the `check` target:\n\n    cmake --build . --target check\n\nThe tests can also be run using Boost.Build, just copy library to the boost source tree, and then:\n\n    cd test\n    b2\n\nDocumentation\n-------------\n\nThe documentation is built using Sphinx. First, install the requirements needed for the documentation using `pip`:\n\n    pip install -r doc/requirements.txt\n\nThen html documentation can be generated using `sphinx-build`:\n\n    sphinx-build -b html doc/ doc/html/\n\nThe final docs will be in the `doc/html` folder.\n\n\u003c!-- Links --\u003e\n[badge.Travis]: https://travis-ci.org/boostorg/hof.svg?branch=master\n[badge.Appveyor]: https://ci.appveyor.com/api/projects/status/bjj27h3v3bxbgpsp/branch/develop\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboostorg%2Fhof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboostorg%2Fhof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboostorg%2Fhof/lists"}