Существует фундаментальная проблема с кодом шаблона, если вы пытаетесь сравнить произвольный тип T
с числовой константой 0, что вы делаете в коде здесь:
T temp;
/* ... */
if(temp != 0){
/* ... */
}
Проблемаздесь T
- произвольный тип (в данном случае вы, кажется, создаете экземпляр шаблона с помощью std::string
), но вы ожидаете, что этот тип будет сопоставим с 0. Это прекрасно - он просто ограничивает T
быть типами, которые можно сравнить с 0 - но из-за того, что вы сообщаете об этом как об ошибке, я не уверен, что вы знаете об этом.
Вы можете либо не создавать экземплярыэтот шаблон с std::string
в качестве аргумента (как он написан, я не думаю, что вы должны это делать, так как похоже, что функция продолжает добавлять значения вместе какого-то типа), или для отладкишаблон и изменить его поведение.Я не совсем уверен, что вы хотите, чтобы код делал, поэтому в последнем случае я не уверен, как я могу помочь.
Надеюсь, это прояснит ситуацию!