比较observer_ptr< T>与T *

时间:2016-06-23 14:09:24

标签: c++ c++17

据我所知,observer_ptr提案包含(in)与nullptr_t的平等比较和跨类型(即observer_ptr< T >observer_ptr<U>)比较。没有与原始指针进行比较,这在尝试逐步将其引入现有代码库时会有点烦恼。

问题1 :如果我添加这些运算符,您是否预见到任何严重问题(我在不同的命名空间中使用observer_ptr的单独实现,完全根据当前提案进行建模,I不会将这些添加到std::observer_ptr)?

后续行动:如果添加运算符是一个坏主意,最好使用observer_ptr上的get()与原始指针进行比较,还是会是最好将原始指针显式地包装为observer_ptr

编辑:显然它还不够清楚 - 我想知道为什么observer_ptr<T>缺少这些比较运算符。如果它只是一个遗漏,我可以将它们添加到我的实现中,并以我的快乐方式。如果有这个选择背后的原因,我想了解它是什么,以及我是否足够谨慎以避免将这些操作符添加到我的班级。

1 个答案:

答案 0 :(得分:1)

编写一个独立的模板函数,将observer_ptr<T>T*进行比较,并在项目的任何位置使用它。然后,您可以在必要时使用.get()或ctor或其他内容更改实施。