[PATCH] Instantiate static constexpr member function of a local struct in a function template earlier.

Richard Smith richard at metafoo.co.uk
Tue Apr 28 17:33:38 PDT 2015

One of our buildbots seems unhappy:


Its testcase is this:

      template <typename T> struct C {
        void f(int) {
          struct I { void g(T) { int x; } } i; i.g(42);
      template struct C<int>;

It looks like the problem is some interaction of your patch and delayed
template parsing (running the above code through clang with
-fdelayed-template-parsing reproduces the issue). Can you take a look?

On Tue, Apr 28, 2015 at 5:23 PM, Michael Park <mcypark at gmail.com> wrote:

> Awesome, Thanks Richard!
> On 28 April 2015 at 20:11, Richard Smith <richard at metafoo.co.uk> wrote:
>> On Tue, Apr 28, 2015 at 4:00 PM, Michael Park <mcypark at gmail.com> wrote:
>>> The answer is that we don't really know. It would be more consistent
>>>> with the non-template case for it to be ill-formed (it also seems
>>>> reasonable to say that you can't instantiate a member function until its
>>>> class is complete), but the point of instantiation rules for constexpr
>>>> functions aren't settled yet; this is part of DR1581 (still open).
>>> Agreed. Thanks for the pointer to DR1581!
>>> LGTM
>>> As this is my first patch for Clang, I'm not all that familiar with the
>>> required process to get this patch committed. Am I required to do anything
>>> further on my end?
>> I've committed your patch as r236063. Feel free to go ahead and
>> mark PR20625 as fixed. Thanks!
>>> Thanks,
>>> MPark.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150428/76a2ee35/attachment.html>

More information about the cfe-commits mailing list