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