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