繁体   English   中英

在 C++ 中,为什么 auto 不能与 std::atomic 一起使用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM