1 // DEPRECATED in favor of adl_predestruct with deconstruct<T>(). 2 // A simple framework for creating objects with predestructors. 3 // The objects must inherit from boost::signals2::predestructible, and 4 // have their lifetimes managed by 5 // boost::shared_ptr created with the boost::signals2::deconstruct_ptr() 6 // function. 7 // 8 // Copyright Frank Mori Hess 2007-2008. 9 // 10 //Use, modification and 11 // distribution is subject to the Boost Software License, Version 12 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at 13 // http://www.boost.org/LICENSE_1_0.txt) 14 15 #ifndef BOOST_SIGNALS2_PREDESTRUCTIBLE_HPP 16 #define BOOST_SIGNALS2_PREDESTRUCTIBLE_HPP 17 18 namespace boost 19 { 20 namespace signals2 21 { 22 template<typename T> class predestructing_deleter; 23 24 namespace predestructible_adl_barrier 25 { 26 class predestructible 27 { 28 protected: predestructible()29 predestructible() {} 30 public: 31 template<typename T> adl_postconstruct(const shared_ptr<T> &,...)32 friend void adl_postconstruct(const shared_ptr<T> &, ...) 33 {} adl_predestruct(predestructible * p)34 friend void adl_predestruct(predestructible *p) 35 { 36 p->predestruct(); 37 } ~predestructible()38 virtual ~predestructible() {} 39 virtual void predestruct() = 0; 40 }; 41 } // namespace predestructible_adl_barrier 42 using predestructible_adl_barrier::predestructible; 43 } 44 } 45 46 #endif // BOOST_SIGNALS2_PREDESTRUCTIBLE_HPP 47