/*! @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 # ifdef MRW__OLD_PRE11_COMPILER # 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(T* p): boost::shared_ptr(p) {} }; }; # endif #endif