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