我正在编写一个C + 11函数,它将可调用作为参数,我希望将该参数默认为无操作函数.到目前为止,这是我最好的尝试:
const std::function<void()> noop= [](){};
void f( int x, int y, std::function<void()> fn= noop ) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我想知道标准库是否为我提供了"noop"std函数,还是我需要像上面那样编写自己的函数?我也想知道是否有办法避免明确命名"noop"功能.例如:
void f( int x, int y, std::function<void()> fn= [](){} ) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
将不会编译(在Visual Studio 2012 Update 3中),也不会:
void f( int x, int y, std::function<void()> fn= std::function<void()>([](){}) ) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
我想知道标准库是否为我提供了“noop”std 函数,或者我是否需要像上面那样编写自己的函数?
不,没有默认的 noop 函数。在这种情况下,您必须创建自己的(就像您对 noop 仿函数对象所做的那样)。
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |