我们都知道boost和c++11都支持shared_ptr。有些编译器支持c++11,有些则不支持。我想写我的代码,以便当编译器支持c++11 shared_ptr时,它使用std::shared_ptr;当它不支持时,使用boost::shared_ptr。这方面的常见/最佳实践是什么?
让我将讨论局限于GCC,而不是具体的版本。
发布于 2013-06-16 03:33:32
您只需将它们拉入自定义名称空间即可
#ifdef HAS_STD_SHARED_PTR
#include <memory>
#define SHARED_PTR_NAMESPACE std
#else
#include <boost/shared_ptr.hpp>
#define SHARED_PTR_NAMESPACE boost
#endif
namespace my_namespace {
using SHARED_PTR_NAMESPACE::shared_ptr;
using SHARED_PTR_NAMESPACE::make_shared;
}
#undef SHARED_PTR_NAMESPACEHAS_STD_SHARED_PTR标志需要由构建环境设置。CMake为detecting such features提供了several mechanisms,较新的C++实现也提供了feature test macros,以便快速、轻松地检测新功能。
https://stackoverflow.com/questions/17127094
复制相似问题