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