template <typename T>
struct my_string_map : public std::map<std::string,T>
{
};
Вы не должны наследовать от классов, в которых нет виртуального деструктора. Это связано с тем, что деструкторы в производных классах не вызываются, когда они должны быть, и вы можете получить нераспределенную память.
Это значит, что вы могли *****, вероятно, ***** обойтись без него в приведенном выше примере, потому что вы не добавляете больше данных в свой производный тип. Обратите внимание, что это не одобрение. Я все еще советую вам не делать это. Тот факт, что вы можете сделать это, не означает, что вы должны .
РЕДАКТИРОВАТЬ: Да, это ответ на пост ShaChris23. Я, вероятно, что-то пропустил, потому что это показывалось над его / ее сообщением, а не ниже.