STD :: Atomic_fetch为什么将指针作为其输入参数
Why does std::atomic_fetch take a pointer as its input parameter
std::atomic_fetch_xxx
的免费功能集(或,添加,sub,xor(,以输入为 std::atomic<T>*
,名为obj:
template< class T >
T atomic_fetch_sub(std::atomic<T>* obj,
typename std::atomic<T>::difference_type arg ) noexcept;
问题:为什么STD ::原子类型被视为指针,而不是作为参考(例如:
(传递给T atomic_fetch_sub(std::atomic<T>& obj,
typename std::atomic<T>::difference_type arg ) noexcept;
是否有实用的合理/原因,还是仅仅是风格?
具有的整个想法 免费功能将与C兼容C。反之亦然(。
如果您不希望可以使用成员功能 - 使用到处都有引用 - 例如obj.fetch_sub(arg)
,甚至使用操作员重载的obj -= arg
。
,但是代码仅为C 。
为什么std :: atomic_fetch将指针作为输入参数
atomic_fetch_sub
需要能够更新第一个参数的值(如果它失败了(,这要求第一个参数通过指针或参考传递。
选择了一个指针使其与C接口兼容。
存在这些免费功能,以便在不更改大多数代码的情况下以C或C 的形式编译。通过取指针,调用免费功能看起来像atomic_fetch_add(var, ...)
。这也是atomic_int
在C 中存在的原因,尽管它具有与C版本不同的定义。
C11通过使用通用选择宏来实现这种功能超载。C中的atomic_fetch_add
不是函数。这是一个宏,可以根据其参数之一选择哪个函数来调用。
相关文章:
- 将输入参数作为右值引用传递?
- 是否可以在命令行中将输入参数传递给可执行文件
- C++基于输入参数的动态代码生成
- 我想知道为什么"std::unique_ptr<int> foo(新 int)"是合法的,因为"std::<int>unique_ptr"要求输入参数类型应该是"int"?
- 如何使用输入参数作为文件的传递?
- 在函数中使用运算符重载,在 c++ 中使用 const 类型输入参数
- 提供变量作为 MATLAB 系统命令的输入参数,以便C++可执行文件
- 函数的函数无法识别输入参数
- 当迭代器(输入参数)通常不是constexpr时,constexpr算法真的有用吗
- 如何将一个使用参数包和typename的类作为函数(c++)的输入参数
- CvMat:输入参数的大小不匹配
- 在什么情况下,使用'const T*'输入参数比'const T&'更可取?
- std::具有两个输入参数的矢量构造函数
- GoogleMock:如何根据另一个输入参数设置ArgReferee?
- 模板化函数以从输入参数推断返回类型 stl-container
- GoogleMock:如何验证输入参数的调用次数?
- 当我将 char 数组发送到输入参数为字符串的函数时会发生什么?
- 应该接受不同输入参数的纯虚函数 - 应该如何实现
- C++主函数的输入参数
- STD :: Atomic_fetch为什么将指针作为其输入参数