我正在更新我们的一些旧代码以使用 C++11 功能代替 boost 等价物。然而,并非一切都是简单的命名空间替换,如无序容器和智能指针。
例如boost::function
有方法empty()
但clear()
没有std::function
。
有一个我一直用来替换引用的operator()
定义,但是我应该用什么来替换引用?std::function
empty()
clear()
我考虑过使用std::function
赋值运算符并赋值nullptr
来清除它,但我担心可能会产生无意的副作用,不仅会清除底层函数,还会使对象不可用。
显然,更好的解决方案是默认初始化任何可重用的成员函数对象,这样总是有一个有效的回调,可以简单地用用户提供的回调来更新,但我现在的目标是直接替换以前的用法而不是代码审查。