https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78511
Bug ID: 78511 Summary: ICE on using concept name as a "requires" parameter Product: gcc Version: c++-concepts Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugzilla at minijackson dot 33mail.com Target Milestone: --- GCC version and system: gcc (Gentoo 6.2.0-r1 p1.1) 6.2.0 Compilation options: -altivec -awt -cilk cxx -debug -doc -fixed-point fortran gcj -go -graphite -hardened -jit -libssp -mpx multilib nls nptl -objc -objc++ -objc-gc openmp pch -pie -regression-test sanitize -ssp -vanilla vtv Example program (test.cpp): template <typename T> concept bool A = true; template <typename T> concept bool B = requires(A a) { a; } Command line: g++ -fconcepts -std=c++1z test.cpp Error: test.cpp:5:27: internal compiler error: in synthesize_implicit_template_parm, at cp/parser.c:37866 concept bool B = requires(A a) { ^ test.ii generated file: # 1 "test.cpp" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "test.cpp" template <typename T> concept bool A = true; template <typename T> concept bool B = requires(A a) { a; }