auto temp = make_unique<Resource>("heap_resource_1");heap_unique<Resource> heap_owner_1 = temp;
gsl::not_null<std::unique_ptr<int>> i(new int(10));auto j = std::move(i);assert(i.get()); // ooops контракт нарушен, ведь i значится как NOT null, а там ноль. Как так??
C++ (Qt)#include <otn/all.hpp>#include <iostream> int main(){ otn::unique<int> i(new int(10)); auto j = std::move(i); std::cout << *i << std::endl;}
C++ (Qt)#include <memory>#include <iostream> int main(){ auto i = std::make_shared<int>(10); auto j = std::move(i); auto k = i; std::cout << *j << std::endl;}
C++ (Qt) heap_unique<Resource> heap_owner_1 = make_unique<Resource>("heap_resource_1"); weak<Resource> heap_weak{heap_owner_1.get()}; ... heap_unique<Resource> heap_owner_2 = std::move(heap_owner_1);
Рано еще утюжок бросать