如您所见here,shared_ptr
作为指针而不是引用传递。另请注意
如果p是空指针,则所有这些函数都会调用未定义的行为。
为什么指针?我认为在C ++中,除非有特殊原因要使用指针,否则应该首选引用。
答案 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 ++委员会可能[引证需要]有模仿这些函数的意愿,并提供了一种简单的方法来更新依赖于内置函数的代码。