Есть ли вменяемое значение по умолчанию для std::tr1::function?

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

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 ответа

Решение

void noop() { }

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

void noop(...) {}

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

Другие вопросы по тегам