我正在编写一个C + 11函数,它将一个可调用的参数作为参数,我希望该参数默认为无操作函数。到目前为止,这是我最好的尝试:
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()>([](){}) ) { /* ... */ }
答案 0 :(得分:3)
我想知道标准库是否为我提供了“noop”std函数,还是我需要像上面那样编写自己的函数?
不,没有默认的noop功能。在这种情况下,您必须创建自己的(就像使用noop仿函数对象一样)。