Closed Neargye closed 2 years ago
Несколько раз порывался это написать и пришел к выводу что в этом нет смысла. В подавляющем большинстве случаев операции преобразования к строке и из строки производятся при операциях ввода/ вывода. То есть при чтении и записи в файлы и сокеты в текстовых форматах (CSV,XML,HTML,JSON,YAML и т.д.) Тут от constexpr вообще нет толку, эти операции происходят в runtime. А с вещественными числами типа float,double,long double вообще крайне сложно без С библиотеки выполнить преобразование, если операции делать без ассемблерных команд то получится крайне не производительный код потому что не будет задействовано "ускорительное железо". Стандартная библиотека С как правило содержит весьма оптимизированный ассемблерный код под целевую платформу. 2. В программе если есть константы которые нужно в файл/cокет писать как значения по умолчанию - лучше сразу строковым литералом и задавать. И время компиляции уменьшиться, и читать код проще будет. Однако даже если этого не делать, компиляторы умеют хорошо оптимизировать такие преобразования и сами подставлять уже преобразованные значения.
Хотелось бы иметь стандартный способ перевести строку в число и обратно на этапе компиляции. Сейчас для этого приходится либо писать свои реализации, либо брать что-то из boost/etc.
Пропозл для целочисленных числес сейчас находится в работе: https://github.com/cplusplus/papers/issues/984 https://wg21.link/p2291