https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99374

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The change (and the reason it works pre-C++17) is noexcept being part of the
type. Apparently G++ thinks the implicit conversion from R (C::*)() noexcept to
R(C::*)() depends on C being complete.

So it has nothing to do with conditional expressions and can be reduced to:

struct S;
using F1 = int (S::*)();
using F2 = int (S::*)() noexcept;
F1 f1 = F2();

Reply via email to