Было интересно наблюдать, как повышение сложности задачи привело к сбою в сгенерированном коде.
Наверное, нет одной причины, почему так получается, и влияние следующих моментов суммируется:
1. Более обобщённая, и, следовательно, менее чёткая постановка задачи.
2. В мире меньше кода, который "умеет в UTF-8". Соответственно, система хуже обучена. Из этого следует, что чем более нетиповая задача решается, тем хуже будет результат.
3. Класс
std::string_view относительно молодой (C++17), и ещё создан не такой огромный объём кода с его участием, как, например, с std::string.4. Возможно, концепция времени жизни объектов сложна для обучения.
Пара слов про статический анализ. Наверное, может поменяться стиль использования инструментов для проверки кода. Здесь нет смысла править руками ошибку — проще заново сгенерировать весь код функции, уточнив задание. Анализатор поможет человеку быстрее понять, почему код не работает как ожидалось. И уже на основании этих знаний человек может указать генератору, что он сделал не так. В общем, поможет уточнить или переформулировать задачу. Или разбить её на несколько подзадач.
В противном случае остаётся или генерировать код, меняя формулировки, пока он не заработает, или самому делать обзор кода. Оба сценария так себе. Конечно, статический анализ не панацея, но если он поможет быстрее исправить ошибку, то замечательно. Собственно, так всегда и было :) В этом его суть.
P.S. Приглашаю в комментариях делится своими подобными случаями.