@@ -25,6 +25,10 @@ class issue_869;
25
25
26
26
27
27
#line 167 "pure2-last-use.cpp2"
28
+ class cpp2_union ;
29
+
30
+
31
+ #line 175 "pure2-last-use.cpp2"
28
32
class my_string ;
29
33
30
34
@@ -157,6 +161,17 @@ auto issue_888(std::string r, int size) -> void;
157
161
auto draw () -> void;
158
162
159
163
#line 167 "pure2-last-use.cpp2"
164
+ class cpp2_union {
165
+ public: auto destroy () & -> void;
166
+ public: ~cpp2_union () noexcept ;
167
+ public: cpp2_union() = default ;
168
+ public: cpp2_union(cpp2_union const &) = delete ; /* No 'that' constructor, suppress copy */
169
+ public: auto operator =(cpp2_union const &) -> void = delete ;
170
+
171
+
172
+ #line 173 "pure2-last-use.cpp2"
173
+ };
174
+
160
175
class my_string {
161
176
public: std::string string;
162
177
public: std::size_t size {CPP2_UFCS (size)(string)};
@@ -354,10 +369,17 @@ auto draw() -> void{
354
369
static_cast <void >(CPP2_UFCS_MOVE (vertex)((std::move (pos))));
355
370
}
356
371
357
- #line 172 "pure2-last-use.cpp2"
372
+ #line 168 "pure2-last-use.cpp2"
373
+ auto cpp2_union::destroy () & -> void{}
374
+ cpp2_union::~cpp2_union () noexcept {
375
+ // destroy(); FIXME Discarding `this` still moves it here.
376
+ static_cast <void >(std::move ((*this )));
377
+ }
378
+
379
+ #line 180 "pure2-last-use.cpp2"
358
380
auto main (int const argc_, char ** argv_) -> int{
359
381
auto const args = cpp2::make_args (argc_, argv_);
360
- #line 173 "pure2-last-use.cpp2"
382
+ #line 181 "pure2-last-use.cpp2"
361
383
issue_683 (args);
362
384
issue_847_2 (std::vector<std::unique_ptr<int >>());
363
385
}
0 commit comments