这是一个简单的例子,我通常不会在堆上存储 auto l = std::make_unique<int>;
*l=8;
std::cout << *l << std::endl;
,但我试图了解其工作原理。
我试图理解为什么这不起作用:
*l=8;
我明白了:
std :: __ 1 :: default_delete&gt; ()&#39;不可分配
编译器在行unique_ptr
我知道 int*h=new int;
*h=7;
std::cout << *h << std::endl;
本身并不是可以重新分配的,但这不是我正在做的事情。我只是简单地改变指针指向的值。使用常规指针我会这样做:
unique_ptr
我尝试使用adb -s < serialNumber > shell
来模仿此行为。
答案 0 :(得分:11)
std::make_unique<int>
是一个函数,您必须将其命名为:
auto l = std::make_unique<int>();