Первоначальная «инициализация» по присваиванию совершенно излишня.
Это не принесло никакого вреда, кроме траты процессорных циклов, потому что на момент назначения член m_str уже был инициализирован,default.
Во втором фрагменте кода инициализация по умолчанию переопределяется, чтобы использовать еще неинициализированный элемент для своей инициализации.Это неопределенное поведение.И это совершенно не нужно: просто удалите это (и не вводите заново оригинальную трату времени, просто удалите).
Увеличив уровень предупреждений вашего компилятора, вы сможете получать предупреждения оэтот и аналогичный тривиально плохой код.
К сожалению, проблема, с которой вы столкнулись, не является технической, она гораздо более фундаментальная.Это похоже на то, как работник автомобильного завода ставит вопрос о квадратных колесах, которые они ставят на новую автомобильную марку.Тогда проблема не в том, что квадратные колеса не работают, а в том, что большое количество инженеров и менеджеров были вовлечены в решение использовать причудливые квадратные колеса, и никто из них не возражал - некоторые из них, несомненно, не сработали.Я не понимаю, что квадратные колеса не работают, но большинство из них, я подозреваю, просто боялись сказать, в чем они были уверены на 100%.Так что это, скорее всего, проблема управления.Извините, но я не знаю, как это исправить ...