currently gcc accepts the folowing: ``` template<int &data> struct A {}; static thread_local int b; A<b> a; ``` this is not valid. http://eel.is/c++draft/expr.const#10.2 says if a constant expression is a pointer to an object it should be in static storage. also, compilers(icc, clang, msvc) reject this code https://godbolt.org/z/d47fb9
Confirmed.