Behaves like a smart pointer that can handle any type with the same interface. More...
#include <ptr.hpp>
Public Types | |
|
typedef mace::stub::vtable < InterfaceType, InterfaceDelegate > | vtable_type |
| typedef InterfaceType | interface_type |
| typedef InterfaceDelegate | delegate_type |
Public Member Functions | |
| ptr (ptr &&m) | |
| operator bool () const | |
| bool | operator! () const |
| template<typename T > | |
| ptr (T *v) | |
| template<typename T > | |
| ptr (const boost::shared_ptr< T > &v) | |
| template<typename OtherInterface , typename OtherDelegate > | |
| ptr (const ptr< OtherInterface, OtherDelegate > &p) | |
| constructs an ptr from another ptr with compatible interface. | |
| const vtable_type & | operator* () const |
| vtable_type & | operator* () |
| const vtable_type * | operator-> () const |
| vtable_type * | operator-> () |
Protected Attributes | |
| boost::shared_ptr< boost::any > | m_ptr |
| boost::shared_ptr< vtable_type > | m_vtable |
If constructed from a shared pointer, then a copy of the shared pointer will go with every ptr. If constructed from a regular pointer, then the pointer must be valid for the life of all copies of the ptr.
1.8.0