2012-01-19 14 views
4

給定一個具體的boost ::元組類型:構建使用另一

的typedef升壓::元組< T1,T2,T3,...,Tn的> Tuple_Tn

其中類型T1 ,... Tn的都被定義,

而且給定類型T_another,我想定義一個新的元組類型:

的typedef提高::元組< T1,T2,T3,...,TN,T_another> Tuple_T_plus_1

但這裏是我的問題:當我要定義它,我只能訪問類型Tuple_Tn和T_another的地方。

換句話說,是否可以根據Tuple_Tn和T_another定義Tuple_T_plus_1?

回答

3

我不確定在Boost.Tuple中有這樣的功能,或許Boost.Fusion會更適合您的需求。

但是,如果你有一個編譯器支持C++ 11可變參數模板,你可以切換到std::tuple和寫一個小元函數,用於附加型到現有的元組:

template <typename Container, typename T> 
struct push_back; 

template <template <typename...> class Container, typename T, typename... Args> 
struct push_back<Container<Args...>, T> 
{ 
    typedef Container<Args..., T> type; 
}; 

typedef std::tuple<int, double> myTuple; 
typedef push_back<myTuple, bool>::type myOtherTuple; 

myOtherTuple(1, 0.0, true); 

同樣的事情可以達到了boost::tuple,但寫起來會更乏味。

+0

是的,可變模板是偉大的。不幸的是VS 2010不支持它。但是,無論如何感謝:) – Lev

相關問題