Есть ли вменяемое значение по умолчанию для 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 ответа
Решение
Не могли бы вы использовать boost::optional<std::tr1::function<void()> >
? Таким образом, он позволяет установить или нет, и вы можете использовать проверку if, чтобы увидеть, была ли установлена функция.