function2
function2 copied to clipboard
Suggestion: Allow users of function2 to know easily whether their lambdas are stored inplace
@Naios Suggestion
For example,
using MyFunction = fu2::function_base<...>;
auto cb = [foo, bar] {};
static_assert(MyFunction::is_inplace(cb), "Lambda too big!")
This could be useful to maintain code over time and not to break performance-related assumptions..
This could be really useful indeed. Probably it will be implemented in the future.
This could also be useful as a configuration option to disallow function objects that are too large for SFO.
using MyFunction = fu2::function_base<...>;
auto cb1 = [foo, bar] {};
auto cb2 = [foo, bar, baz] {};
MyFunction f1{cb1}; // allowed
//MyFunction f2{cb2}; // too big for SFO, compile error
Yes, that's right. Something like fu2::inplace_function (which itself could be a specialization of fu2::function_base) could be quite useful.
I came here looking for an in-place move-only function, and I very much vote for both proposals. In some places I want my functions to be in-place only, with a possibility to increase the storage size as needed.