История изменений
Исправление Siborgium, (текущая версия) :
К интерполяции переменных слишком много вопросов, чтобы поддерживать ее в С++.
Например,
std::string world;
const char* lit = $"Hello, {world}";
валидно? Где взять память под литерал, куда копировать содержание world?
Какой вообще тип должно возвращать выражение $«Hello, {world}»? Я могу вернуть его из функции? Лениво подставлять значение переменных, или нет? Захватывать по ссылке или значению? Что делать с лайфтаймами? Как добавить форматирование для кастомного типа? Что делать с локалями: пусть я в $"{a}{b}"
хочу a
форматировать в одной локали, а b
в другой. В целом как передавать параметры? Как мне в foo(const char* c)
передать результат $"{x}"
, если там не const char*
?
И так далее. Не говоря уже о том, что это нерасширяемый сахар, с которым не будут нормально работать другие механизмы языка.
Исходная версия Siborgium, :
К интерполяции переменных слишком много вопросов, чтобы поддерживать ее в С++.
Например,
std::string world;
const char* lit = $"Hello, {world}";
валидно? Где взять память под литерал, куда копировать содержание world?
Какой вообще тип должно возвращать выражение $«Hello, {world}»? Я могу вернуть его из функции? Лениво подставлять значение переменных, или нет? Захватывать по ссылке или значению? Что делать с лайфтаймами? Как добавить форматирование для кастомного типа? Что делать с локалями: пусть я в $"{a}{b}"
хочу a
форматировать в одной локали, а b
в другой. В целом как передавать параметры?
И так далее. Не говоря уже о том, что это нерасширяемый сахар, с которым не будут нормально работать другие механизмы языка.