shared_ptr原子函数的基本原理采用指针而不是引用

时间:2018-02-12 14:26:39

标签: c++ c++11 reference language-lawyer shared-ptr

如您所见hereshared_ptr作为指针而不是引用传递。另请注意

  

如果p是空指针,则所有这些函数都会调用未定义的行为。

为什么指针?我认为在C ++中,除非有特殊原因要使用指针,否则应该首选引用。

1 个答案:

答案 0 :(得分:3)

ssh prdcrm1@${server} "grep -l 'Sometthing' *"

获取指向智能指针的指针,因为这是更通用的atomic_is_lock_free的特例:

template< class T >
bool atomic_is_lock_free( const std::shared_ptr<T>* p );

其中template< class Atomic > bool atomic_is_lock_free(const Atomic* obj) Atomic。所有模板函数atomic_*都是如此。

正如用户luk32注意到的,这只是部分地回答了问题:“虽然模板界面需要这样的签名,但它立即要重新应用问题并询问为什么通用接口没有设计使用参考。“

那些<atomic>签名最初来自GCC C扩展[citation needed] function __sync_*。由于std::shared_ptr<T>没有引用,C ++委员会可能[引证需要]有模仿这些函数的意愿,并提供了一种简单的方法来更新依赖于内置函数的代码。