Opened 13 years ago

Last modified 13 years ago

#462 closed defect

Geos does not compile with clang (LLVM) [GeometryFactory.h errors] — at Initial Version

Reported by: vince Owned by: pramsey
Priority: major Milestone: 3.3.1
Component: Build/Install Version: 3.3.0
Severity: Critical Keywords: clang casts GeometryFactory
Cc:

Description

Apparently, g++ does not object to implicit conversions from geos::geom::GeometryCollection * (or other geometry types) to std::auto_ptr<Geometry>, but clang raises an error:

libtool: compile: /Developer/usr/bin/clang++ -DHAVE_CONFIG_H -I. -I../../include -I../../include/geos -I../../include -I/usr/pkg/include -DGEOS_INLINE -pedantic -Wall -ansi -Wno-long-long -pipe -O2 -arch x86_64 -MT ConvexHull.lo -MD -MP -MF .deps/ConvexHull.Tpo -c ConvexHull.cpp -fno-common -DPIC -o .libs/ConvexHull.o

In file included from ConvexHull.cpp:23: ../../include/geos/geom/GeometryFactory.h:323:14: error: no matching conversion for functional-style cast from 'geos::geom::GeometryCollection *' to 'std::auto_ptr<Geometry>'

return std::auto_ptr<Geometry>( createGeometryCollection() );

/usr/include/c++/4.2.1/memory:189:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'element_type *' (aka 'geos::geom::Geometry *')

auto_ptr(element_type* p = 0) throw() : _M_ptr(p) { }

/usr/include/c++/4.2.1/memory:198:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'std::auto_ptr<geos::geom::Geometry> &'

auto_ptr(auto_ptr& a) throw() : _M_ptr(a.release()) { }

/usr/include/c++/4.2.1/memory:348:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'auto_ptr_ref<element_type>'

auto_ptr(auto_ptr_ref<element_type> ref) throw()

/usr/include/c++/4.2.1/memory:211:9: note: candidate template ignored: failed template argument deduction

auto_ptr(auto_ptr<_Tp1>& a) throw() : _M_ptr(a.release()) { }

In file included from ConvexHull.cpp:23: ../../include/geos/geom/GeometryFactory.h:346:14: error: no matching conversion for functional-style cast from 'geos::geom::GeometryCollection *' to 'std::auto_ptr<Geometry>'

return std::auto_ptr<Geometry>( createGeometryCollection(fromGeoms) );

~

/usr/include/c++/4.2.1/memory:189:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'element_type *' (aka 'geos::geom::Geometry *')

auto_ptr(element_type* p = 0) throw() : _M_ptr(p) { }

/usr/include/c++/4.2.1/memory:198:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'std::auto_ptr<geos::geom::Geometry> &'

auto_ptr(auto_ptr& a) throw() : _M_ptr(a.release()) { }

/usr/include/c++/4.2.1/memory:348:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::GeometryCollection *' to 'auto_ptr_ref<element_type>'

auto_ptr(auto_ptr_ref<element_type> ref) throw()

/usr/include/c++/4.2.1/memory:211:9: note: candidate template ignored: failed template argument deduction

auto_ptr(auto_ptr<_Tp1>& a) throw() : _M_ptr(a.release()) { }

In file included from ConvexHull.cpp:23: ../../include/geos/geom/GeometryFactory.h:351:14: error: no matching conversion for functional-style cast from 'geos::geom::MultiPolygon *' to 'std::auto_ptr<Geometry>'

return std::auto_ptr<Geometry>( createMultiPolygon(fromGeoms) );

~

/usr/include/c++/4.2.1/memory:189:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPolygon *' to 'element_type *' (aka 'geos::geom::Geometry *')

auto_ptr(element_type* p = 0) throw() : _M_ptr(p) { }

/usr/include/c++/4.2.1/memory:198:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPolygon *' to 'std::auto_ptr<geos::geom::Geometry> &'

auto_ptr(auto_ptr& a) throw() : _M_ptr(a.release()) { }

/usr/include/c++/4.2.1/memory:348:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPolygon *' to 'auto_ptr_ref<element_type>'

auto_ptr(auto_ptr_ref<element_type> ref) throw()

/usr/include/c++/4.2.1/memory:211:9: note: candidate template ignored: failed template argument deduction

auto_ptr(auto_ptr<_Tp1>& a) throw() : _M_ptr(a.release()) { }

In file included from ConvexHull.cpp:23: ../../include/geos/geom/GeometryFactory.h:353:14: error: no matching conversion for functional-style cast from 'geos::geom::MultiLineString *' to 'std::auto_ptr<Geometry>'

return std::auto_ptr<Geometry>( createMultiLineString(fromGeoms) );

/usr/include/c++/4.2.1/memory:189:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiLineString *' to 'element_type *' (aka 'geos::geom::Geometry *')

auto_ptr(element_type* p = 0) throw() : _M_ptr(p) { }

/usr/include/c++/4.2.1/memory:198:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiLineString *' to 'std::auto_ptr<geos::geom::Geometry> &'

auto_ptr(auto_ptr& a) throw() : _M_ptr(a.release()) { }

/usr/include/c++/4.2.1/memory:348:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiLineString *' to 'auto_ptr_ref<element_type>'

auto_ptr(auto_ptr_ref<element_type> ref) throw()

/usr/include/c++/4.2.1/memory:211:9: note: candidate template ignored: failed template argument deduction

auto_ptr(auto_ptr<_Tp1>& a) throw() : _M_ptr(a.release()) { }

In file included from ConvexHull.cpp:23: ../../include/geos/geom/GeometryFactory.h:355:14: error: no matching conversion for functional-style cast from 'geos::geom::MultiPoint *' to 'std::auto_ptr<Geometry>'

return std::auto_ptr<Geometry>( createMultiPoint(fromGeoms) );

~

/usr/include/c++/4.2.1/memory:189:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPoint *' to 'element_type *' (aka 'geos::geom::Geometry *')

auto_ptr(element_type* p = 0) throw() : _M_ptr(p) { }

/usr/include/c++/4.2.1/memory:198:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPoint *' to 'std::auto_ptr<geos::geom::Geometry> &'

auto_ptr(auto_ptr& a) throw() : _M_ptr(a.release()) { }

/usr/include/c++/4.2.1/memory:348:7: note: candidate constructor not viable: cannot convert argument of incomplete type 'geos::geom::MultiPoint *' to 'auto_ptr_ref<element_type>'

auto_ptr(auto_ptr_ref<element_type> ref) throw()

/usr/include/c++/4.2.1/memory:211:9: note: candidate template ignored: failed template argument deduction

auto_ptr(auto_ptr<_Tp1>& a) throw() : _M_ptr(a.release()) { }

It might be necessary to insert dynamic or static casts.

Change History (0)

Note: See TracTickets for help on using tickets.