Skip to content

Add std::hash specializations for Date, Time, DateTime#278

Draft
Ozaq wants to merge 1 commit intodevelopfrom
fix/ECKIT-561
Draft

Add std::hash specializations for Date, Time, DateTime#278
Ozaq wants to merge 1 commit intodevelopfrom
fix/ECKIT-561

Conversation

@Ozaq
Copy link
Member

@Ozaq Ozaq commented Feb 26, 2026

Description

Allow Date, Time, and DateTime to be used as keys in std::unordered_map and std::unordered_set by providing std::hash specializations in each type's header.

Date hashes via julian(), Time via hhmmss() (avoiding floating-point hash pitfalls on the underlying double), and DateTime combines both using a new hash_combine utility.

Requires ecbuild fix for sg.pl to handle template <> syntax.

Fixes: ECKIT-561

NOTE: blocked by a bug in ecbuild/sg.pl ecmwf/ecbuild#134

Contributor Declaration

By opening this pull request, I affirm the following:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

🌦️ >> Documentation << 🌦️
https://sites.ecmwf.int/docs/dev-section/eckit/pull-requests/PR-278

Allow Date, Time, and DateTime to be used as keys in
std::unordered_map and std::unordered_set by providing std::hash
specializations in each type's header.

Date hashes via julian(), Time via hhmmss() (avoiding floating-point
hash pitfalls on the underlying double), and DateTime combines both
using a new hash_combine utility.

Requires ecbuild fix for sg.pl to handle template <> syntax.

Fixes: ECKIT-561

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant