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.

Reply via email to