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