diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-06-18 16:18:26 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-06-19 13:02:21 +0300 |
commit | 3f5b29508435dd5ace14e3460fa9f51c46e8c64e (patch) | |
tree | 4f16bc40fadb51aa6ba36da8fc12abc660b5c957 /source/blender/freestyle/intern/view_map/AutoPtrHelper.h | |
parent | 7ae9227794cb68be7af5cc3b10997fca93a2a76a (diff) |
Freestyle: Fix compilation error with C++17
AutoPtr class became a sub-class of unique_ptr with some special magic
to mimic behavior of auto_ptr for copy constructor.
The code was already there, but for some reason visual studio did not
set __cplusplus correctly for some reason.
The other change is remove of binary function usage, which is not
needed in the Freestyle code.
Diffstat (limited to 'source/blender/freestyle/intern/view_map/AutoPtrHelper.h')
-rw-r--r-- | source/blender/freestyle/intern/view_map/AutoPtrHelper.h | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/source/blender/freestyle/intern/view_map/AutoPtrHelper.h b/source/blender/freestyle/intern/view_map/AutoPtrHelper.h index 9da109ab2a6..1a72fe48a2a 100644 --- a/source/blender/freestyle/intern/view_map/AutoPtrHelper.h +++ b/source/blender/freestyle/intern/view_map/AutoPtrHelper.h @@ -26,7 +26,6 @@ namespace Freestyle { -#if __cplusplus > 199711L template<typename T> class AutoPtr : public std::unique_ptr<T> { public: AutoPtr() : std::unique_ptr<T>() @@ -36,26 +35,16 @@ template<typename T> class AutoPtr : public std::unique_ptr<T> { { } - /* TODO(sergey): Is there more clear way to do this? */ + /* Mimmic behavior of legacy auto_ptr. + * Keep implementation as small as possible, hense delete assignment oeprator. */ + template<typename X> AutoPtr(AutoPtr<X> &other) : std::unique_ptr<T>(other.get()) { other.release(); } + + template<typename X> AutoPtr& operator=(AutoPtr<X> & other) = delete; }; -#else -template<typename T> class AutoPtr : public std::auto_ptr<T> { - public: - AutoPtr() : std::auto_ptr<T>() - { - } - AutoPtr(T *ptr) : std::auto_ptr<T>(ptr) - { - } - AutoPtr(std::auto_ptr_ref<T> ref) : std::auto_ptr<T>(ref) - { - } -}; -#endif } /* namespace Freestyle */ |