@@ -15,13 +15,8 @@ import mcpplibs.primitives.underlying;
1515
1616export namespace mcpplibs ::primitives::operations {
1717
18- template <typename T>
19- concept primitive_instance = requires {
20- typename primitives::meta::traits<
21- std::remove_cvref_t <T>>::value_type;
22- };
23-
24- template <operation OpTag, primitive_instance Lhs, primitive_instance Rhs,
18+ template <operation OpTag, primitives::meta::primitive_type Lhs,
19+ primitives::meta::primitive_type Rhs,
2520 typename ErrorPayload = policy::error::kind>
2621struct dispatcher_meta {
2722 using lhs_primitive = std::remove_cvref_t <Lhs>;
@@ -85,15 +80,17 @@ struct dispatcher_meta {
8580 ErrorPayload>;
8681};
8782
88- template <operation OpTag, primitive_instance Lhs, primitive_instance Rhs,
83+ template <operation OpTag, primitives::meta::primitive_type Lhs,
84+ primitives::meta::primitive_type Rhs,
8985 typename ErrorPayload = policy::error::kind>
9086using dispatch_result_t = std::expected<
9187 typename dispatcher_meta<OpTag, Lhs, Rhs, ErrorPayload>::common_rep,
9288 ErrorPayload>;
9389
9490// Dispatcher pipeline: compile-time negotiation plus runtime chain
9591// (concurrency -> value -> error) through selected policy handlers.
96- template <operation OpTag, primitive_instance Lhs, primitive_instance Rhs,
92+ template <operation OpTag, primitives::meta::primitive_type Lhs,
93+ primitives::meta::primitive_type Rhs,
9794 typename ErrorPayload = policy::error::kind>
9895constexpr auto dispatch (Lhs const &lhs, Rhs const &rhs)
9996 -> dispatch_result_t<OpTag, Lhs, Rhs, ErrorPayload> {
0 commit comments