Я обновляю часть нашего старого кода, чтобы использовать функции C++11 вместо эквивалентов повышения. Однако не все является простой заменой пространства имен, например, неупорядоченные контейнеры и интеллектуальные указатели.
Например, boost::function
имеет методы empty()
и clear()
, а std::function
— нет.
Существует operator()
, определенный для std::function
, который я использовал для замены ссылок empty()
, но что мне следует использовать заменить ссылки clear()
?
Я рассматривал возможность использования оператора присваивания std::function
и назначения nullptr
для его очистки, но я беспокоюсь, что это может привести к непреднамеренным побочным эффектам очистки не только базового функционировать, но делает объект непригодным для использования.
Очевидно, что лучшим решением была бы инициализация по умолчанию любых повторно используемых объектов-функций-членов таким образом, чтобы всегда был действительный обратный вызов, который можно просто обновить с помощью предоставленного пользователем, но я просто стремлюсь к прямой замене предыдущего использования прямо сейчас не код-ревью.