2012-04-18 47 views
1

在我繼續討論之前 - 是否已經有一個類型列表實現或者在boost或使用它的小實現中?到目前爲止我還沒有發現任何有用的東西帶有增強功能的類型列表

我試圖用升壓頁生成各種大小的列表類:

#define BOOST_PP_LOCAL_MACRO(n) \ 
    template< BOOST_PP_ENUM_TRAILING_PARAMS(n, class t) > /*error C2913: explicit specialization; 'typelist1' is not a specialization of a class template*/ \ 
struct typelist##n \ 
{ \ 
    typedef t##n e##n; /*I want n of these*/ \ 
}; 

#define Type_At(list, element) list::e##element 

#define BOOST_PP_LOCAL_LIMITS (1, 5) 

#include BOOST_PP_LOCAL_ITERATE() 

查看評論中的問題的代碼。這是一個體面的方式去做一個類型列表嗎?看來......髒。我只是聽說過一個類型列表的概念,所以我不熟悉不同的風格。

解決方法:

#define BOOST_MPL_LIMIT_VECTOR_SIZE 50 
#include <boost/mpl/vector.hpp> 
#include <boost/mpl/at.hpp> 

typedef boost::mpl::vector<int, float, double, long, short> vecType; 
boost::mpl::at_c<vecType, 3>::type hi = 3; 

回答

2

也許你可以試試boost::mpl::vector(我不太明白你想做什麼)。

如果你可以使用C++ 11,使用variadic模板(這意味着沒有討厭的預處理器的東西)製作一個類型列表要容易得多。

+0

我使用VS2010,所以沒有可變模板:( – David 2012-04-18 11:50:16