#include <cddefines.h>
Collaboration diagram for auto_vec< T >:
Public Types | |
typedef T | element_type |
Public Member Functions | |
auto_vec (element_type *p=NULL) throw () | |
auto_vec (auto_vec &p) throw () | |
auto_vec & | operator= (auto_vec &p) throw () |
~auto_vec () throw () | |
element_type & | operator[] (ptrdiff_t n) const throw () |
element_type * | get () const throw () |
element_type * | data () const throw () |
element_type * | release () throw () |
void | reset (element_type *p=NULL) throw () |
auto_vec (auto_vec_ref< element_type > r) throw () | |
auto_vec & | operator= (auto_vec_ref< element_type > r) throw () |
operator auto_vec_ref () throw () | |
Private Attributes | |
T * | ptr |
Data Structures | |
struct | auto_vec_ref |
NB1 - the operator[] and data() methods were added and are not part of the standard
NB2 - operator* and operator-> have been omitted as they are not useful for vectors
NB3 - the class has been altered to disallow assigning pointers of a different type, i.e., auto_vec<BaseClass> p( new DerivedClass[10] ) is NOT allowed. This is done because BaseClass and DerivedClass often have different sizes, and hence using them like this in vectors is error-prone.
NB4 - operator auto_vec<T>() has been omitted because it is only needed to convert an auto_vec<DerivedClass> to auto_vec<BaseClass>.
This is written in the standards draft (with auto_ptr replaced by auto_vec):
1 Template auto_vec holds a pointer to an array object obtained via new and deletes that object when it itself is destroyed (such as when leaving block scope 6.7).
2 Template auto_vec_ref holds a reference to an auto_vec. It is used by the auto_vec conversions to allow auto_vec objects to be passed to and returned from functions.
Definition at line 991 of file cddefines.h.
typedef T auto_vec< T >::element_type |
Definition at line 1007 of file cddefines.h.
auto_vec< T >::auto_vec | ( | element_type * | p = NULL |
) | throw () [inline, explicit] |
auto_vec< T >::auto_vec | ( | auto_vec_ref< element_type > | r | ) | throw () [inline] |
element_type* auto_vec< T >::data | ( | ) | const throw () [inline] |
element_type* auto_vec< T >::get | ( | ) | const throw () [inline] |
auto_vec< T >::operator auto_vec_ref | ( | ) | throw () [inline] |
Definition at line 1074 of file cddefines.h.
References auto_vec< T >::release().
Here is the call graph for this function:
auto_vec& auto_vec< T >::operator= | ( | auto_vec_ref< element_type > | r | ) | throw () [inline] |
Definition at line 1019 of file cddefines.h.
References auto_vec< T >::reset().
Here is the call graph for this function:
element_type& auto_vec< T >::operator[] | ( | ptrdiff_t | n | ) | const throw () [inline] |
element_type* auto_vec< T >::release | ( | ) | throw () [inline] |
Definition at line 1044 of file cddefines.h.
References auto_vec< T >::ptr.
Referenced by auto_vec< T >::operator auto_vec_ref().
void auto_vec< T >::reset | ( | element_type * | p = NULL |
) | throw () [inline] |
Definition at line 1050 of file cddefines.h.
References auto_vec< T >::ptr.
Referenced by auto_vec< T >::operator=().
Definition at line 993 of file cddefines.h.
Referenced by auto_vec< T >::auto_vec(), auto_vec< T >::data(), auto_vec< T >::get(), auto_vec< T >::operator=(), auto_vec< T >::operator[](), auto_vec< T >::release(), auto_vec< T >::reset(), and auto_vec< T >::~auto_vec().