@@ -13,7 +13,7 @@ using default_value_policy = policy::unchecked_value;
1313using default_type_policy = policy::transparent_type;
1414using default_error_policy = policy::throw_error;
1515using default_concurrency_policy = policy::single_thread;
16- }
16+ } // namespace mcpplibs::primitives
1717
1818// Internal implementation details — not exported.
1919namespace mcpplibs ::primitives::traits::details {
@@ -50,8 +50,7 @@ template <policy_category C, policy::policy_type First,
5050 policy::policy_type... Rest>
5151struct find_first_impl <C, First, Rest...> {
5252 static constexpr bool is_match =
53- policy::traits<First>::enabled &&
54- policy::traits<First>::kind == C;
53+ policy::traits<First>::enabled && policy::traits<First>::kind == C;
5554 using type = std::conditional_t <is_match, First,
5655 typename find_first_impl<C, Rest...>::type>;
5756};
@@ -69,43 +68,39 @@ struct resolve_policy_impl {
6968 std::is_same_v<found, void >,
7069 std::conditional_t <
7170 C == policy_category::value, default_value_policy,
72- std::conditional_t <
73- C == policy_category::type, default_type_policy,
74- std::conditional_t <C == policy_category::error,
75- default_error_policy,
76- default_concurrency_policy>>>,
71+ std::conditional_t <C == policy_category::type, default_type_policy,
72+ std::conditional_t <C == policy_category::error,
73+ default_error_policy,
74+ default_concurrency_policy>>>,
7775 found>;
7876};
7977
80- template <policy_category C,
81- policy::policy_type... Policies>
78+ template <policy_category C, policy::policy_type... Policies>
8279using resolve_policy_t = resolve_policy_impl<C, Policies...>::type;
8380
8481} // namespace mcpplibs::primitives::traits::details
8582
8683// Public API exported from this module.
8784export namespace mcpplibs ::primitives::traits {
88- using policy_category = policy::category;
89-
90- template <policy_category C, policy::policy_type... Policies>
91- using resolve_policy_t = details::resolve_policy_t <C, Policies...>;
92-
93- template <typename P> struct primitive_traits ; // customization point for users
94-
95- // Forward-declare exported `primitive` (defined in impl module).
96- template <typename T, policy::policy_type... Policies>
97- struct primitive ;
98-
99- template <typename T, policy::policy_type... Policies>
100- struct primitive_traits <primitive<T, Policies...>> {
101- using value_type = T;
102- using policies = std::tuple<Policies...>;
103- using value_policy = resolve_policy_t <policy_category::value, Policies...>;
104- using type_policy = resolve_policy_t <policy_category::type, Policies...>;
105- using error_policy = resolve_policy_t <policy_category::error, Policies...>;
106- using concurrency_policy =
107- resolve_policy_t <policy_category::concurrency, Policies...>;
108- };
85+ using policy_category = policy::category;
10986
110- } // namespace traits::traits
87+ template <policy_category C, policy::policy_type... Policies>
88+ using resolve_policy_t = details::resolve_policy_t <C, Policies...>;
89+
90+ template <typename P> struct primitive_traits ; // customization point for users
91+
92+ // Forward-declare exported `primitive` (defined in impl module).
93+ template <typename T, policy::policy_type... Policies> struct primitive ;
94+
95+ template <typename T, policy::policy_type... Policies>
96+ struct primitive_traits <primitive<T, Policies...>> {
97+ using value_type = T;
98+ using policies = std::tuple<Policies...>;
99+ using value_policy = resolve_policy_t <policy_category::value, Policies...>;
100+ using type_policy = resolve_policy_t <policy_category::type, Policies...>;
101+ using error_policy = resolve_policy_t <policy_category::error, Policies...>;
102+ using concurrency_policy =
103+ resolve_policy_t <policy_category::concurrency, Policies...>;
104+ };
111105
106+ } // namespace mcpplibs::primitives::traits
0 commit comments