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 Jul 20 10:46:48 2004 for s11n by doxygen 1.3.7