10

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()>([](){}) ) { /* ... */ }
4

1 回答 1

3

我想知道标准库是否为我提供了“noop”std 函数,还是我需要像上面那样编写自己的函数?

不,没有默认的 noop 功能。在这种情况下,您必须创建自己的(就像使用 noop 函子对象一样)。

于 2013-07-24T19:28:26.840 回答