/*! @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
# 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
# endif
# ifdef MRW__OLD_PRE11_COMPILER
// __cplusplus==1 is a known bug in gcc 4.6.3
# if __cplusplus<200300L && __cplusplus!=1
# include <boost / shared_ptr.hpp>
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 < typename T > class shared_ptr : public boost : : shared_ptr < T > {
public :
explicit shared_ptr ( ) : boost : : shared_ptr < T > ( ) { }
explicit shared_ptr ( T * p ) : boost : : shared_ptr < T > ( p ) { }
} ;
} ;
# endif
# endif
# endif