Я понимаю, что параметр шаблона, не являющийся типом, должен быть постоянным интегральным выражением. Может кто-нибудь пролить свет, почему это так?
template <std::string temp>
void foo()
{
// ...
}
error C2993: 'std::string' : illegal type for non-type template parameter 'temp'.
Я понимаю, что такое постоянное интегральное выражение. Каковы причины запрета использования непостоянных типов, std::string
как в приведенном выше фрагменте?