Преобразование boost::function в std::function

Я обновляю часть нашего старого кода, чтобы использовать функции C++11 вместо эквивалентов повышения. Однако не все является простой заменой пространства имен, например, неупорядоченные контейнеры и интеллектуальные указатели.

Например, boost::functionимеет методы empty()и clear(), а std::function— нет.

Существует operator(), определенный для std::function, который я использовал для замены ссылок empty(), но что мне следует использовать заменить ссылки clear()?

Я рассматривал возможность использования оператора присваивания std::functionи назначения nullptrдля его очистки, но я беспокоюсь, что это может привести к непреднамеренным побочным эффектам очистки не только базового функционировать, но делает объект непригодным для использования.

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

16
задан AJG85 22 June 2012 в 18:08
поделиться