LINUX.ORG.RU

История изменений

Исправление 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 в другой. В целом как передавать параметры?

И так далее. Не говоря уже о том, что это нерасширяемый сахар, с которым не будут нормально работать другие механизмы языка.