/* Copyright Bruno da Silva de Oliveira 2003. Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ #ifndef SMART_PTR_H #define SMART_PTR_H #include #include namespace smart_ptr { struct C { int value; }; inline boost::shared_ptr NewC() { return boost::shared_ptr( new C() ); } struct D { boost::shared_ptr Get() { return ptr; } void Set( boost::shared_ptr c ) { ptr = c; } private: boost::shared_ptr ptr; }; inline std::auto_ptr NewD() { return std::auto_ptr( new D() ); } // test an abstract class struct A { virtual int f() = 0; }; struct B: A { virtual int f(){ return 1; } }; inline boost::shared_ptr NewA() { return boost::shared_ptr(new B()); } inline int GetA(boost::shared_ptr a) { return a->f(); } } #endif