cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Перенести в стандартную библиотеку boost::lexical_cast #245

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +4, -4 Автор идеи: Игорь

Было бы неплохо, если такая крайне часто используемая библиотека как boost::lexical_cast мигрировала бы в стандартную библиотеку.

Часто используемая и полезная библиотека обязана лежать в пространстве std чтобы лишний раз не грузить по этому поводу бусты.

apolukhin commented 3 years ago

yndx-antoshkka, 29 ноября 2017, 18:35 Как разработчик Boost.LexicalCast я буду выступать категорически против принятия lexical_cast в стандарт в том виде, что он в Boost.

Правильный lexical_cast, это lexical_cast использующий std::to_chars/std::from_chars и не умеющий конвертировать пользовательские типы данных. Желательно при этом ему быть constexpr :)

Игорь, 29 ноября 2017, 19:25 yndx-antoshkka, То есть, я так понимаю сейчас стоит задача переписать существующий lexical_cast где внутри будут эти std::from_chars/std::to_chars, которые не тянут как мне помниться кучу лишнего, как например локаль. И только потом рассматривать возможность включения в стандарт? А почему не конвертить пользовательские типы данных? Почему бы ему не быть универсальным? В чем проблема?

yndx-antoshkka, 30 ноября 2017, 13:23 пользовательские типы данных обычно конвертируются через basic_ostream, а он использует локаль, динамические аллокации. Получится не консистентно - обычные типы всегда будут конвертироваться в C локали, пользовательские типы - в текущей. Можно конечно для basic_ostream всегда явно задавать C локаль, но это дополнительно замедлит функцию

Сергей Трифонов, 29 ноября 2017, 22:17 Мне нравится больше библиотека fmtlib. Удобнее для форматирования текста.

Антон Бикинеев, 30 ноября 2017, 16:30 Сергей Трифонов, есть, кстати, предложение стандартизовать эту либу: https://stdcpp.ru/proposals/a270e3f8-3b35-4485-8e08-2ae56afdb1c3

apolukhin commented 3 years ago

Полный дубликат #59 (out of order перенос идей)