Re[11]: Полухин - что там с С++26
От: B0FEE664  
Дата: 13.01.26 09:39
Оценка:
Здравствуйте, Went, Вы писали:

W>Ну в этом же и суть, что в интерполяции нет разбора строки на этапе исполнения. То есть это ни в коем случае не сахар поверх format, а наиболее оптимальный из возможных способ сборки строки из базы и плейсхолдеров, потому что всё то, что можно, компилятор может вытянуть на этапе компиляции.

Что можно собрать на этапе компиляции? Только то, что фиксированного размера в выводе. Так что строки и числа не фиксированной длины отпадают. Например:
std::string str = std::format("a = {var} - ok");

особо оптимизировать не получится. Если var, скажем, int, то он может быть и 4 и 444. А значит в результирующую строку всё равно придётся складывать минимум из двух частей: "a = 444" и " — ok". То есть на каждую числовую переменную теоретически можно сэкономить одну операцию конкатенации строк. А если var — это строка, то сэкономить уже ничего не получится. Однако я сильно сомневаюсь, что кто-то будет заниматься такой мелочной оптимизацией.

W>std::format же принципиально другой подход, напротив, где оптимальность уступается в угоду гибкости (например, в разных локализациях плейсхолдеры могут идти в разном порядке). О чем же мы спорим?

Поправьте меня, если я ошибаюсь, но std::format первым параметром берёт форматную строку — объект, который компилятор может построить из строки на этапе компиляции.

Короче, можете объяснить: где вы предполагаете возможность оптимизации?
И каждый день — без права на ошибку...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.