annotate gcc/testsuite/g++.dg/torture/pr46383.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-do compile }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
2 // { dg-additional-options "-Wno-return-type" }
111
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 namespace std {
kono
parents:
diff changeset
5 template<class,class>struct pair{};
kono
parents:
diff changeset
6 template<typename _Tp> struct _Vector_base {
kono
parents:
diff changeset
7 struct _Vector_impl
kono
parents:
diff changeset
8 {
kono
parents:
diff changeset
9 _Tp* _M_start;
kono
parents:
diff changeset
10 _Tp* _M_finish;
kono
parents:
diff changeset
11 _Tp* _M_end_of_storage;
kono
parents:
diff changeset
12 };
kono
parents:
diff changeset
13 _Vector_impl _M_impl;
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15 template<typename _Tp >
kono
parents:
diff changeset
16 struct vector : _Vector_base<_Tp>
kono
parents:
diff changeset
17 {
kono
parents:
diff changeset
18 vector(const vector& __x);
kono
parents:
diff changeset
19 };
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21 namespace boost {
kono
parents:
diff changeset
22 struct G{};
kono
parents:
diff changeset
23 template <class T, class U >
kono
parents:
diff changeset
24 struct modable2
kono
parents:
diff changeset
25 : G
kono
parents:
diff changeset
26 { };
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28 namespace CGAL {
kono
parents:
diff changeset
29 struct Rep { };
kono
parents:
diff changeset
30 struct Handle
kono
parents:
diff changeset
31 {
kono
parents:
diff changeset
32 Handle() ;
kono
parents:
diff changeset
33 Handle(const Handle& x) ;
kono
parents:
diff changeset
34 Rep* PTR;
kono
parents:
diff changeset
35 };
kono
parents:
diff changeset
36 template <typename ET_> class Lazy_exact_nt
kono
parents:
diff changeset
37 : Handle
kono
parents:
diff changeset
38 , boost::modable2< Lazy_exact_nt<ET_>, int >
kono
parents:
diff changeset
39 , boost::modable2< Lazy_exact_nt<ET_>, double >
kono
parents:
diff changeset
40 { };
kono
parents:
diff changeset
41 struct CC_iterator { };
kono
parents:
diff changeset
42 struct Triangulation_data_structure_3 {
kono
parents:
diff changeset
43 typedef CC_iterator Vertex_handle;
kono
parents:
diff changeset
44 typedef CC_iterator Cell_handle;
kono
parents:
diff changeset
45 typedef std::pair<Cell_handle, int> Facet;
kono
parents:
diff changeset
46 };
kono
parents:
diff changeset
47 template < class GT, class Tds_ > struct Triangulation_3 {
kono
parents:
diff changeset
48 typedef Tds_ Tds;
kono
parents:
diff changeset
49 typedef typename GT::Point_3 Point;
kono
parents:
diff changeset
50 typedef typename Tds::Facet Facet;
kono
parents:
diff changeset
51 typedef typename Tds::Vertex_handle Vertex_handle;
kono
parents:
diff changeset
52 enum Locate_type { VERTEX=0, EDGE, FACET, CELL, OUTSIDE_CONVEX_HULL, OUTSIDE_AFFINE_HULL };
kono
parents:
diff changeset
53 Tds _tds;
kono
parents:
diff changeset
54 bool is_infinite(const Facet & f) const ;
kono
parents:
diff changeset
55 };
kono
parents:
diff changeset
56 template < class Gt, class Tds_ > struct Delaunay_triangulation_3 : public Triangulation_3<Gt, Tds_> { };
kono
parents:
diff changeset
57 namespace Surface_mesher { enum Verbose_flag { VERBOSE, NOT_VERBOSE }; }
kono
parents:
diff changeset
58 enum Mesher_level_conflict_status { NO_CONFLICT = 0, CONFLICT_BUT_ELEMENT_CAN_BE_RECONSIDERED, CONFLICT_AND_ELEMENT_SHOULD_BE_DROPPED };
kono
parents:
diff changeset
59 struct Null_mesher_level {
kono
parents:
diff changeset
60 template <typename P, typename Z> Mesher_level_conflict_status test_point_conflict_from_superior(P, Z) ;
kono
parents:
diff changeset
61 };
kono
parents:
diff changeset
62 template < class Tr, class Derived, class Element, class Previous, class Triangulation_traits > struct Mesher_level {
kono
parents:
diff changeset
63 typedef Tr Triangulation;
kono
parents:
diff changeset
64 typedef typename Triangulation::Point Point;
kono
parents:
diff changeset
65 typedef typename Triangulation::Vertex_handle Vertex_handle;
kono
parents:
diff changeset
66 typedef typename Triangulation_traits::Zone Zone;
kono
parents:
diff changeset
67 typedef Previous Previous_level;
kono
parents:
diff changeset
68 Derived& derived() { return static_cast<Derived&>(*this); }
kono
parents:
diff changeset
69 Previous& previous_level;
kono
parents:
diff changeset
70 Mesher_level(Previous_level& previous)
kono
parents:
diff changeset
71 : previous_level(previous)
kono
parents:
diff changeset
72 { }
kono
parents:
diff changeset
73 Vertex_handle insert(Point p, Zone& z) ; // { dg-warning "used but never defined" }
kono
parents:
diff changeset
74 Zone conflicts_zone(const Point& p, Element e) ; // { dg-warning "used but never defined" }
kono
parents:
diff changeset
75 Element get_next_element() ; // { dg-warning "used but never defined" }
kono
parents:
diff changeset
76 template <class Mesh_visitor> void before_insertion(Element& e, const Point& p, Zone& zone, Mesh_visitor visitor) {
kono
parents:
diff changeset
77 visitor.before_insertion(e, p, zone);
kono
parents:
diff changeset
78 }
kono
parents:
diff changeset
79 template <class Mesh_visitor> void after_insertion(Vertex_handle vh, Mesh_visitor visitor) {
kono
parents:
diff changeset
80 derived().after_insertion_impl(vh);
kono
parents:
diff changeset
81 }
kono
parents:
diff changeset
82 template <class Mesh_visitor> void after_no_insertion(const Element& e, const Point& p, Zone& zone, Mesh_visitor visitor) {
kono
parents:
diff changeset
83 visitor.after_no_insertion(e, p, zone);
kono
parents:
diff changeset
84 }
kono
parents:
diff changeset
85 template <class Mesh_visitor> void refine(Mesh_visitor visitor)
kono
parents:
diff changeset
86 {
kono
parents:
diff changeset
87 Element e = get_next_element();
kono
parents:
diff changeset
88 const Mesher_level_conflict_status result = try_to_refine_element(e, visitor);
kono
parents:
diff changeset
89 }
kono
parents:
diff changeset
90 template <class Mesh_visitor> Mesher_level_conflict_status try_to_refine_element(Element e, Mesh_visitor visitor)
kono
parents:
diff changeset
91 {
kono
parents:
diff changeset
92 Point p ;
kono
parents:
diff changeset
93 Zone zone = conflicts_zone(p, e);
kono
parents:
diff changeset
94 const Mesher_level_conflict_status result = test_point_conflict(p, zone);
kono
parents:
diff changeset
95 before_insertion(e, p, zone, visitor);
kono
parents:
diff changeset
96 Vertex_handle v = insert(p, zone);
kono
parents:
diff changeset
97 after_insertion(v, visitor);
kono
parents:
diff changeset
98 after_no_insertion(e, p, zone, visitor);
kono
parents:
diff changeset
99 }
kono
parents:
diff changeset
100 Mesher_level_conflict_status test_point_conflict(const Point& p, Zone& zone)
kono
parents:
diff changeset
101 {
kono
parents:
diff changeset
102 return previous_level.test_point_conflict_from_superior(p, zone);
kono
parents:
diff changeset
103 }
kono
parents:
diff changeset
104 };
kono
parents:
diff changeset
105 struct Null_mesh_visitor {
kono
parents:
diff changeset
106 template <typename E, typename P, typename Z> void before_insertion(E, P, Z) const {}
kono
parents:
diff changeset
107 template <typename E, typename P, typename Z> void after_no_insertion(E, P, Z) const {}
kono
parents:
diff changeset
108 };
kono
parents:
diff changeset
109 template <class Tr> struct Triangulation_ref_impl {
kono
parents:
diff changeset
110 Triangulation_ref_impl(Tr& t);
kono
parents:
diff changeset
111 };
kono
parents:
diff changeset
112 template <typename Tr> struct Triangulation_mesher_level_traits_3
kono
parents:
diff changeset
113 : public Triangulation_ref_impl<Tr>
kono
parents:
diff changeset
114 {
kono
parents:
diff changeset
115 typedef typename Tr::Facet Facet;
kono
parents:
diff changeset
116 Triangulation_mesher_level_traits_3(Tr& t)
kono
parents:
diff changeset
117 : Triangulation_ref_impl<Tr>(t)
kono
parents:
diff changeset
118 { }
kono
parents:
diff changeset
119 struct Zone {
kono
parents:
diff changeset
120 typedef std::vector<int*> Cells;
kono
parents:
diff changeset
121 typedef std::vector<Facet> Facets;
kono
parents:
diff changeset
122 typedef typename Tr::Locate_type Locate_type;
kono
parents:
diff changeset
123 Locate_type locate_type;
kono
parents:
diff changeset
124 Cells cells;
kono
parents:
diff changeset
125 Facets boundary_facets;
kono
parents:
diff changeset
126 Facets internal_facets;
kono
parents:
diff changeset
127 };
kono
parents:
diff changeset
128 };
kono
parents:
diff changeset
129 namespace Surface_mesher {
kono
parents:
diff changeset
130 namespace details {
kono
parents:
diff changeset
131 template <typename Base> struct Triangulation_generator {
kono
parents:
diff changeset
132 typedef typename Base::Complex_2_in_triangulation_3 C2T3;
kono
parents:
diff changeset
133 typedef typename C2T3::Triangulation Triangulation;
kono
parents:
diff changeset
134 typedef Triangulation Type;
kono
parents:
diff changeset
135 typedef Type type;
kono
parents:
diff changeset
136 };
kono
parents:
diff changeset
137 template <typename Base> struct Facet_generator {
kono
parents:
diff changeset
138 typedef typename Triangulation_generator<Base>::type Tr;
kono
parents:
diff changeset
139 typedef typename Tr::Facet Type;
kono
parents:
diff changeset
140 typedef Type type;
kono
parents:
diff changeset
141 };
kono
parents:
diff changeset
142 template <typename Base, typename Self, typename Element, typename PreviousLevel = Null_mesher_level> struct Mesher_level_generator {
kono
parents:
diff changeset
143 typedef typename Base::Complex_2_in_triangulation_3 C2T3;
kono
parents:
diff changeset
144 typedef typename C2T3::Triangulation Triangulation;
kono
parents:
diff changeset
145 typedef Triangulation_mesher_level_traits_3<Triangulation> Tr_m_l_traits_3;
kono
parents:
diff changeset
146 typedef Mesher_level <Triangulation, Self, Element, PreviousLevel, Tr_m_l_traits_3> Type;
kono
parents:
diff changeset
147 };
kono
parents:
diff changeset
148 }
kono
parents:
diff changeset
149 template < class C2T3, class Surface_, class SurfaceMeshTraits, class Criteria_ > struct Surface_mesher_base
kono
parents:
diff changeset
150 : public Triangulation_mesher_level_traits_3<typename C2T3::Triangulation>
kono
parents:
diff changeset
151 {
kono
parents:
diff changeset
152 typedef C2T3 Complex_2_in_triangulation_3;
kono
parents:
diff changeset
153 typedef Surface_ Surface;
kono
parents:
diff changeset
154 typedef SurfaceMeshTraits Surface_mesh_traits;
kono
parents:
diff changeset
155 typedef Criteria_ Criteria;
kono
parents:
diff changeset
156 typedef typename C2T3::Triangulation Tr;
kono
parents:
diff changeset
157 typedef typename Tr::Vertex_handle Vertex_handle;
kono
parents:
diff changeset
158 typedef typename Tr::Facet Facet;
kono
parents:
diff changeset
159 Surface_mesher_base (C2T3& co, const Surface& s, const Surface_mesh_traits& mesh_traits, const Criteria& c)
kono
parents:
diff changeset
160 : Triangulation_mesher_level_traits_3<Tr>(co.triangulation()), c2t3(co), tr(co.triangulation()), surf(s), meshtraits(mesh_traits), criteria(c)
kono
parents:
diff changeset
161 { }
kono
parents:
diff changeset
162 C2T3& c2t3;
kono
parents:
diff changeset
163 Tr& tr;
kono
parents:
diff changeset
164 const Surface& surf;
kono
parents:
diff changeset
165 const Surface_mesh_traits& meshtraits;
kono
parents:
diff changeset
166 const Criteria& criteria;
kono
parents:
diff changeset
167 void after_insertion_impl(const Vertex_handle& v) {
kono
parents:
diff changeset
168 after_insertion_handle_opposite_facet (Facet ());
kono
parents:
diff changeset
169 after_insertion_handle_incident_facet (Facet ());
kono
parents:
diff changeset
170 }
kono
parents:
diff changeset
171 void after_insertion_handle_incident_facet (const Facet& f) {
kono
parents:
diff changeset
172 tr.is_infinite(f) ;
kono
parents:
diff changeset
173 new_facet<false>(f);
kono
parents:
diff changeset
174 }
kono
parents:
diff changeset
175 template <bool remove_from_complex_if_not_in_restricted_Delaunay> void new_facet (const Facet& f) ; // { dg-warning "used but never defined" }
kono
parents:
diff changeset
176 void after_insertion_handle_opposite_facet (const Facet& f) {
kono
parents:
diff changeset
177 after_insertion_handle_incident_facet (f);
kono
parents:
diff changeset
178 }
kono
parents:
diff changeset
179 };
kono
parents:
diff changeset
180 template < typename Base, typename Element = typename details::Facet_generator<Base>::type, typename PreviousLevel = Null_mesher_level, Verbose_flag verbose = NOT_VERBOSE > struct Surface_mesher
kono
parents:
diff changeset
181 : public Base , public details::Mesher_level_generator< Base, Surface_mesher<Base, Element, PreviousLevel, verbose>, Element, PreviousLevel >::Type
kono
parents:
diff changeset
182 {
kono
parents:
diff changeset
183 typedef typename Base::Complex_2_in_triangulation_3 C2T3;
kono
parents:
diff changeset
184 typedef typename Base::Surface Surface;
kono
parents:
diff changeset
185 typedef typename Base::Criteria Criteria;
kono
parents:
diff changeset
186 typedef typename Base::Surface_mesh_traits Surface_mesh_traits;
kono
parents:
diff changeset
187 typedef typename details::Mesher_level_generator< Base, Surface_mesher<Base, Element, PreviousLevel, verbose>, Element, PreviousLevel >::Type Mesher_lvl;
kono
parents:
diff changeset
188 using Mesher_lvl::refine;
kono
parents:
diff changeset
189 Null_mesher_level null_mesher_level;
kono
parents:
diff changeset
190 Null_mesh_visitor null_visitor;
kono
parents:
diff changeset
191 bool initialized;
kono
parents:
diff changeset
192 Surface_mesher(C2T3& c2t3, const Surface& surface, const Surface_mesh_traits& mesh_traits, const Criteria& criteria)
kono
parents:
diff changeset
193 : Base(c2t3, surface, mesh_traits, criteria), Mesher_lvl(null_mesher_level), initialized(false)
kono
parents:
diff changeset
194 { }
kono
parents:
diff changeset
195 void refine_mesh () {
kono
parents:
diff changeset
196 refine(null_visitor);
kono
parents:
diff changeset
197 }
kono
parents:
diff changeset
198 };
kono
parents:
diff changeset
199 }
kono
parents:
diff changeset
200 template <typename Surface> struct Surface_mesh_traits_generator_3 {
kono
parents:
diff changeset
201 typedef typename Surface::Surface_mesher_traits_3 Type;
kono
parents:
diff changeset
202 typedef Type type;
kono
parents:
diff changeset
203 };
kono
parents:
diff changeset
204 template < class Tr, typename Edge_info_ = void > struct Complex_2_in_triangulation_3 {
kono
parents:
diff changeset
205 typedef Tr Triangulation;
kono
parents:
diff changeset
206 Triangulation& triangulation();
kono
parents:
diff changeset
207 };
kono
parents:
diff changeset
208 template <class Tr> struct Surface_mesh_complex_2_in_triangulation_3
kono
parents:
diff changeset
209 : public Complex_2_in_triangulation_3<Tr>
kono
parents:
diff changeset
210 { };
kono
parents:
diff changeset
211 struct Non_manifold_tag {};
kono
parents:
diff changeset
212 template < typename C2T3, typename SurfaceMeshTraits_3, typename Criteria, typename Tag > struct Make_surface_mesh_helper {
kono
parents:
diff changeset
213 typedef Surface_mesher::Surface_mesher_base< C2T3, typename SurfaceMeshTraits_3::Surface_3, SurfaceMeshTraits_3, Criteria> Mesher_base;
kono
parents:
diff changeset
214 };
kono
parents:
diff changeset
215 template <typename C2T3, typename SurfaceMeshTraits_3, typename Criteria, typename Tag, Surface_mesher::Verbose_flag verbosity = Surface_mesher::NOT_VERBOSE > struct Surface_mesher_generator {
kono
parents:
diff changeset
216 typedef typename Make_surface_mesh_helper< C2T3, SurfaceMeshTraits_3, Criteria, Tag>::Mesher_base Mesher_base;
kono
parents:
diff changeset
217 typedef Surface_mesher::Surface_mesher< Mesher_base, typename Surface_mesher::details::Facet_generator<Mesher_base>::type, Null_mesher_level, verbosity> Mesher;
kono
parents:
diff changeset
218 typedef Mesher type;
kono
parents:
diff changeset
219 };
kono
parents:
diff changeset
220 template <typename C2T3, typename SurfaceMeshTraits_3, typename Criteria> void make_surface_mesh(C2T3& c2t3, const typename SurfaceMeshTraits_3::Surface_3& surface, const SurfaceMeshTraits_3& surface_mesh_traits, const Criteria& criteria) {
kono
parents:
diff changeset
221 typedef typename Surface_mesher_generator< C2T3, SurfaceMeshTraits_3, Criteria, Non_manifold_tag, Surface_mesher::NOT_VERBOSE >::type Mesher;
kono
parents:
diff changeset
222 Mesher mesher(c2t3, surface, surface_mesh_traits, criteria);
kono
parents:
diff changeset
223 mesher.refine_mesh();
kono
parents:
diff changeset
224 }
kono
parents:
diff changeset
225 template <class Kernel> struct Surface_mesh_triangulation_generator_3 {
kono
parents:
diff changeset
226 typedef CGAL::Triangulation_data_structure_3 Tds;
kono
parents:
diff changeset
227 typedef CGAL::Delaunay_triangulation_3<Kernel, Tds> Type;
kono
parents:
diff changeset
228 };
kono
parents:
diff changeset
229 namespace Surface_mesher {
kono
parents:
diff changeset
230 namespace { struct Return_min { }; }
kono
parents:
diff changeset
231 template < class GT, class Surface, class Unused = Return_min > struct Implicit_surface_oracle_3 {
kono
parents:
diff changeset
232 typedef Surface Surface_3;
kono
parents:
diff changeset
233 };
kono
parents:
diff changeset
234 }
kono
parents:
diff changeset
235 template< typename GT> struct Implicit_surface_3 {
kono
parents:
diff changeset
236 typedef GT Geom_traits;
kono
parents:
diff changeset
237 typedef Implicit_surface_3<Geom_traits > Self;
kono
parents:
diff changeset
238 typedef Surface_mesher::Implicit_surface_oracle_3< Geom_traits, Self> Surface_mesher_traits_3;
kono
parents:
diff changeset
239 };
kono
parents:
diff changeset
240 }
kono
parents:
diff changeset
241 struct K {
kono
parents:
diff changeset
242 struct Point_3 {
kono
parents:
diff changeset
243 CGAL::Lazy_exact_nt<double> a[3];
kono
parents:
diff changeset
244 };
kono
parents:
diff changeset
245 };
kono
parents:
diff changeset
246 typedef CGAL::Surface_mesh_triangulation_generator_3<K>::Type Tr;
kono
parents:
diff changeset
247 typedef CGAL::Surface_mesh_complex_2_in_triangulation_3<Tr> C2T3;
kono
parents:
diff changeset
248 typedef CGAL::Implicit_surface_3<K > Surface;
kono
parents:
diff changeset
249 typedef CGAL::Surface_mesh_traits_generator_3<Surface>::type Traits;
kono
parents:
diff changeset
250 void f() {
kono
parents:
diff changeset
251 C2T3 c2t3 ;
kono
parents:
diff changeset
252 CGAL::make_surface_mesh(c2t3, Surface(), Traits(), 3);
kono
parents:
diff changeset
253 }