On Sun, Sep 4, 2011 at 9:29 PM, Jason Merrill <ja...@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 -- H.J.