Low<1> a;
Ваш шаблон класса Low
ожидает TYPE, а не INTEGRAL VALUE!
Если вы хотите использовать этот способ, вы должны определить свой шаблон класса как:
template <int N>
struct Low {};
Это позволяет вам писать Low<1>
, Low<2>
, Low<400>
и т. Д.
Если вы определите Low
как,
template <class T>
struct Low;
Тогда вы 'мы предоставляем тип при его создании.Например, Low<char>
, Low<unsigned int>
и т. Д.
Так что обратите внимание на то, как они определены в каждом конкретном случае, и как они создаются!