Anatoly
16.10.2017
22:51:58
для uintmax_t 19 на моей машине
Constantine
16.10.2017
22:52:11
угу
а для int8_t это 2 :)
размер буфера с учетом '\0' будет digits10 + 2 для uintmax_t и + 3 для intmax_t
Google
Anatoly
16.10.2017
22:53:21
кстати, ты не знаешь почему std::numeric_limits<uintmax_t>:max_digits10 не определен для uintmax_t?
Constantine
16.10.2017
22:53:27
знаю
потому что max_digits10 это вообще не то
это что-то там про вещественные числа
а digits10 это (внимание!) максимальная длина такая, что число такой длины гарантированно представимо в типе
т.е. если тип [0; 255] то digits10 будет 2
потому что 300 длины 3 не представимо в типе
Anatoly
16.10.2017
22:57:50
ладно, все равно голова не работает, пошел спать
Ioann V
16.10.2017
23:40:08
Constantine
16.10.2017
23:40:43
Ioann V
16.10.2017
23:40:54
Ну, а это сильно странно ?
Все таки не double
Constantine
16.10.2017
23:41:01
Вообще-то говоря да
Google
Constantine
16.10.2017
23:42:58
Как вы думаете, с какой частотой в коде встречается перевод строки в число и числа в строку?
Anton
16.10.2017
23:43:26
Constantine
16.10.2017
23:43:39
там локаль-зависимость как раз
Anton
16.10.2017
23:44:50
Constantine
16.10.2017
23:45:18
да запись XML/JSON любого формата
любой вывод лога
Ioann V
16.10.2017
23:46:28
Constantine
16.10.2017
23:46:43
Ioann V
16.10.2017
23:48:00
Я не утверждал как. Просто если у тебя int можно же пере.... но придется выделять память самому и так далее
Stanislav
16.10.2017
23:48:01
кстати в пропозале на to_chars встречается упоминание string_view я так и не понял че не сделали с ним
Constantine
16.10.2017
23:48:34
Ioann V
16.10.2017
23:48:59
Ну я про проблемы с размером и говорю.
Constantine
16.10.2017
23:49:02
std::numeric_limits<uintmax_t>::digits10() + 2 просто шикарно
Ioann V
16.10.2017
23:49:14
Но обычно не больше чем 32
Constantine
16.10.2017
23:49:28
:)
640K ought to be enough to everyone
int128_t не влезет в 32
Ioann V
16.10.2017
23:50:05
Ну в тех же строках она и так с запасом выделяется.
Constantine
16.10.2017
23:50:38
т.е. если платформа поддерживает int128_t, у меня buffer overrun на запись
Google
Ioann V
16.10.2017
23:50:48
Constantine
16.10.2017
23:51:03
Vladislav
16.10.2017
23:51:15
Constantine
16.10.2017
23:51:33
что мешает компилятору считать имеющийся __int128_t как intmax_t
Vladislav
16.10.2017
23:51:40
Anton
16.10.2017
23:51:51
Constantine
16.10.2017
23:52:13
причем эмуляция через uintfast_t или как он там
Ioann V
16.10.2017
23:52:49
Я бы руками бахнул. Даже так - я и так руками бахнул. Делов то переводить стандартные типы, отличные от дабла.
Anton
16.10.2017
23:53:09
Constantine
16.10.2017
23:53:26
угу
Ioann V
16.10.2017
23:53:49
В нулевых кстати, все на stl плевались
И знаешь что ????? Недовольные писали свой :)
Constantine
16.10.2017
23:54:35
Меня интересует не std::stack который реализован через vector
Меня интересует задача "перевести число в строку"
Напомню, такая встроенная функция была в Turbo Pascal
Полагаю, 30 лет назад была
Ioann V
16.10.2017
23:56:32
Сформулируй ее более четко, пожалуйста
Constantine
16.10.2017
23:56:46
Задача: перевести число типа uintmax_t в std::wstring локаль-независимым способом
Для целей записи в JSON, например
Google
Ioann V
16.10.2017
23:57:35
Окей, я посмотрю что с этим можно сделать, а вечером сегодня по Мск тебе напишу, что я нашел.
Constantine
16.10.2017
23:57:49
?
Ioann V
16.10.2017
23:58:10
А чо ржачного то, я уже сплю, считай
Constantine
16.10.2017
23:58:24
Ржачно, что этот вопрос вызывает замешательство в pro.cxx
В любом нормальном языке такой вопрос отправляется в ultramegapro
Stanislav
16.10.2017
23:58:50
https://github.com/electronicarts/EASTL
Ioann V
16.10.2017
23:58:54
Я уверен, с этим можно что то сделать. В моем случае замешательство более чем очевидно - я вообще не приспешник стандарта.(stl...)
Пока что могу посоветовать попробовать qt :))))))))
Constantine
16.10.2017
23:59:55
Ну через "я точно знаю, что результат лезет в std::numeric_limits<uintmax_t>::digits10() + 2" это реализуется адекватно
Через swprintf
Ioann V
17.10.2017
00:01:00
Ну это я так понимаю С ? А ты хочешь ц плац плац ?
Constantine
17.10.2017
00:01:23
Я хочу на С++
Если оно не будет использовать какое-либо подмножество С++, реализация меня все еще устраивает
Ioann V
17.10.2017
00:02:07
Гляну, конечно же. Мне просто самому даже интересно, что там.
Constantine
17.10.2017
00:02:38
Да, еще на M$ можно сделать через _snwprintf
Ioann V
17.10.2017
00:02:59
Constantine
17.10.2017
00:04:25
Google
Stanislav
17.10.2017
00:06:34
классика, намешанные пробелы и табы
Constantine
17.10.2017
00:06:59
Ioann V
17.10.2017
00:09:41
Форматировано плохо - а может потому что у гитхаба чот полетело ?
Constantine
17.10.2017
00:10:14
Угу, а MAYBE_NOEXCEPT в NOEXCEPT это гитхаб MAYBE_ из кода удаляет
Ioann V
17.10.2017
00:11:10
Ну мне опшионал как то более читаемо
Stanislav
17.10.2017
00:11:59
саммое смешное если включены ексепшены то дефайн пустой
Ioann V
17.10.2017
00:12:00
Ну а так а суть, ты придрался к их коду, что он так ужасен ?
Constantine
17.10.2017
00:13:04
Stanislav
17.10.2017
00:13:56
эх когда гитхаб научится рендерить хтмлки
Ioann V
17.10.2017
00:16:25
А, кстати я всек то что не так, понял - да. Тут есть такое, мне просто показалось что ты тупо на выравнивание и именования наезжаешь.
Тогда во втором дефайне типо лучше сделать вторую проверку ?
Constantine
17.10.2017
00:19:47
Ioann V
17.10.2017
00:20:49
Stanislav
17.10.2017
00:21:00
Constantine
17.10.2017
00:21:32
хотя если подумать
inline optional& operator=(const optional& other)
{
engaged = other.engaged;
val = other.val;
return *this;
}
эх подозрительно
нет проверки engaged перед копированием val
Ioann V
17.10.2017
00:23:02
Проверки на саму себя то ?