Есть ли нормальное значение по умолчанию для std :: tr1 :: function? - PullRequest
4 голосов
/ 28 мая 2010

Я потратил некоторое время на поиски в Google, но ничего не нашел. Я хочу быть в состоянии сделать это:

std::tr1::function<void()> foo(SOME_DEFAULT_FUNCTION_THAT_DOES_NOTHING);
//
//Some code that could possibly assign foo
//
foo();

В противном случае я должен сделать это:

std::tr1::function<void()> foo;
//
//Some code that could possibly assign foo
//
if(foo)
{
    foo();
}

Я понимаю, что мог бы просто создать функцию, которая ничего не делает, но я ищу какой-то стандартный способ не иметь дело с проверкой, чтобы узнать, было ли функции присвоено значение, равное шаблону нулевого объекта.

Ответы [ 3 ]

5 голосов
/ 29 мая 2010

void noop() { }

0 голосов
/ 25 октября 2011

В моем проекте я использую

void noop(...) {}
0 голосов
/ 29 мая 2010

Не могли бы вы использовать boost::optional<std::tr1::function<void()> >? Таким образом, он позволяет установить или нет, и вы можете использовать проверку if, чтобы увидеть, была ли установлена ​​функция.

...