![](/img/trans.png)
[英]Why does compare_exchange_strong fail with std::atomic<double>, std::atomic<float> in C++?
[英]In C++, why does auto not work with std::atomic?
网上的一般建议似乎是尽可能使用auto
。
但这不起作用:
auto cnt = std::atomic<int>{0};
虽然这很好用:
std::atomic<int> cnt {0};
有没有推荐的方法来使用这个auto
? 或者我应该假设auto
是不可能的?
std::atomic
是不可移动的,因为它有一个已删除的复制构造函数。 在 C++17 之前, auto cnt = std::atomic<int>{0};
尝试调用移动构造函数将临时移动到cnt
,所以你不能使用std::atomic
几乎总是自动。
C++17 给我们带来了强制复制省略,所以auto cnt = std::atomic<int>{0};
工作正常,不调用任何移动构造函数,而是就地初始化 object。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.