【发布时间】:2021-02-17 16:43:05
【问题描述】:
我有一个std::atomic<float>,我想增加一个特定的值。但是,在 atomic<float> 上使用 fetch_add() 不会编译并且似乎是不允许的。无论如何,我可以绕过这个吗?这是我试过的代码sn-p:
std::atomic<float> data(0);
void do_work(){ data.fetch_add(1); }
我得到的错误是fetch_add 不是atomic<float> 的成员
编辑:忘记说明我正在使用 -std=c++2a 编译 g++ 9.3.0 版
【问题讨论】:
-
是的,我正在编译--std = c ++ 2a。 gcc 版本 9.3.0 顺便说一句。我会在帖子中澄清
-
似乎与g ++ 10:godbolt.org/z/Th5qeK。它可能简单尚未为G ++ 9实施。 span>
-
我使用了来自@NateEldredge 的链接,看到它在 g++-10.0 下工作并切换到 9.3 并得到了错误。
标签: c++ multithreading floating-point c++20 stdatomic