我在Mac上运行这样的代码:
#include <atomic>
#include <iostream>
#include <utility>
#include <atomic>
struct A { int a[100]; };
struct B { int x, y; };
int main()
{
std::cout << std::boolalpha
<< "std::atomic<A> is lock free? "
<< std::atomic<A>{}.is_lock_free() << '\n'
<< "std::atomic<B> is lock free? "
<< std::atomic<B>{}.is_lock_free() << '\n';
}
Run Code Online (Sandbox Code Playgroud)
错误消息是:体系结构x86_64的未定义符号:“ ___ atomic_is_lock_free”,引用自:testassembly.o中的_main参见调用)
is_lock_free是c ++标准库的一部分,对我来说似乎很奇怪。您对此有什么想法吗?
我看到下面的注释中std::unique_ptr引用:
只有非const
unique_ptr才能将托管对象的所有权转移给另一个unique_ptr.const管理的对象的生命周期std::unique_ptr仅限于创建指针的范围.
有没有人可以用一个例子来解释它?我无法弄明白为什么.