11# primitives API 文档
22
3- > 适用模块 :` import mcpplibs.primitives; `
3+ > 模块入口 :` import mcpplibs.primitives; `
44
55## 模块入口
66
7- 顶层模块 :
7+ 顶层导入 :
88
99``` cpp
1010import mcpplibs.primitives;
1111```
1212
13- 该模块导出以下子模块 :
13+ 该模块会导出以下子模块 :
1414
1515- ` mcpplibs.primitives.underlying `
16+ - ` mcpplibs.primitives.literals `
1617- ` mcpplibs.primitives.policy `
1718- ` mcpplibs.primitives.primitive `
1819- ` mcpplibs.primitives.operations `
@@ -21,20 +22,20 @@ import mcpplibs.primitives;
2122
2223## 命名空间总览
2324
24- - ` mcpplibs::primitives ` : 核心类型、概念与 ` primitive ` 。
25- - ` mcpplibs::primitives::underlying ` : underlying traits 与类别 。
26- - ` mcpplibs::primitives::policy ` : policy 标签、默认值与协议。
27- - ` mcpplibs::primitives::operations ` : 分发函数 API。
28- - ` mcpplibs::primitives::conversion ` : 数值风险检查与转换辅助接口。
29- - ` mcpplibs::primitives::algorithms ` : limits 与 hash 辅助接口。
30- - ` mcpplibs::primitives::operators ` : 运算符重载入口。
31- - ` mcpplibs::primitives::literals ` : 带范围校验的 underlying 字面量后缀。
32- - ` mcpplibs::primitives::meta ` : primitive 元信息 traits。
33- - ` mcpplibs::primitives::types ` : 常用 underlying 的 primitive 别名。
25+ - ` mcpplibs::primitives ` : 核心类型、概念与 ` primitive ` 。
26+ - ` mcpplibs::primitives::underlying ` : underlying traits 与分类信息 。
27+ - ` mcpplibs::primitives::policy ` : policy 标签、默认值与协议。
28+ - ` mcpplibs::primitives::operations ` :函数式分发 API。
29+ - ` mcpplibs::primitives::conversion ` : 数值风险检查与转换辅助接口。
30+ - ` mcpplibs::primitives::algorithms ` : limits 与 hash 辅助接口。
31+ - ` mcpplibs::primitives::operators ` : 运算符重载入口。
32+ - ` mcpplibs::primitives::literals ` :带校验的 underlying 字面量后缀。
33+ - ` mcpplibs::primitives::meta ` : primitive 元信息 traits。
34+ - ` mcpplibs::primitives::types ` : 常用 underlying 对应的 primitive 别名。
3435
3536## 核心概念与元信息
3637
37- ### underlying 相关概念
38+ ### underlying 概念
3839
3940- ` underlying_type<T> `
4041- ` boolean_underlying_type<T> `
@@ -45,7 +46,7 @@ import mcpplibs.primitives;
4546- ` has_common_rep<LhsRep, RhsRep> `
4647- ` common_rep_t<LhsRep, RhsRep> `
4748
48- ### policy 相关概念
49+ ### policy 概念
4950
5051- ` policy::policy_type<P> `
5152- ` policy::value_policy<P> `
@@ -56,7 +57,7 @@ import mcpplibs.primitives;
5657
5758### primitive 元信息
5859
59- - ` meta::traits<primitive<...>> `
60+ - ` meta::traits<primitive<...>> `
6061 暴露 ` value_type / policies / value_policy / type_policy / error_policy / concurrency_policy `
6162- ` meta::make_primitive_t<T, PoliciesTuple> `
6263
@@ -72,12 +73,12 @@ class primitive;
7273- ` value_type = T `
7374- ` policies = std::tuple<Policies...> `
7475
75- ### 主要构造与赋值
76+ ### 构造与赋值
7677
7778- ` explicit primitive(T) ` :同 underlying 构造。
78- - ` explicit primitive(U) ` :跨 underlying 构造( 是否允许由 type 策略决定) 。
79- - 支持同策略组下的拷贝 /移动构造与赋值。
80- - 支持同策略组、不同 underlying 的 primitive 互构造/赋值(受 type 策略约束) 。
79+ - ` explicit primitive(U) ` :跨 underlying 构造, 是否允许由 type policy 决定 。
80+ - 支持同一 policy 集合下的拷贝 /移动构造与赋值。
81+ - 当 type policy 允许时,支持跨 underlying primitive 的构造与赋值 。
8182
8283### 值访问与并发访问 API
8384
@@ -89,23 +90,23 @@ class primitive;
8990
9091说明:
9192
92- - ` store/compare_exchange ` 支持同 underlying。
93- - 在 type 策略允许时 ,` store/compare_exchange ` 也支持跨 underlying 参数。
94- - 并发访问能力由 ` policy::concurrency::handler<..., void, ...> ` 提供。
93+ - ` store/compare_exchange ` 始终支持同 underlying 类型 。
94+ - 只有在 type policy 允许时 ,` store/compare_exchange ` 才支持跨 underlying 参数。
95+ - 访问 API 由 ` policy::concurrency::handler<..., void, ...> ` 提供。
9596
96- ### type 策略对跨 underlying 行为的影响
97+ ### type policy 对跨 underlying 行为的影响
9798
98- - ` policy::type::strict ` :仅同类型允许,跨 underlying 构造/存储/CAS 不可用 。
99- - ` policy::type::compatible ` :要求同 underlying category 且可协商 ` common_rep ` 。
100- - ` policy::type::transparent ` :只要求可协商 ` common_rep ` 。
99+ - ` policy::type::strict ` :只允许完全相同的类型 。
100+ - ` policy::type::compatible ` :要求 underlying category 相同且存在有效的 ` common_rep ` 。
101+ - ` policy::type::transparent ` :只要求存在有效的 ` common_rep ` 。
101102
102- ### 预定义别名 (` types ` )
103+ ### 便捷别名 (` types ` )
103104
104105- 整型:` U8/U16/U32/U64 ` 、` Size ` 、` Diff ` 、` I8/I16/I32/I64 `
105106- 浮点:` F32/F64/F80 `
106107- 布尔/字符:` Bool/UChar/Char8/Char16/Char32/WChar `
107108
108- 用法示例 :
109+ 示例 :
109110
110111``` cpp
111112using value_t = mcpplibs::primitives::types::I32<
@@ -115,17 +116,20 @@ using value_t = mcpplibs::primitives::types::I32<
115116
116117### 工厂函数与 literals
117118
118- - ` with(value) ` :从 underlying 值按默认策略构造 ` primitive `
119- - ` with<Policies...>(value) ` :构造时显式指定策略集合
120- - ` with(policies_tuple, value) ` :复用已有策略元组
119+ - ` with(value) ` :从 underlying 值按默认 policy 构造 ` primitive ` 。
120+ - ` with<Policies...>(value) ` :构造时显式指定 policy 集合。
121+ - ` with(policies_tuple, value) ` :复用已有的 policy tuple。
121122- ` mcpplibs::primitives::literals ` 提供带校验的后缀,例如
122123 ` _u8/_u16/_u32/_u64/_size/_diff ` 、` _i8/_i16/_i32/_i64 ` 、
123- ` _f32/_f32e/_f64/_f64e/_f80/_f80e ` ,以及
124- ` _uchar/_char8/_char16/_char32/_wchar `
124+ ` _f32/_f32e/_f64/_f64e/_f80/_f80e ` ,以及字符后缀
125+ ` _uchar/_char8/_char16/_char32/_wchar ` 。
125126
126127示例:
127128
128129``` cpp
130+ import mcpplibs.primitives;
131+ import mcpplibs.primitives.literals;
132+
129133using namespace mcpplibs ::primitives;
130134using namespace mcpplibs::primitives::literals;
131135
@@ -180,25 +184,25 @@ auto value = with<policy::value::checked, policy::error::expected>(42_i32);
180184
181185### 混合操作支持
182186
183- 对多数二元操作,支持以下三种形式 :
187+ 大多数二元操作支持 :
184188
185189- `primitive op primitive`
186190- `primitive op underlying`
187191- `underlying op primitive`
188192
189- ## `operators` 运算符重载
193+ ## `operators` 重载
190194
191- 若需要 `+ - * / % ...` 运算符语法 ,请引入:
195+ 如果要使用 `+ - * / % ...` 语法 ,请引入:
192196
193197```cpp
194198using namespace mcpplibs::primitives::operators;
195199```
196200
197- 重载结果同样是 ` std::expected<...> ` ,不是裸值。
201+ 运算符结果依然是 ` std::expected<...> ` ,不是裸值。
198202
199203## ` conversion ` API
200204
201- ` conversion ` 命名空间提供 underlying、primitive 以及混合路径之间的统一转换接口 。
205+ ` conversion ` 命名空间提供 underlying、primitive 以及混合源/目标之间的统一转换接口 。
202206
203207### 常用结果类型与风险模型
204208
@@ -218,15 +222,14 @@ using namespace mcpplibs::primitives::operators;
218222
219223说明:
220224
221- - ` checked_cast ` 与 ` exact_cast ` 返回 ` cast_result<T> `
222- - ` saturating_cast ` 会对数值溢出/下溢执行钳制
223- - ` truncating_cast ` 适合浮点到整数的截断场景
224- - 提供 underlying -> underlying、primitive -> primitive、
225- primitive -> underlying、underlying -> primitive 四类重载
225+ - ` checked_cast ` 和 ` exact_cast ` 返回 ` cast_result<T> ` 。
226+ - ` saturating_cast ` 会在溢出/下溢时执行钳制。
227+ - ` truncating_cast ` 适合浮点到整数的截断场景。
228+ - 提供 underlying -> underlying、primitive -> primitive、primitive -> underlying、underlying -> primitive 四类重载。
226229
227230## ` algorithms ` API
228231
229- ` algorithms ` 命名空间提供 limits 元信息与 hash 辅助接口,适用于内置类型和受支持的自定义 underlying。
232+ ` algorithms ` 命名空间提供 limits 元信息和 hash 辅助接口,适用于内建类型和受支持的自定义 underlying。
230233
231234### Limits
232235
@@ -248,21 +251,21 @@ using namespace mcpplibs::primitives::operators;
248251
249252## policy API
250253
251- ### 内置策略标签
254+ ### 内建 policy 标签
252255
253256- 值策略:` policy::value::{checked, unchecked, saturating} `
254257- 类型策略:` policy::type::{strict, compatible, transparent} `
255258- 错误策略:` policy::error::{throwing, expected, terminate} `
256259- 并发策略:` policy::concurrency::{none, fenced, fenced_relaxed, fenced_acq_rel, fenced_seq_cst} `
257260
258- ### 默认策略
261+ ### 默认值
259262
260263- ` policy::defaults::value = policy::value::checked `
261264- ` policy::defaults::type = policy::type::strict `
262265- ` policy::defaults::error = policy::error::throwing `
263266- ` policy::defaults::concurrency = policy::concurrency::none `
264267
265- ### 错误码
268+ ### 错误种类
266269
267270` policy::error::kind ` :
268271
@@ -278,7 +281,7 @@ using namespace mcpplibs::primitives::operators;
278281
279282### 1) 注册 ` underlying::traits<T> `
280283
281- 需要提供 :
284+ 必须提供 :
282285
283286- ` value_type `
284287- ` rep_type `
@@ -288,15 +291,15 @@ using namespace mcpplibs::primitives::operators;
288291- ` from_rep(rep) `
289292- ` is_valid_rep(rep) `
290293
291- ### 2) 自定义 common rep 协商
294+ ### 2) 自定义 common- rep 协商
292295
293- 可特化 ` underlying::common_rep_traits<LhsRep, RhsRep> ` ,以覆盖默认 ` std::common_type_t ` 规则 。
296+ 可以特化 ` underlying::common_rep_traits<LhsRep, RhsRep> ` ,覆盖默认的 ` std::common_type_t ` 行为 。
294297
295- ## 返回模型与错误处理模型
298+ ## 返回值与错误模型
296299
297- - 绝大多数 operations/operators API 返回 ` std::expected<...> ` 。
298- - 当错误策略为 ` policy::error::expected ` 时,错误通过 ` unexpected(policy::error::kind) ` 返回。
299- - 当错误策略为 ` policy::error::throwing ` 时,运行期错误会抛出异常( 签名仍保持 ` std::expected ` ) 。
300+ - 大多数 operations/operators API 返回 ` std::expected<...> ` 。
301+ - 使用 ` policy::error::expected ` 时,失败通过 ` unexpected(policy::error::kind) ` 返回。
302+ - 使用 ` policy::error::throwing ` 时,运行期失败会抛出异常,而 API 签名仍保持 ` std::expected ` 。
300303
301304## 最小示例
302305
0 commit comments