https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113266
Bug ID: 113266 Summary: GCC rejects static global variable as non type template parameter Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jlame646 at gmail dot com Target Milestone: --- The following valid program is rejected by gcc but accepted by other compilers. https://godbolt.org/z/x1eG9dhc3 ``` #include <iostream> #include <string> template <int& N> void printString() { std::cout << N << std::endl; } int a; static int b; template void printString<a>(); //all accepts this template void printString<b>();//only gcc rejects this int main() { } ``` GCC says: ``` error: the value of 'b' is not usable in a constant expression 14 | template void printString<b>();//only gcc rejects this | ^ <source>:11:12: note: 'int b' is not const 11 | static int b; | ^ ```