@@ -244,7 +244,7 @@ class issue_857 {
244
244
245
245
class issue_857_2 {
246
246
public: std::unique_ptr<int > a;
247
- public: explicit issue_857_2 (auto const & a_);
247
+ public: issue_857_2(auto const & a_);
248
248
249
249
public: auto operator =(auto const & a_) -> issue_857_2& ;
250
250
@@ -257,20 +257,20 @@ extern int gi;
257
257
class issue_857_3 {
258
258
public: std::add_lvalue_reference_t <int > i {gi};
259
259
public: auto f () && -> void;
260
- public: explicit issue_857_3 (auto const & i_);
260
+ public: issue_857_3(auto const & i_);
261
261
262
262
public: auto operator =(auto const & i_) -> issue_857_3& ;
263
- public: explicit issue_857_3 ();
263
+ public: issue_857_3();
264
264
265
265
#line 265 "pure2-last-use.cpp2"
266
266
};
267
267
class issue_857_6 {
268
268
public: auto f () && -> void;
269
269
public: std::add_lvalue_reference_t <int > i {gi};
270
- public: explicit issue_857_6 (auto const & i_);
270
+ public: issue_857_6(auto const & i_);
271
271
272
272
public: auto operator =(auto const & i_) -> issue_857_6& ;
273
- public: explicit issue_857_6 ();
273
+ public: issue_857_6();
274
274
275
275
#line 269 "pure2-last-use.cpp2"
276
276
};
@@ -289,7 +289,7 @@ class issue_857_4 {
289
289
public: std::add_pointer_t <int (int )> g;
290
290
public: move_only_function<int ()> mf;
291
291
public: move_only_function<int (int )> mg;
292
- public: explicit issue_857_4 (auto const & f_, auto const & g_, auto const & mf_, auto const & mg_);
292
+ public: issue_857_4(auto const & f_, auto const & g_, auto const & mf_, auto const & mg_);
293
293
294
294
// h0: (move this) = _ = mf();
295
295
// h1: (move this) = _ = this.mf();
@@ -350,7 +350,7 @@ class issue_857_4 {
350
350
class issue_857_5 {
351
351
public: auto f () && -> void;
352
352
public: std::unique_ptr<int > a;
353
- public: explicit issue_857_5 (auto const & a_);
353
+ public: issue_857_5(auto const & a_);
354
354
355
355
public: auto operator =(auto const & a_) -> issue_857_5& ;
356
356
@@ -363,7 +363,7 @@ class issue_857_7: public issue_857_7_A_as_base, public std::monostate {
363
363
364
364
#line 346 "pure2-last-use.cpp2"
365
365
public: auto F () && -> void;
366
- public: explicit issue_857_7 (auto const & A_);
366
+ public: issue_857_7(auto const & A_);
367
367
368
368
#line 347 "pure2-last-use.cpp2"
369
369
};
@@ -373,7 +373,7 @@ class issue_857_8 {
373
373
public: move_only_function<int ()> b;
374
374
public: std::add_lvalue_reference_t <int > c;
375
375
public: auto d () && -> void;
376
- public: explicit issue_857_8 (auto const & a_, auto const & b_, auto const & c_);
376
+ public: issue_857_8(auto const & a_, auto const & b_, auto const & c_);
377
377
378
378
#line 354 "pure2-last-use.cpp2"
379
379
};
@@ -471,7 +471,7 @@ class cpp2_union {
471
471
class my_string {
472
472
public: std::string string;
473
473
public: std::size_t size {CPP2_UFCS (size)(string)};
474
- public: explicit my_string (auto const & string_, auto const & size_);
474
+ public: my_string(auto const & string_, auto const & size_);
475
475
476
476
#line 855 "pure2-last-use.cpp2"
477
477
};
@@ -506,7 +506,7 @@ int inline constexpr x{ 0 };
506
506
class t {
507
507
public: std::unique_ptr<int > x;
508
508
public: auto operator ()() && -> void;
509
- public: explicit t (auto const & x_);
509
+ public: t(auto const & x_);
510
510
511
511
public: auto operator =(auto const & x_) -> t& ;
512
512
@@ -523,7 +523,7 @@ auto loops_and_captures() -> void;
523
523
#line 984 "pure2-last-use.cpp2"
524
524
class types {
525
525
public: std::unique_ptr<int > x;
526
- public: explicit types (auto const & x_);
526
+ public: types(auto const & x_);
527
527
528
528
public: auto operator =(auto const & x_) -> types& ;
529
529
@@ -738,23 +738,23 @@ auto issue_850() -> void{
738
738
auto issue_857::h () & -> void { f_inout (a); }
739
739
740
740
issue_857_2::issue_857_2 (auto const & a_)
741
- : a{ a_ }{}
741
+ : a{ a_ }{}
742
742
743
743
auto issue_857_2::operator =(auto const & a_) -> issue_857_2& {
744
- a = a_;
745
- return *this ;}
744
+ a = a_;
745
+ return *this ;}
746
746
#line 261 "pure2-last-use.cpp2"
747
747
int gi {0 };
748
748
749
749
#line 264 "pure2-last-use.cpp2"
750
750
auto issue_857_3::f () && -> void { f_inout (cpp2::move (*this ).i ); }
751
751
752
752
issue_857_3::issue_857_3 (auto const & i_)
753
- : i{ i_ }{}
753
+ : i{ i_ }{}
754
754
755
755
auto issue_857_3::operator =(auto const & i_) -> issue_857_3& {
756
- i = i_;
757
- return *this ;}
756
+ i = i_;
757
+ return *this ;}
758
758
issue_857_3::issue_857_3 (){}
759
759
#line 264 "pure2-last-use.cpp2"
760
760
// OK: The implicit `this` is moved, not `i`.
@@ -763,11 +763,11 @@ issue_857_3::issue_857_3(){}
763
763
auto issue_857_6::f () && -> void { f_inout (cpp2::move (*this ).i ); }
764
764
765
765
issue_857_6::issue_857_6 (auto const & i_)
766
- : i{ i_ }{}
766
+ : i{ i_ }{}
767
767
768
768
auto issue_857_6::operator =(auto const & i_) -> issue_857_6& {
769
- i = i_;
770
- return *this ;}
769
+ i = i_;
770
+ return *this ;}
771
771
issue_857_6::issue_857_6 (){}
772
772
#line 267 "pure2-last-use.cpp2"
773
773
// OK: The implicit `this` is moved, not `i`.
@@ -783,34 +783,34 @@ issue_857_6::issue_857_6(){}
783
783
template <typename T> [[nodiscard]] auto move_only_function<T>::operator ()([[maybe_unused]] auto const & ...unnamed_param_2) && -> int { return 0 ; }
784
784
785
785
issue_857_4::issue_857_4 (auto const & f_, auto const & g_, auto const & mf_, auto const & mg_)
786
- : f{ f_ }
787
- , g{ g_ }
788
- , mf{ mf_ }
789
- , mg{ mg_ }{}
786
+ : f{ f_ }
787
+ , g{ g_ }
788
+ , mf{ mf_ }
789
+ , mg{ mg_ }{}
790
790
791
791
#line 339 "pure2-last-use.cpp2"
792
792
auto issue_857_5::f () && -> void { f_copy (std::move (cpp2::move (*this ).a )); }
793
793
794
794
issue_857_5::issue_857_5 (auto const & a_)
795
- : a{ a_ }{}
795
+ : a{ a_ }{}
796
796
797
797
auto issue_857_5::operator =(auto const & a_) -> issue_857_5& {
798
- a = a_;
799
- return *this ;}
798
+ a = a_;
799
+ return *this ;}
800
800
#line 346 "pure2-last-use.cpp2"
801
801
auto issue_857_7::F () && -> void { f_inout (cpp2::move (*this ).A ); }
802
802
803
803
issue_857_7::issue_857_7 (auto const & A_)
804
- : issue_857_7_A_as_base{ A_ }
805
- , std::monostate{ }{}
804
+ : issue_857_7_A_as_base{ A_ }
805
+ , std::monostate{ }{}
806
806
807
807
#line 353 "pure2-last-use.cpp2"
808
808
auto issue_857_8::d () && -> void{}
809
809
810
810
issue_857_8::issue_857_8 (auto const & a_, auto const & b_, auto const & c_)
811
- : a{ a_ }
812
- , b{ b_ }
813
- , c{ c_ }{}
811
+ : a{ a_ }
812
+ , b{ b_ }
813
+ , c{ c_ }{}
814
814
815
815
#line 362 "pure2-last-use.cpp2"
816
816
auto issue_857_9::f2 () && -> void { f_inout (c); }// OK: Happens to work, like non-'move' 'this' parameters.
@@ -1363,8 +1363,8 @@ auto enum_2() -> void{
1363
1363
}
1364
1364
1365
1365
my_string::my_string (auto const & string_, auto const & size_)
1366
- : string{ string_ }
1367
- , size{ size_ }{}
1366
+ : string{ string_ }
1367
+ , size{ size_ }{}
1368
1368
1369
1369
#line 857 "pure2-last-use.cpp2"
1370
1370
[[nodiscard]] auto no_pessimizing_move () -> no_pessimizing_move_ret{
@@ -1454,11 +1454,11 @@ auto f() -> void{
1454
1454
}
1455
1455
1456
1456
t::t (auto const & x_)
1457
- : x{ x_ }{}
1457
+ : x{ x_ }{}
1458
1458
1459
1459
auto t::operator =(auto const & x_) -> t& {
1460
- x = x_;
1461
- return *this ;}
1460
+ x = x_;
1461
+ return *this ;}
1462
1462
#line 940 "pure2-last-use.cpp2"
1463
1463
auto g () -> void{
1464
1464
static_cast <void >([]() mutable -> void {
@@ -1505,11 +1505,11 @@ auto loops_and_captures() -> void{
1505
1505
}
1506
1506
1507
1507
types::types (auto const & x_)
1508
- : x{ x_ }{}
1508
+ : x{ x_ }{}
1509
1509
1510
1510
auto types::operator =(auto const & x_) -> types& {
1511
- x = x_;
1512
- return *this ;}
1511
+ x = x_;
1512
+ return *this ;}
1513
1513
#line 994 "pure2-last-use.cpp2"
1514
1514
auto skip_hidden_names () -> void{
1515
1515
static_cast <void >([]() mutable -> void {
0 commit comments