對於我使用boost ::元組有點庫項目。現在,我面臨着通過元編程將我操作的「缺點列表」轉回到boost :: tuple < ...>類型的問題。 「髒」的解決方案將提供大量的局部specialications一拉談到的boost ::元組::利弊<...>回相應的boost ::元組<...>
template<class T> struct id{typedef T type;};
template<class TL> struct type_list_to_tuple_type;
template<class T1>
struct type_list_to_tuple_type<
boost::tuples::cons<T1,boost::tuples::null_type>
> : id<boost::tuple<T1> > {}
template<class T1, class T2>
struct type_list_to_tuple_type<
boost::tuples::cons<T1,
boost::tuples::cons<T2,boost::tuples::null_type> >
> : id<boost::tuple<T1,T2> > {}
template<class T1, class T2, class T3>
struct type_list_to_tuple_type<
boost::tuples::cons<T1,
boost::tuples::cons<T2,
boost::tuples::cons<T3,boost::tuples::null_type> > >
> : id<boost::tuple<T1,T2,T3> > {}
...
,但這是繁瑣且容易出錯,尤其是因爲我需要與可能的許多元素的元組的支持。這些元組類型是通過操作符重載自動生成的。如果可能的話,我想避免編寫這麼多的專業化。
如何做到這一點沒有任何 C++ 0x特性的任何想法?我想這是不可能的。但也許我忽略了一些東西。
編輯:其實,我與實驗的C++ 0x的支持才發現,它並沒有正常工作試過這樣:
template<class TPH>
class type_pack_holder_to_tuple_type;
template<class...Types>
class type_pack_holder_to_tuple_type<
type_pack_holder<Types...> >
: id< boost::tuple<Types...> > {};
G ++ 4.5.1說:
sorry, unimplemented: cannot expand 'Types ...' into
a fixed-length argument list
:-(
我只是要去直接使用利弊,謝謝! – sellibitze 2010-10-25 13:38:58