function2
SG14
function2 | SG14 | |
---|---|---|
7 | 7 | |
530 | 489 | |
- | 1.6% | |
4.7 | 1.8 | |
2 months ago | about 2 years ago | |
C++ | C++ | |
Boost Software License 1.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
function2
-
Callbacks in embedded | heapless environment
Fixed size function wrappers are not only limited and also a waste of space. Use a configurable function wrapper like fu2 with a stack allocator and set small object optimizer capacity to 0.
- Scriptable Headless Player Bots and independent ECS in a Custom UE C++ Server for MMO(RPG)s.
- A custom C++ server for the Unreal Engine 5, optimized for MMO(RPG)s.
-
A simple std::function alternative that never allocates
std::function wasn't cutting it for me, but I ended up going with fu2::function. It comes with a lot of features (almost too many), but the header size and compile times are comparable to , and it fit my needs pretty well.
-
Idle: an asynchronous and hot-reloadable C++ dynamic component framework
Thank you, function2 is also used heavily in Idle as a type-erasure backend for continuable that is the primary asynchronous task abstraction.
- Should std::function's move assignment operation be noexcept?
-
Orthodox C++
You can write your own std::function, too, nor is it the only STL type that can take a capturing lambda (std::packaged_task for example).
A capturing lambda is just a class with an operator(). It's complicated to do what std::function does, but fully possible.
In fact, custom std::function replacements have better lambda support than std::function itself. Such as unique_function in https://github.com/Naios/function2 which can handle non-copyable lambdas.
SG14
- Callbacks in embedded | heapless environment
-
How to create callback function for publishing hardware events in C++?
There was a proposal for an `inplace_function` that uses static memory. There was a full implementation made. It's not the best solution for this problem though
-
C++20 compile-time functional operators that work on function pointers
There was a proposal for such functionality but I don't know what happened to it. It seems abandoned. There is full implementation in the same repo.
-
`std::function`overhead and alternatives
The only faster alternative that doesn't lose much flexibility would be to roll your own custom version of std::function that has a medium sized std::aligned_storage_t (or just an std::max_align_t aligned array of std::byte or unsigned char) buffer instead of using a dynamic allocation to hold its functor data. (Or use an implementation of the proposed inplace_function such as https://github.com/WG21-SG14/SG14/blob/master/SG14/inplace_function.h )
-
Can anyone point me to a good resource for SG11/14?
There's a repository for SG14 on GitHub here: https://github.com/WG21-SG14/SG14
-
Use UB optimisation with std::function if you know it's bound, and with std::any if you know what type is held
The SG14 inplace_function takes a similar approach to what you suggest. The only minor downside there is that the way it's implemented makes the type unsafe to use across dll boundaries, due to possible mismatching addresses of the default binding. I guess that's not really a consideration for the C++ standard though, and anyway since std::function can allocate then it's inherently unsafe in that scenario anyway.
-
Fixed math header only library with MIT licence
He was trying to standardize his implementation, but I (sadly) don't know what's happened to it since then: https://github.com/WG21-SG14/SG14/blob/master/Docs/Proposals/Fixed_Point_Library_Proposal.md
What are some alternatives?
Inja - A Template Engine for Modern C++
compile-time-init-build - C++ library for composing modular firmware at compile-time.
FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code.
fixed_math - FixedMath: A High-Performance C++17 Library for Fixed-Point 48.16 Arithmetic
LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support python and matlab.
static-functional - Header-only C++ library providing compile-time functional operators that work with raw function pointers
stx-btree - OBSOLETE, contained in https://github.com/tlx/tlx - STX B+ Tree C++ Template Classes -
rfcs - RFCs for changes to Rust
Hashmaps - Various open addressing hashmap algorithms in C++
Folly - An open-source C++ library developed and used at Facebook.
Learn Project - go study
binutils-gdb - Unofficial mirror of sourceware binutils-gdb repository. Updated daily.