forked from bartvdbraak/blender
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.
This commit is contained in:
parent
7ae9227794
commit
3f5b295084
@ -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 */
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user