https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107939
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Keywords| |needs-bisection Target Milestone|--- |11.4 Summary|Rejects use of `extern |[11/12/13 Regression] |const` variable in a |Rejects use of `extern |template |const` variable in a | |template Last reconfirmed| |2022-11-30 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Replacing auto with int (and adding a message to static_assert), gets you a valid C++14 testcase: ``` struct Q { struct P { const Q* p; }; int n; constexpr P operator()(int) const { return {this}; } }; extern const Q q; #if 1 template<int> constexpr auto p = q(0); static_assert(p<0>.p == &q, ""); #else constexpr auto p = q(0); static_assert(p.p == &q, ""); #endif constexpr Q q = {}; ``` This worked with GCC 10.4.0.