@@ -244,7 +244,7 @@ class issue_857 {
244244
245245class issue_857_2 {
246246 public: std::unique_ptr<int > a;
247- public: explicit issue_857_2 (auto const & a_);
247+ public: issue_857_2(auto const & a_);
248248
249249public: auto operator =(auto const & a_) -> issue_857_2& ;
250250
@@ -257,20 +257,20 @@ extern int gi;
257257class issue_857_3 {
258258 public: std::add_lvalue_reference_t <int > i {gi};
259259 public: auto f () && -> void;
260- public: explicit issue_857_3 (auto const & i_);
260+ public: issue_857_3(auto const & i_);
261261
262262public: auto operator =(auto const & i_) -> issue_857_3& ;
263- public: explicit issue_857_3 ();
263+ public: issue_857_3();
264264
265265#line 265 "pure2-last-use.cpp2"
266266};
267267class issue_857_6 {
268268 public: auto f () && -> void;
269269 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_);
271271
272272public: auto operator =(auto const & i_) -> issue_857_6& ;
273- public: explicit issue_857_6 ();
273+ public: issue_857_6();
274274
275275#line 269 "pure2-last-use.cpp2"
276276};
@@ -289,7 +289,7 @@ class issue_857_4 {
289289 public: std::add_pointer_t <int (int )> g;
290290 public: move_only_function<int ()> mf;
291291 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_);
293293
294294// h0: (move this) = _ = mf();
295295// h1: (move this) = _ = this.mf();
@@ -350,7 +350,7 @@ class issue_857_4 {
350350class issue_857_5 {
351351 public: auto f () && -> void;
352352 public: std::unique_ptr<int > a;
353- public: explicit issue_857_5 (auto const & a_);
353+ public: issue_857_5(auto const & a_);
354354
355355public: auto operator =(auto const & a_) -> issue_857_5& ;
356356
@@ -363,7 +363,7 @@ class issue_857_7: public issue_857_7_A_as_base, public std::monostate {
363363
364364#line 346 "pure2-last-use.cpp2"
365365 public: auto F () && -> void;
366- public: explicit issue_857_7 (auto const & A_);
366+ public: issue_857_7(auto const & A_);
367367
368368#line 347 "pure2-last-use.cpp2"
369369};
@@ -373,7 +373,7 @@ class issue_857_8 {
373373 public: move_only_function<int ()> b;
374374 public: std::add_lvalue_reference_t <int > c;
375375 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_);
377377
378378#line 354 "pure2-last-use.cpp2"
379379};
@@ -471,7 +471,7 @@ class cpp2_union {
471471class my_string {
472472 public: std::string string;
473473 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_);
475475
476476#line 855 "pure2-last-use.cpp2"
477477};
@@ -506,7 +506,7 @@ int inline constexpr x{ 0 };
506506class t {
507507 public: std::unique_ptr<int > x;
508508 public: auto operator ()() && -> void;
509- public: explicit t (auto const & x_);
509+ public: t(auto const & x_);
510510
511511public: auto operator =(auto const & x_) -> t& ;
512512
@@ -523,7 +523,7 @@ auto loops_and_captures() -> void;
523523#line 984 "pure2-last-use.cpp2"
524524class types {
525525 public: std::unique_ptr<int > x;
526- public: explicit types (auto const & x_);
526+ public: types(auto const & x_);
527527
528528public: auto operator =(auto const & x_) -> types& ;
529529
@@ -738,23 +738,23 @@ auto issue_850() -> void{
738738 auto issue_857::h () & -> void { f_inout (a); }
739739
740740 issue_857_2::issue_857_2 (auto const & a_)
741- : a{ a_ }{}
741+ : a{ a_ }{}
742742
743743auto issue_857_2::operator =(auto const & a_) -> issue_857_2& {
744- a = a_;
745- return *this ;}
744+ a = a_;
745+ return *this ;}
746746#line 261 "pure2-last-use.cpp2"
747747int gi {0 };
748748
749749#line 264 "pure2-last-use.cpp2"
750750 auto issue_857_3::f () && -> void { f_inout (cpp2::move (*this ).i ); }
751751
752752 issue_857_3::issue_857_3 (auto const & i_)
753- : i{ i_ }{}
753+ : i{ i_ }{}
754754
755755auto issue_857_3::operator =(auto const & i_) -> issue_857_3& {
756- i = i_;
757- return *this ;}
756+ i = i_;
757+ return *this ;}
758758issue_857_3::issue_857_3 (){}
759759#line 264 "pure2-last-use.cpp2"
760760 // OK: The implicit `this` is moved, not `i`.
@@ -763,11 +763,11 @@ issue_857_3::issue_857_3(){}
763763 auto issue_857_6::f () && -> void { f_inout (cpp2::move (*this ).i ); }
764764
765765 issue_857_6::issue_857_6 (auto const & i_)
766- : i{ i_ }{}
766+ : i{ i_ }{}
767767
768768auto issue_857_6::operator =(auto const & i_) -> issue_857_6& {
769- i = i_;
770- return *this ;}
769+ i = i_;
770+ return *this ;}
771771issue_857_6::issue_857_6 (){}
772772#line 267 "pure2-last-use.cpp2"
773773 // OK: The implicit `this` is moved, not `i`.
@@ -783,34 +783,34 @@ issue_857_6::issue_857_6(){}
783783 template <typename T> [[nodiscard]] auto move_only_function<T>::operator ()([[maybe_unused]] auto const & ...unnamed_param_2) && -> int { return 0 ; }
784784
785785 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_ }{}
790790
791791#line 339 "pure2-last-use.cpp2"
792792 auto issue_857_5::f () && -> void { f_copy (std::move (cpp2::move (*this ).a )); }
793793
794794 issue_857_5::issue_857_5 (auto const & a_)
795- : a{ a_ }{}
795+ : a{ a_ }{}
796796
797797auto issue_857_5::operator =(auto const & a_) -> issue_857_5& {
798- a = a_;
799- return *this ;}
798+ a = a_;
799+ return *this ;}
800800#line 346 "pure2-last-use.cpp2"
801801 auto issue_857_7::F () && -> void { f_inout (cpp2::move (*this ).A ); }
802802
803803 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{ }{}
806806
807807#line 353 "pure2-last-use.cpp2"
808808 auto issue_857_8::d () && -> void{}
809809
810810 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_ }{}
814814
815815#line 362 "pure2-last-use.cpp2"
816816 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{
13631363 }
13641364
13651365 my_string::my_string (auto const & string_, auto const & size_)
1366- : string{ string_ }
1367- , size{ size_ }{}
1366+ : string{ string_ }
1367+ , size{ size_ }{}
13681368
13691369#line 857 "pure2-last-use.cpp2"
13701370[[nodiscard]] auto no_pessimizing_move () -> no_pessimizing_move_ret{
@@ -1454,11 +1454,11 @@ auto f() -> void{
14541454 }
14551455
14561456 t::t (auto const & x_)
1457- : x{ x_ }{}
1457+ : x{ x_ }{}
14581458
14591459auto t::operator =(auto const & x_) -> t& {
1460- x = x_;
1461- return *this ;}
1460+ x = x_;
1461+ return *this ;}
14621462#line 940 "pure2-last-use.cpp2"
14631463auto g () -> void{
14641464 static_cast <void >([]() mutable -> void {
@@ -1505,11 +1505,11 @@ auto loops_and_captures() -> void{
15051505}
15061506
15071507types::types (auto const & x_)
1508- : x{ x_ }{}
1508+ : x{ x_ }{}
15091509
15101510auto types::operator =(auto const & x_) -> types& {
1511- x = x_;
1512- return *this ;}
1511+ x = x_;
1512+ return *this ;}
15131513#line 994 "pure2-last-use.cpp2"
15141514auto skip_hidden_names () -> void{
15151515 static_cast <void >([]() mutable -> void {
0 commit comments