次のように BOOST_PP_VARIADIC_SIZE をテストしています。
#include <boost/preprocessor.hpp>
#define PORT_HOST A,B
#define PORT_ADDR 1,2,3,4
#define VAR_DATA x, y, z
BOOST_PP_VARIADIC_SIZE(VAR_DATA)
これは、展開後に得られるものです。
BOOST_PP_VARIADIC_SIZE(x, y, z)
しかし、私がこれを行うと:
#define SEQ (B)(O)(O)(S)(T)
BOOST_PP_SEQ_ENUM(SEQ) // expands to B, O, O, S, T
展開後、次のようになります。
B, O, O, S, T
私は Mac OS で最新の clang を使用しています。g++ でも同じ結果が得られます。
ここで何が起こっているのだろうと思います。variadic boost プリプロセッサが正しく展開されない理由。ブースト1.49.0を使用しています