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