Интерполяция строк

Дмитрий Бравиков
Дмитрий Бравиков

Пример кода:

const char* name = "Bob";
int age = 32;
std::cout << $"Hello. My name is {name}. I'm {age}." << std::endl;

В стандартный вывод передается строка: "Hello. My name is Bob. I'm 32.".

Сейчас символ доллара $ не используется в языке.

-6
рейтинг
6 комментариев
Дмитрий Бравиков

stringstream не может заменить шаблоны строк, когда нужна интернационализация.

Дмитрий Бравиков
Alexander

Уже можно делать такие вещи при помощи <format>, который завезли в C++20.

Alexander
Дмитрий Бравиков

Alexander, Вы об этом Text Formatting? Это дает типобезопасность, но не дает интерполяции.

Дмитрий Бравиков
Обновлено 
Alexander

Дмитрий Бравиков, посмотрел ещё раз, что такое интерполяция. И не понял, зачем оно нужно в C++

Alexander
Владимир Топунов

Прикрутить рефлексию с перебором объявленных переменных. Полезно будет. Я за фичу, но только в library

Владимир Топунов
Maxim Kapitonov

Владимир Топунов, это не рефлексия.

Я так понимаю выражение на этапе компиляции должно развернуться в 

std::cout << "Hello. My name is" << name << ". I'm" << age << "." << std::endl;
Maxim Kapitonov
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения