Рассмотрим следующий код:
template <unsigned int N>
struct myclass
{
unsigned int f() {return N;}
unsigned int g() {static_assert(N > 0, ""); return N-1;}
};
Вопрос: У меня есть гарантия, что следующий код будет скомпилирован:
myclass<0> c;
c.f();
Но следующее не будет:
myclass<0> c;
c.f();
c.g();