diff --git a/lix/libutil/rpc.hh b/lix/libutil/rpc.hh index f200efd45..d63be5a8b 100644 --- a/lix/libutil/rpc.hh +++ b/lix/libutil/rpc.hh @@ -28,6 +28,27 @@ To to(const From & from, auto &&... args) return Convert::convert(from, args...); } +template + requires std::integral || std::floating_point || std::same_as +T from(T t, auto &&...) +{ + return t; +} + +// blanket converter that turns a `from` into a `to` +template +struct Convert +{ + template + requires requires(typename Rpc::Reader r, Args... args) { + { from(r, args...) } -> std::same_as; + } + static To convert(const typename Rpc::Reader & r, Args &&... args) + { + return from(r, args...); + } +}; + // conversions for capnp Text template<> struct Convert @@ -126,21 +147,6 @@ struct Fill, From> } }; -// blanket converter that turns a `from` into a `to` -template - requires requires(typename Rpc::Reader r) { - { - from(r) - } -> std::same_as; - } -struct Convert -{ - static To convert(const typename Rpc::Reader & r, auto &&... args) - { - return from(r, args...); - } -}; - namespace detail { // strings to Data and Text template From>