Я пишу функцию C + 11, которая принимает вызываемый как аргумент, и я бы хотел, чтобы этот аргумент по умолчанию был функцией no-op. Это моя лучшая попытка:
const std::function<void()> noop= [](){};
void f( int x, int y, std::function<void()> fn= noop ) { /* ... */ }
Мне интересно, предоставляют ли стандартные библиотеки функцию "noop" std для меня, или мне нужно написать свои собственные, как я уже выше? Мне также интересно, есть ли способ избежать явного называния функции "noop". Например:
void f( int x, int y, std::function<void()> fn= [](){} ) { /* ... */ }
не будет компилироваться (в Visual Studio 2012 Update 3), и не будет:
void f( int x, int y, std::function<void()> fn= std::function<void()>([](){}) ) { /* ... */ }