Skip to content

Commit 2d762fc

Browse files
refactor: Replace primitive_instance concept with primitive_type in dispatcher and operators
1 parent fb4c004 commit 2d762fc

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

src/operations/dispatcher.cppm

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,8 @@ import mcpplibs.primitives.underlying;
1515

1616
export 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>
2621
struct 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>
9086
using 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>
9895
constexpr auto dispatch(Lhs const &lhs, Rhs const &rhs)
9996
-> dispatch_result_t<OpTag, Lhs, Rhs, ErrorPayload> {

src/operations/operators.cppm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ constexpr auto decode_three_way_code(CommonRep const &code) -> Ordering {
6161

6262
} // namespace details
6363

64+
template <typename T>
65+
concept primitive_instance = meta::primitive_type<T>;
66+
6467
template <operation OpTag, primitive_instance Lhs, primitive_instance Rhs,
6568
typename ErrorPayload = policy::error::kind>
6669
using primitive_dispatch_result_t = std::expected<meta::make_primitive_t<

0 commit comments

Comments
 (0)