LINUX.ORG.RU

История изменений

Исправление MKuznetsov, (текущая версия) :

Если я правильно понимаю, чтобы на шаблонах работало и код был не очень страшным, надо чтобы команда компилировалась после ввода пользователя. Что-то типа eval надо.

шаблонная магия, это когда таблица команд и диспетчер вызова (который по строке ищет и исполняет команду) строятся в компил-тайм, при инстанцировании шаблона. Это будет современный уровень С++, а не как у нас с вами Си-с-классами-и-STL :-) тогда компилятор может инлайнить и оптимизировать команды

художественно-лирическое примечание про скорость (про которую требований не было, но все отчего-то упёрлись и даже слегка пересрались). На фоне сравнений std::string, абсолютно по барабану что использовать map<> или вереницу if. Если бы задача ТС была-бы не учебной и с требованиями по скорости, то в первую очередь избавляться от строк, заменять токенами/литералами/объектами

Исходная версия MKuznetsov, :

Если я правильно понимаю, чтобы на шаблонах работало и код был не очень страшным, надо чтобы команда компилировалась после ввода пользователя. Что-то типа eval надо.

шаблонная магия, это когда таблица команд и диспетчер вызова (который по строке ищет и исполняет команду) строятся в компил-тайм, при инстанцировании шаблона. Это будет современный уровень С++, а не как у нас с вами Си-с-классами-и-STL :-)

художественно-лирическое примечание про скорость (про которую требований не было, но все отчего-то упёрлись и даже слегка пересрались). На фоне сравнений std::string, абсолютно по барабану что использовать map<> или вереницу if. Если бы задача ТС была-бы не учебной и с требованиями по скорости, то в первую очередь избавляться от строк, заменять токенами/литералами/объектами