C++ C+;中不推荐使用的auto#ptr的替代库/模板类+;17
拥有共享的项目库,必须使用各种编译器C++17 C++03等进行编译。因此,如果代码要保持通用,仅使用更好的C++ C+;中不推荐使用的auto#ptr的替代库/模板类+;17,c++,replace,auto-ptr,C++,Replace,Auto Ptr,拥有共享的项目库,必须使用各种编译器C++17 C++03等进行编译。因此,如果代码要保持通用,仅使用更好的unique_ptr或不太完美的auto_ptr是不理想的 请查看#ifdef类型的解决方案,但它会变得混乱。 另外,对经过良好尝试和测试的代码进行编辑并不是一个特别有吸引力的想法 是否有人知道一种形式、配合和功能的下拉式替代品,用于auto\u ptr 有和std::unique_ptr和std::auto_ptr可替换为标准::共享ptr和标准::弱ptr由和 而且,当你没有转移所有权
unique_ptr
或不太完美的auto_ptr
是不理想的
请查看#ifdef类型的解决方案,但它会变得混乱。
另外,对经过良好尝试和测试的代码进行编辑并不是一个特别有吸引力的想法
是否有人知道一种形式、配合和功能的下拉式替代品,用于auto\u ptr
有和<代码>std::unique_ptr和std::auto_ptr
可替换为<代码>标准::共享ptr和标准::弱ptr
由和
而且,当你没有转移所有权的意图时,你可以更具表现力。你可以做的一件事是,如果你有C++11或更高版本,你可以使用
unique\u ptr
,或者以前使用过shared\u ptr
(甚至boost::shared\u ptr
如果没有std::shared\u ptr
)。这将避免auto_ptr
的问题,如果它只是库的内部,您可以使用一个#ifdef来解析c++03的auto_ptr
、c++11及更高版本的unique_ptr
,以及另一个为空或std::move
,用于所有权转移。如果它是外部的,您不能确保用户不会误用auto_ptr
BTW,OP似乎对使用宏的解决方案不感兴趣。