https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88977
Bug ID: 88977 Summary: __builtin_is_constant_evaluated() as function template argument causes substitution failure Product: gcc Version: unknown Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ensadc at mailnesia dot com Target Milestone: --- https://wandbox.org/permlink/LYuJZ4w7YLgidqdi ==== template<bool> int f(); int x = f<__builtin_is_constant_evaluated()>(); ==== prog.cc:3:46: error: no matching function for call to 'f<__builtin_is_constant_evaluated()>()' 3 | int x = f<__builtin_is_constant_evaluated()>(); | ^ prog.cc:1:20: note: candidate: 'template<bool <anonymous> > int f()' 1 | template<bool> int f(); | ^ prog.cc:1:20: note: template argument deduction/substitution failed: ==== It works fine with class/variable/alias templates.