On Wed, 12 Oct 2022, Marek Polacek via Gcc-patches wrote: > +<p> > +The two overload resolutions approach was complicated and quirky, so users > +should transition to the newer model. This change means that code that > +previously didn't compile in C++17 will now compile, for example:</p>
I looked at this recently and am wondering whether there is a word missing: "two overload" -> "two-stage overload"? If so, the patch below addresses that On the way, I changed "[code] will now compile" to "[code] may now compile", since not every code that failed to compile before will now compile (e.g., syntactically incorrect code). What do you think? Gerald diff --git a/htdocs/gcc-13/porting_to.html b/htdocs/gcc-13/porting_to.html index c727d66f..e595e120 100644 --- a/htdocs/gcc-13/porting_to.html +++ b/htdocs/gcc-13/porting_to.html @@ -82,9 +82,10 @@ not in C++17). Then C++23 <a href="https://wg21.link/p2266">P2266</a> removed the fallback overload resolution, and changed the implicit move rules once again.</p> -<p>The two overload resolutions approach was complicated and quirky, so users -should transition to the newer model. This change means that code that -previously didn't compile in C++17 will now compile, for example:</p> +<p>The two-stage overload resolutions approach was complicated and +quirky, so users should transition to the newer model. This change +means that code that previously didn't compile in C++17 may now +compile, for example:</p> <pre><code> struct S1 { S1(S1 &&); };