
Hi, the following code does not compile: #include <boost/preprocessor/if.hpp> #include <boost/preprocessor/comma.hpp> #include <boost/type_traits/is_convertible.hpp> #include <iostream> class A {}; int main(void) { BOOST_PP_IIF(boost::is_convertible<A BOOST_PP_COMMA() A>::value, // condition std::cout << "ifbranch";, // then std::cout << "elsebranch";); // else return 0; } With gcc, it gives the following errors: tst.cc:9:30: error: macro "BOOST_PP_IIF_I" passed 4 arguments, but takes just 3 tst.cc: In function int main(): tst.cc:7: error: BOOST_PP_IIF_I was not declared in this scope I would have expected that BOOST_PP_COMMA() has just been provided to deal with cases like this! I'm just new to Boost, so my apologies if I have overseen something obvious. Thanks for any help, Christof