http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58328

Richard Smith <richard-gccbugzilla at metafoo dot co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jason at gcc dot gnu.org,
                   |                            |richard-gccbugzilla@metafoo
                   |                            |.co.uk

--- Comment #3 from Richard Smith <richard-gccbugzilla at metafoo dot co.uk> ---
This is in the area of a core language defect, and IIRC CWG hasn't really
decided which cases should be valid. Clang accepts the code in comment#2 but
rejects the code in comment#0 because, in comment#0, 'A::B::B()' is constexpr,
so Clang triggers the computation of the implicit exception specification of
'A::B::B()' earlier (before the default initializer for 'A::B::y' is parsed).

It seems that g++ more eagerly computes the exception specification for
'A::B::B()'. That seems more in line with the resolution of core issue 1330,
which suggests to me that we should trigger the computation of the exception
specification when we parse the 'B()' expression, so I'm inclined to say that
Clang is in error in accepting the code in comment#2.

Reply via email to