#include <once_function.h>
Public Member Functions | |
OnceFunction () | |
template<typename F > | |
OnceFunction (F &&f) | |
OnceFunction (const OnceFunction &other)=delete | |
OnceFunction (OnceFunction &&other) | |
OnceFunction & | operator= (OnceFunction &&other) |
void | operator() () const |
A class fullfilling the void() signature, and operator() must be called exactly once for valid OnceFunction
s. This class can be much more efficient than std::function for type erasing functors without too much state (currently < ~250 bytes).
Definition at line 37 of file once_function.h.
|
inline |
Construct a OnceFunction
with invalid state.
Definition at line 42 of file once_function.h.
Construct a OnceFunction
with a valid functor.
f | A functor with signature void(). Ideally this should be a concrete functor (e.g. from lambda), though it will work with e.g. std::function. The downside in the latter case is extra overhead for double type erasure. |
Definition at line 57 of file once_function.h.
|
inline |
Definition at line 61 of file once_function.h.
|
inline |
Invoke the type-erased functor. This function must be called exactly once. Fewer will result in a leak, while more will invoke on an invalid object.
Definition at line 81 of file once_function.h.
|
inline |
Definition at line 67 of file once_function.h.