I'm writing a C+11 function that takes a callable as an argument, and I'd like to have that argument default to a no-op function. This is my best attempt so far:
const std::function<void()> noop= [](){};
void f( int x, int y, std::function<void()> fn= noop ) { /* ... */ }
I'm wondering whether the standard libraries provide a "noop" std function for me, or do I need to write my own as I have above? I'm also wondering if there's a way to avoid explicitly naming the "noop" function. For example:
void f( int x, int y, std::function<void()> fn= [](){} ) { /* ... */ }
won't compile (in Visual Studio 2012 Update 3), nor will:
void f( int x, int y, std::function<void()> fn= std::function<void()>([](){}) ) { /* ... */ }
I'm wondering whether the standard libraries provide a "noop" std function for me, or do I need to write my own as I have above?
No, there are no default noop functions. In this case, you have to create your own (like you did with noop functor object).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With