/*! @file @id $Id$ */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 #ifndef __MRW__CHECKCXX11__ #define __MRW__CHECKCXX11__ // check if code is compiled with a new C++11 compiler // otherwise there is a fallback wich makes everything much more compliacted # ifndef MRW__OLD_PRE11_COMPILER # if __cplusplus < 201103L /// Code is compiled with an old non C++11 standard compliant compiler /** There are workarounds for old non C++11 compatible compilers. These workarounds are deprecated, but will remain until most compilers fully support C++11. So this workaround will be removed in future releases, when support for C++11 is more common. Only rely on this workaround, if you really have to. */ # define MRW__OLD_PRE11_COMPILER # warning you need a C++11 compliant compiler, on gcc use option -std=c++11 # warning emulating C++11 - this changes the way you use the library # warning this is deprecated and will be removed in future releases # warning refere to the library documentation for more details # endif # endif # if __cplusplus==1 // __cplusplus==1 is a known bug in gcc 4.6.3 # warning your compiler has a know bug, please upgrade to gcc >= 4.7 # warning see __cplusplus in http://gcc.gnu.org/gcc-4.7/changes.html # ifdef __linux__ # undef MRW__OLD_PRE11_COMPILER # endif # endif # ifdef MRW__OLD_PRE11_COMPILER # if __cplusplus<200300L # include namespace std { // there is no std::shared_ptr in pre C++11 compilers, so we use the // one from the boost library as a 1:1 replacement template class shared_ptr: public boost::shared_ptr { public: explicit shared_ptr(): boost::shared_ptr() {} explicit shared_ptr(T* p): boost::shared_ptr(p) {} }; }; # endif # endif #endif