According to the reference, the name of a non-type template parameter is optional, even when assigning a default value (see (1) and (2)). Therefore these template structs ar
Oh, you can access them!
template struct Foo {}; template int get(Foo) { return N; } int main() { Foo<3> foo; return get(foo); }
This might be a bit contrived. But in general for some templates you don't want to name them and then it is convenient that you don't have to.