Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么存储到原子唯一\u ptr会导致崩溃?_C++_Pointers_Atomic - Fatal编程技术网

C++ 为什么存储到原子唯一\u ptr会导致崩溃?

C++ 为什么存储到原子唯一\u ptr会导致崩溃?,c++,pointers,atomic,C++,Pointers,Atomic,代码在i7-4790处理器(x86-64)上的VC++2013(v120)下编译,没有问题 intmain() { std::原子p; p、 商店(标准:使_独一无二(5)); } 一旦main()返回,我就会崩溃: 表达式:\块\类型\有效(pHead->nBlockUse) 发生了什么事?您不能用std::unique\ptr实例化std::atomic std::atomic可以用任何类型T实例化。std::atomic既不可复制也不可移动 而且一张照片也不是微不足道的 该类满足和的要求

代码在i7-4790处理器(x86-64)上的VC++2013(v120)下编译,没有问题

intmain()
{
std::原子p;
p、 商店(标准:使_独一无二(5));
}
一旦
main()
返回,我就会崩溃:

表达式:\块\类型\有效(pHead->nBlockUse)


发生了什么事?

您不能用
std::unique\ptr
实例化
std::atomic

std::atomic可以用任何类型T实例化。std::atomic既不可复制也不可移动

而且一张照片也不是微不足道的

该类满足和的要求,但不满足或的要求


您可以使用具有

什么编译器和库版本的?什么是CPU架构?@BenVoigt VC++2013(v120)CPU:i7-4790处理器(x86-64)谢谢你的回答。因此,我是否正确地假设这里的问题是VC++2013没有为
std::atomic
的无效类型
T
执行静态断言?我认为没有任何要求它检查
T
是否正确TriviallyCopyable@user2296177我不认为这是一个bug,因为标准要求
T
必须是琐碎是可复制的,所以负担在你身上,你给它一个正确的类型。这是真的。我仍然认为,实现中的静态断言将非常有助于防止类型的误用,即使标准不要求这样做。谢谢你的帮助。
int main()
{
    std::atomic<std::unique_ptr<int>> p;
    p.store(std::make_unique<int>(5));
}