LINUX.ORG.RU

История изменений

Исправление 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 вариантов