Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members

pointer_stripper.h

00001 #ifndef s11n_POINTER_STRIPPER_H_INCLUDED
00002 #define s11n_POINTER_STRIPPER_H_INCLUDED 1
00003 
00004 namespace s11n {
00005         /**
00006            Helper class to strip pointers from value_type
00007            typedefs. It's value_type represents T, minus any
00008            leading pointer part.
00009                    
00010            example:
00011 <pre>
00012 typedef pointer_stripper<std::list<int *>::value_type> value_type;
00013 </pre>
00014         value_type is int, not (int *).
00015 
00016         */
00017 
00018         template <typename T>
00019         struct pointer_stripper
00020         {
00021                 /**
00022                    value_type is always equivalent to T.
00023                 */
00024                 typedef T value_type;
00025         };
00026 
00027         /**
00028            Specialization to make (T *) equivalent to
00029            (T).
00030         */
00031         template <typename T>
00032         struct pointer_stripper<T *>
00033         {
00034                 /**
00035                    value_type is always equivalent to T.
00036                 */
00037                 typedef T value_type;
00038         };
00039         template <typename T>
00040         struct pointer_stripper<T &>
00041         {
00042                 /**
00043                    value_type is always equivalent to T.
00044                 */
00045                 typedef T value_type;
00046         };
00047 
00048 }
00049 
00050 #endif // s11n_POINTER_STRIPPER_H_INCLUDED

Generated on Tue Oct 26 18:25:59 2004 for s11n by  doxygen 1.3.9.1