«IOW, слабый ptr является сильной ссылкой на метаданные
отрим следующий код:
#include <iostream>
#include <memory>
using namespace std;
class T;
std::weak_ptr<T> wptr;
class T
{
public:
T() { }
~T() {
std::cout << "in dtor" << std::endl;
std::cout << (wptr.expired() ? "expired" : "not expired") << std::endl;
}
};
int main() {
{
auto ptr = std::make_shared<T>();
wptr = ptr;
std::cout << (wptr.expired() ? "expired" : "not expired") << std::endl;
}
return 0;
}
В этом коде я пытался выяснить,weak_ptr
Срок действия истек в фазе разрушения объектов. Кажется так. Выход:
not expired
in dtor
expired
Я использовал gcc-5.1 сideone.
Теперь у меня есть другая проблема. Я не смог найти никакой документации, утверждающей, что это стандартное поведение. Это гарантированно работает таким образом,всегда?