/* ----------------------------------------------------------------------- */ // #include #define __GNUC__ 4 // #define __BORLANDC__ 3 #ifndef __BORLANDC__ #define __BORLANDC___WORKAROUND_GUARD 1 #else #define __BORLANDC___WORKAROUND_GUARD 0 #endif #ifndef __GNUC__ #define __GNUC___WORKAROUND_GUARD 1 #else #define __GNUC___WORKAROUND_GUARD 0 #endif # define BOOST_WORKAROUND(symbol, test) \ ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \ (symbol != 0) && (1 % (( (symbol test) ) + 1))) /* ----------------------------------------------------------------------- */ #define NECO(N) (N==1) #if BOOST_WORKAROUND(__GNUC__, <= 3) // Branch 1 #elif BOOST_WORKAROUND(__GNUC__, <= 2) // Branch 3 #elif BOOST_WORKAROUND(__GNUC__, <= 4) // Branch 4 #else // Branch 5 #endif struct AUX_WRAPPER_NAME { #if BOOST_WORKAROUND(__GNUC__, <= 3) private: int branch_1; #elif BOOST_WORKAROUND(__GNUC__, <= 7) private: int branch_2; #else private: int branch_3; #endif }; /* ----------------------------------------------------------------------- */ #if BOOST_WORKAROUND(__BORLANDC__, <= 3) bool b3; #endif #if BOOST_WORKAROUND(__GNUC__, <= 3) bool g3; #endif #if BOOST_WORKAROUND(__GNUC__, <= 4) bool g4; #endif #if BOOST_WORKAROUND(__GNUC__, <= 5) bool g5; #endif /* ----------------------------------------------------------------------- */ #if BOOST_WORKAROUND(__GNUC__, < 3) \ || BOOST_WORKAROUND(__MWERKS__, <= 0x3001) # define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr) #else # define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast(expr) #endif /* ----------------------------------------------------------------------- */ #define NECO(n) (n == 1) #if NECO(1) // #define NIC(n) (n == 2) #endif #if NECO(1) // Branch 1 #elif NIC(2) // Branch 2 #else // Branch 3 #endif /* ----------------------------------------------------------------------- */ /* #define M(symbol, test) symbol ## test #define B M (C, D) #define BB B int g = M (__GNUC__,<3); int t = M (__BORLANDC__,<3); int b1 = B; int b2 = BB; #if M (__GNUC__, <= 3) int mensi_nebo_rovno; #else int vetsi; #endif */