diff --git a/libs/random/include/psemek/random/generator.hpp b/libs/random/include/psemek/random/generator.hpp index 2c63f0ea..b3285801 100644 --- a/libs/random/include/psemek/random/generator.hpp +++ b/libs/random/include/psemek/random/generator.hpp @@ -2,6 +2,7 @@ #include #include +#include #include @@ -66,6 +67,9 @@ namespace psemek::random read(stream, gen.inc_); } + template + friend struct std::formatter; + private: std::uint64_t state_ = 0; std::uint64_t inc_ = 0; @@ -78,3 +82,21 @@ namespace psemek::random }; } + +namespace std +{ + + template + struct formatter<::psemek::random::generator, Char> + : formatter + { + using base = formatter; + + template + auto format(::psemek::random::generator const & rng, FormatContext & ctx) const + { + return std::format_to(ctx.out(), "({}, {})", rng.state_, rng.inc_); + } + }; + +}