On 06/01/2012 03:16, Rui Maciel wrote: > On 01/05/2012 04:05 PM, Chow Loong Jin wrote: >> The only macro I can find to do with detecting C++0x is >> __GXX_EXPERIMENTAL_CXX0X__ which is probably not portable. __cplusplus is >> supposed to be defined to a value greater than 199711L, but on my system it >> seems to be defined without a value, defaulting to 1. > After a bit of digging, a bug report has already been filed for this problem. > It was filed in 2001 and it appears to have been fixed in October 2011. Here is > a link to the bug report. > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773 > > So, basically the __cplusplus macro will work with GCC 4.7. Previous releases > will be left broken. Interesting, so for handling gcc something like the following should work, I guess. -----8<----- #if __cplusplus >= 201100L || defined (__GXX_EXPERIMENTAL_CXX0X__) ... #endif ----->8----- But how should we handle MSVC or other compilers? That said, C++98 code could also benefit from this addition since it allows the use of out-of-sigc++ functors. I have managed to amend the implementation to compile with -std=c++98, but it requires BOOST_TYPEOF. Perhaps we could isolate the BOOST_TYPEOF implementation for inclusion into sigc++? -- Kind regards, Loong Jin
Attachment:
signature.asc
Description: OpenPGP digital signature