00001 00010 #ifndef NUPLE_HH 00011 #define NUPLE_HH 00012 00013 #include"type_list/type_list.hh" 00014 #include"type_list/get_list.hh" 00015 00016 namespace my_lib{ 00017 00028 template<typename TList> 00029 struct Nuple : private Nuple <typename TList::tail> { 00031 typedef typename TList::head val_type; 00032 typedef typename TList::tail tail; 00033 00035 val_type val; 00036 00043 template<unsigned N> 00044 typename type_list::GetType<TList, N>::type& at(); 00045 00053 Nuple<tail>& operator<<(const val_type& t); 00054 }; 00055 00057 template<> 00058 struct Nuple<type_list::NullType> {}; 00059 00060 }//fin my_lib 00061 00062 #include"nuple.hxx" 00063 00064 #endif //NUPLE_HH