История изменений
Исправление borisych, (текущая версия) :
Ваши пейсатели на неведомых языках в погоне на какой-то неведомой херней окончательно головой поехали (ну или так всегда было, или им это ИИ пишет)…
вот смотрю как парсится ISO8601 строка:
// system_clock::time_point: parse from ISO 8601 string
// Fast manual parser - no heap allocations, direct character parsing
template <is_system_time_point T>
requires(not custom_read<T>)
struct from<JSON, T>
{
template <auto Opts, class It0, class It1>
static void op(auto&& value, is_context auto&& ctx, It0&& it, It1 end) noexcept
{
std::string_view str;
from<JSON, std::string_view>::template op<Opts>(str, ctx, it, end);
if (bool(ctx.error)) [[unlikely]]
return;
// Minimum: YYYY-MM-DDTHH:MM:SSZ = 20 chars
if (str.size() < 20) [[unlikely]] {
ctx.error = error_code::parse_error;
return;
}
иду читать стандарт, а там для дат как YYYY-MM-DD так и YYYYMMDD, а для времени допустимо аж 10 вариантов…
это на полном серьезе позиционируется как библиотека, которую можно себе в проект затащить???
Исходная версия borisych, :
Ваши пейсатели на неведомых языках в погоне на какой-то неведомой херней окончательно головой поехали (ну или так всегда было, или им это ИИ пишет)…
вот смотрю как парсится ISO8601 строка:
// system_clock::time_point: parse from ISO 8601 string
// Fast manual parser - no heap allocations, direct character parsing
template <is_system_time_point T>
requires(not custom_read<T>)
struct from<JSON, T>
{
template <auto Opts, class It0, class It1>
static void op(auto&& value, is_context auto&& ctx, It0&& it, It1 end) noexcept
{
std::string_view str;
from<JSON, std::string_view>::template op<Opts>(str, ctx, it, end);
if (bool(ctx.error)) [[unlikely]]
return;
// Minimum: YYYY-MM-DDTHH:MM:SSZ = 20 chars
if (str.size() < 20) [[unlikely]] {
ctx.error = error_code::parse_error;
return;
}
иду читать стандарт, а там для дат как YYYY-MM-DD так и YYYYMMDD, а для времени допустимо аж 10 вариантов