diff --git a/include/Semver.hpp b/include/Semver.hpp index bdd793f0d..e1dd09eff 100644 --- a/include/Semver.hpp +++ b/include/Semver.hpp @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include @@ -86,8 +86,6 @@ bool operator<(const Version& lhs, const Version& rhs) noexcept; bool operator>(const Version& lhs, const Version& rhs) noexcept; bool operator<=(const Version& lhs, const Version& rhs) noexcept; bool operator>=(const Version& lhs, const Version& rhs) noexcept; -template <> -struct fmt::formatter : ostream_formatter {}; struct VersionLexer { std::string_view s; @@ -120,3 +118,24 @@ struct VersionParser { rs::Result parseBuild() noexcept; rs::Result parseIdent() noexcept; }; + +namespace std { + +template <> +struct formatter { + constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); } + + template + auto format(const Version& ver, FormatContext& ctx) const { + return formatter{}.format(ver.toString(), ctx); + } +}; + +} // namespace std + +#if __has_include() +# include + +template <> +struct fmt::formatter : ostream_formatter {}; +#endif