«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.

Теперь у меня есть другая проблема. Я не смог найти никакой документации, утверждающей, что это стандартное поведение. Это гарантированно работает таким образом,всегда?

Ответы на вопрос(4)

Ваш ответ на вопрос