C++ PATCHes for core 1358, 1360, c++/50248 (constexpr, templates, default constructor)

H.J. Lu hjl.tools@gmail.com
Fri Jun 15 03:41:00 GMT 2012


On Mon, Sep 5, 2011 at 12:07 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Sun, Sep 4, 2011 at 9:29 PM, Jason Merrill <jason@redhat.com> wrote:
>> At the Bloomington C++ meeting we discussed some issues with the constexpr
>> specification that the clang team encountered while trying to implement it.
>>  Among the issues was a problem that also came up recently for us as BZ
>> 50248: if the constexpr-ness of a template instantiation depends on its
>> body, we need to instantiate it in order to decide whether or not an
>> implicitly-declared function that uses it is constexpr.  The resolution of
>> DR 1358 is that an instantiation of a constexpr template is constexpr even
>> if it can never produce a constant expression.
>>
>> The second patch is related to DR 1360, where the clang team was complaining
>> that deciding whether or not a class is literal requires the implicit
>> declaration of the default constructor, which they would like to do lazily.
>>  We seem to have agreed that it can be avoided in the cases where doing such
>> is useful, but while looking at this I noticed a bug in our handling of this
>> stuff: the function synthesized_default_constructor_is_constexpr was only
>> right for trivial constructors.  So now I've renamed it accordingly, and
>> force the implicit declaration for the non-trivial case.
>>
>> Tested x86_64-pc-linux-gnu, applying to trunk.
>>
>
> This caused:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50296
>

This also caused:

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

-- 
H.J.



More information about the Gcc-patches mailing list