gpt4 book ai didi

c++ - 在 C++ 中,为什么 auto 不适用于 std::atomic?

转载 作者:行者123 更新时间:2023-12-03 18:43:04 29 4
gpt4 key购买 nike

网上的一般推荐好像是用auto在可能的情况。
但这不起作用:

auto cnt = std::atomic<int>{0};
虽然这工作正常:
std::atomic<int> cnt {0};
是否有推荐的方法与 auto 一起使用? ?或者我应该假设 auto这是不可能的吗?

最佳答案

std::atomic不可移动,因为它有一个 deleted copy constructor .在 C++17 之前,auto cnt = std::atomic<int>{0};尝试调用移动构造函数将临时移动到 cnt ,所以你不能使用 std::atomic几乎总是自动的。
C++17 带给我们 mandatory copy elision ,所以 auto cnt = std::atomic<int>{0};工作正常,不调用任何移动构造函数,而是就地初始化对象。

关于c++ - 在 C++ 中,为什么 auto 不适用于 std::atomic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66449441/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com