Как определить количество элементов в tuple`s boost.preprocessor? - PullRequest
0 голосов
/ 01 октября 2010

Как определить количество элементов в boost.preprocessor tuple`s?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2012

Boost 1.49 уже содержит макрос BOOST_PP_TUPLE_SIZE

2 голосов
/ 04 октября 2010

Ты не.Вот почему каждый макрос, который использует кортежи, требует, чтобы вы указали размер кортежа.Вы можете попробовать сделать что-то на основе кортежа 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'

К сожалению, нет другого способа определить размер кортежа, кроме как узнать его или сохранить его.в кортеже известного размера или в списке и т. д.

...