2010-10-01 63 views

回答

2

Boost 1.49已经具有BOOST_PP_TUPLE_SIZE宏

2

你不知道。这就是为什么每个使用元组的宏都需要你指定元组的大小。你可以尝试这样做基于2元组的东西,其中第一个值是第二大小:

#define MyTuple (2,(a,tuple)) 
#define MyTupleSize(S_) BOOST_PP_TUPLE_ELEM(2, 0, S_) 
#define GetMyTuple(S_, I_) BOOST_PP_TUPLE_ELEM(MyTupleSize(S_), I_, BOOST_PP_TUPLE_ELEM(2, 1, S_)) 
MyTupleSize(MyTuple) // this is '2' 
GetMyTuple(MyTuple, 1)// this is 'tuple' 

不幸的是没有办法确定除了知道它或将它保存在一个元组的大小已知大小的元组或在列表中等