Pergunta

Como determinar os elementos contam em Boost.Preprocessor tupla?

Foi útil?

Solução

Boost 1.49 já tem Macro Boost_pp_tuple_size

Outras dicas

Você não. É por isso que toda macro que usa tuplas exige que você especifique o tamanho da tupla. Você pode tentar fazer algo com base em uma tupla 2 onde o primeiro valor é o tamanho do segundo:

#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'

Infelizmente, não há como determinar o tamanho de uma tupla além de conhecê -la ou armazená -la em uma tupla de tamanho conhecido ou em uma lista etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top