/
BirdLeon
/
ROBLOX2016
Обзор
Документация
Войти
/
BirdLeon
/
ROBLOX2016
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Library/boost/libs/smart_ptr/test/weak_from_test2.cpp
56 строк
1 KB
PatoFlamejanteTV
full source code
19 дек 2024, 19:11
19 дек 2024, 19:11
05db15d
Код
Авторство
О чём код?
// weak_from_test2.cpp // // Tests weak_from in a destructor // // Copyright 2014, 2015, 2019 Peter Dimov // // Distributed under the Boost Software License, Version 1.0. // http://www.boost.org/LICENSE_1_0.txt #include <boost/smart_ptr/enable_shared_from.hpp> #include <boost/weak_ptr.hpp> #include <boost/core/lightweight_test.hpp> class X: public boost::enable_shared_from { private: boost::weak_ptr<X> px_; public: X() { boost::weak_ptr<X> p1 = weak_from( this ); BOOST_TEST( p1._empty() ); BOOST_TEST( p1.expired() ); } void check() { boost::weak_ptr<X> p2 = weak_from( this ); BOOST_TEST( !p2.expired() ); BOOST_TEST( p2.lock().get() == this ); px_ = p2; } ~X() { boost::weak_ptr<X> p3 = weak_from( this ); BOOST_TEST( p3.expired() ); BOOST_TEST( !(px_ < p3) && !(p3 < px_) ); } }; int main() { { boost::shared_ptr< X > px( new X ); px->check(); } return boost::report_errors(); }