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;
| ^
```