On 2016.03.25 at 17:29 -0400, Jason Merrill wrote:
> 70353 is a problem with the function-local static declaration of __func__.
> Normally constexpr functions can't have local statics, so this is only an
> issue with __func__.  Meanwhile, core issue 1962 looks like it's going to be
> resolved by changing __func__ et al to be prvalue constants of type const
> char * rather than static local array variables, so implementing that
> proposed resolution also resolves this issue, as well as 62466 which
> complains about the strings not being merged between translation units.
> This patch proceeds from Martin's work last year.
> 
> Tested x86_64-pc-linux-gnu, applying to trunk.

It breaks building Firefox:

trippels@gcc2-power8 places % cat nsNavHistory.ii
struct A {
  template <int N> A(const char (&)[N]);
};
void fn1() { A(__func__); }


trippels@gcc2-power8 places % c++  -c nsNavHistory.ii
nsNavHistory.ii: In function ‘void fn1()’:
nsNavHistory.ii:4:24: error: no matching function for call to ‘A::A(const 
char*&)’
 void fn1() { A(__func__); }
                        ^
nsNavHistory.ii:2:20: note: candidate: template<int N> A::A(const char (&)[N])
   template <int N> A(const char (&)[N]);
                    ^
nsNavHistory.ii:2:20: note:   template argument deduction/substitution failed:
nsNavHistory.ii:4:24: note:   mismatched types ‘const char [N]’ and ‘const 
char*’
 void fn1() { A(__func__); }
                        ^
nsNavHistory.ii:1:8: note: candidate: constexpr A::A(const A&)
 struct A {
        ^
nsNavHistory.ii:1:8: note:   no known conversion for argument 1 from ‘const 
char*’ to ‘const A&’
nsNavHistory.ii:1:8: note: candidate: constexpr A::A(A&&)
nsNavHistory.ii:1:8: note:   no known conversion for argument 1 from ‘const 
char*’ to ‘A&&’

So I'm not sure if your patch is really appropriate at this time.
Maybe waiting until next stage 1 would be better?

-- 
Markus

Reply via email to