Предположим есть у нас код:
template <typename T>
struct A
{
T data;
};
int main ()
{
A<int> intData;
A<char> charData;
return 0;
}
На основании этого кода компилятор нам создает два класса c соответствующими членами (int и char) вместо Т. А что происходит с таким кодом:
template <int N>
struct A
{
A() : data(N) {};
int data;
};
int main ()
{
A<1> intData1; // intData1.data = 1;
A<5> intData5; // intData5.data = 5;
return 0;
}
Компилятор здесь тоже будет создавать два типа с static const int = 1 и static const int = 5 соответственно или здесь что то другое происходит? И почему мы не можем для второго примера написать:
static const int = N