diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/common/artifact_description.hpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/buildtool/common/artifact_description.hpp b/src/buildtool/common/artifact_description.hpp index 3820edc4..af80cda0 100644 --- a/src/buildtool/common/artifact_description.hpp +++ b/src/buildtool/common/artifact_description.hpp @@ -85,7 +85,12 @@ class ArtifactDescription { return std::nullopt; } - [[nodiscard]] auto Id() const noexcept -> ArtifactIdentifier { return id_; } + [[nodiscard]] auto Id() const& noexcept -> ArtifactIdentifier const& { + return id_; + } + [[nodiscard]] auto Id() && noexcept -> ArtifactIdentifier { + return std::move(id_); + } [[nodiscard]] auto IsTree() const noexcept -> bool { return std::holds_alternative<Tree>(data_); @@ -313,4 +318,13 @@ class ArtifactDescription { } }; +namespace std { +template <> +struct hash<ArtifactDescription> { + [[nodiscard]] auto operator()(ArtifactDescription const& a) const { + return std::hash<std::string>{}(a.Id()); + } +}; +} // namespace std + #endif // INCLUDED_SRC_BUILDTOOL_COMMON_ARTIFACT_DESCRIPTION_HPP |