Это:
'=' + "10"
Вероятно, не делает то, что вы ожидаете. Вместо конкатенации он «добавляет» (арифметически) значение «ASCII» «=» к указателю на буквенную строку «10», что является переполнением буфера и вызывает неопределенное поведение.
Если вы запустите свою программу под valgrind, вы, вероятно, увидите, что она пожаловалась на это.
Вместо этого попробуйте:
std::string st = "=";
st += "10";