我尝试像这样初始化变量
std::atomic<int> thread_num = std::atomic<int>(0);
,但是,它报告error: use of deleted function 'std::atomic<int>::atomic(const std::atomic<int>&)'
编译时,你会看到错误
#include <atomic>
#include <memory>
class test{
private:
std::atomic<int> thread_num = std::atomic<int>(0);
public:
test()=default;
void addTask();
};
void test::addTask(){
thread_num.fetch_add(1);
}
int main(){
std::unique_ptr<test> t = std::make_unique<test>(test());
t->addTask();
}
这一行:
std::atomic<int> thread_num(0);
使用无效语法来初始化成员。
应该是(使用统一初始化语法):
std::atomic<int> thread_num{0}; // note the curley braces