Function Reference
My implementation of a functionRef
/functionView
variant.
Why? I desperately wanted to know just how std::function<>
works. So I scoured the tutorials, books what have you, in order to find more information and ended up creating a sort of lightweight variant of it.
The skills you need to have under your belt before attempting this tutorial are:
- Type erasure.
- callable objects
- std::invoke
- higher order functions
- lambda calculus - just a smattering knowledge
Based on std::function, functionRef is a non-owning wrapper for an arbitrary callable object.
Implementation notes:
- A primary template is used to match the complete type of a callable, say
void( int, int )
or int. The primary template remains an empty struct. - We want to differentiate the function type...