C++ 如何确定boost.preprocessor元组中的元素数?

C++ 如何确定boost.preprocessor元组中的元素数?,c++,boost,boost-preprocessor,C++,Boost,Boost Preprocessor,如何确定元组中的元素数?您不知道。这就是为什么每个使用元组的宏都需要指定元组的大小。您可以尝试基于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_E

如何确定元组中的元素数?

您不知道。这就是为什么每个使用元组的宏都需要指定元组的大小。您可以尝试基于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'

不幸的是,除了知道一个元组或将其存储在一个已知大小的元组或列表中等之外,无法确定元组的大小。

您不知道。这就是为什么每个使用元组的宏都需要指定元组的大小。您可以尝试基于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'

不幸的是,除了知道或将其存储在已知大小的元组或列表中等之外,无法确定元组的大小。

Boost 1.49已经有了Boost\u PP\u tuple\u size宏

Boost 1.49已经有了Boost\u PP\u tuple\u size宏