Я недавно читал о неизменяемых строках Почему строки не могут быть изменяемыми в Java и .NET? и Почему .NET String является неизменяемой? , а также некоторые вещи о почему D выбрал неизменные строки. Кажется, есть много преимуществ.
- тривиально безопасен для потока
- более безопасный
- более эффективная память в большинстве случаев.
- дешевые подстроки (токенизация и нарезка)
Не говоря уже о том, что большинство новых языков имеют неизменяемые строки, D2.0, Java, C #, Python и т. Д.
Получит ли C ++ выгоду от неизменяемых строк?
Возможно ли реализовать класс неизменяемой строки в c ++ (или c ++ 0x), который имел бы все эти преимущества?
Обновление:
Есть две попытки неизменных строк const_string и fix_str . Ни один не был обновлен в течение полувека. Они даже используются? Почему const_string никогда не превращается в boost?