https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80805
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-05-17 CC| |marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, 4.9.x rejects the code: pr80805.cpp: In instantiation of ‘g()::<lambda()> [with D = int; X = <type error>]’: pr80805.cpp:12:6: required from ‘struct g() [with D = int]::<lambda()>’ pr80805.cpp:16:7: required from ‘void g() [with D = int]’ pr80805.cpp:18:21: required from here pr80805.cpp:15:18: error: the value of ‘H’ is not usable in a constant expression return X{}; ^ pr80805.cpp:10:27: note: ‘H’ used in its own initializer constexpr static bool H = P<D>::value; ^ pr80805.cpp:15:18: note: in template argument for type ‘bool’ return X{}; ^