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 | |
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')
-rw-r--r-- | source/blender/freestyle/intern/view_map/AutoPtrHelper.h | 21 | ||||
-rw-r--r-- | source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp | 8 |
2 files changed, 9 insertions, 20 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 */ diff --git a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp index 40ab3ada777..c3c43ce6722 100644 --- a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp +++ b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp @@ -2273,10 +2273,10 @@ void ViewMapBuilder::ComputeIntersections(ViewMap *ioViewMap, #endif } -struct less_SVertex2D : public binary_function<SVertex *, SVertex *, bool> { +struct less_SVertex2D { real epsilon; - less_SVertex2D(real eps) : binary_function<SVertex *, SVertex *, bool>() + less_SVertex2D(real eps) { epsilon = eps; } @@ -2303,10 +2303,10 @@ struct less_SVertex2D : public binary_function<SVertex *, SVertex *, bool> { typedef Segment<FEdge *, Vec3r> segment; typedef Intersection<segment> intersection; -struct less_Intersection : public binary_function<intersection *, intersection *, bool> { +struct less_Intersection { segment *edge; - less_Intersection(segment *iEdge) : binary_function<intersection *, intersection *, bool>() + less_Intersection(segment *iEdge) { edge = iEdge; } |