diff --git a/include/internal/clara.h b/include/internal/clara.h index fa58da79..a401edd8 100644 --- a/include/internal/clara.h +++ b/include/internal/clara.h @@ -305,6 +305,13 @@ namespace Clara { int position; }; + // NOTE: std::auto_ptr is deprecated in c++11/c++0x +#if defined(__cplusplus) && __cplusplus > 199711L + typedef std::unique_ptr ArgAutoPtr; +#else + typedef std::auto_ptr ArgAutoPtr; +#endif + class ArgBinder { public: template @@ -329,7 +336,7 @@ namespace Clara { else if( m_arg.isAnyPositional() ) { if( m_cl->m_arg.get() ) throw std::logic_error( "Only one unpositional argument can be added" ); - m_cl->m_arg = std::auto_ptr( new Arg( m_arg ) ); + m_cl->m_arg = ArgAutoPtr( new Arg( m_arg ) ); } else m_cl->m_options.push_back( m_arg ); @@ -373,7 +380,7 @@ namespace Clara { m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ) { if( other.m_arg.get() ) - m_arg = std::auto_ptr( new Arg( *other.m_arg ) ); + m_arg = ArgAutoPtr( new Arg( *other.m_arg ) ); } template @@ -543,7 +550,7 @@ namespace Clara { Detail::BoundArgFunction m_boundProcessName; std::vector m_options; std::map m_positionalArgs; - std::auto_ptr m_arg; + ArgAutoPtr m_arg; int m_highestSpecifiedArgPosition; };