#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;
}