33 lines
1.0 KiB
Markdown
33 lines
1.0 KiB
Markdown
[numerics.c.ckdint]
|
|
|
|
# 29 Numerics library [[numerics]](./#numerics)
|
|
|
|
## 29.11 C compatibility [[numerics.c]](numerics.c#ckdint)
|
|
|
|
### 29.11.2 Checked integer operations [numerics.c.ckdint]
|
|
|
|
[ð](#lib:ckd_add)
|
|
|
|
`template<class type1, class type2, class type3>
|
|
bool ckd_add(type1* result, type2 a, type3 b);
|
|
template<class type1, class type2, class type3>
|
|
bool ckd_sub(type1* result, type2 a, type3 b);
|
|
template<class type1, class type2, class type3>
|
|
bool ckd_mul(type1* result, type2 a, type3 b);
|
|
`
|
|
|
|
[1](#1)
|
|
|
|
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20645)
|
|
|
|
*Mandates*: Each of the types type1, type2, and type3 is a
|
|
cv-unqualified signed or unsigned integer type[.](#1.sentence-1)
|
|
|
|
[2](#2)
|
|
|
|
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20650)
|
|
|
|
*Remarks*: Each function template has the same semantics as
|
|
the corresponding type-generic macro with the same name
|
|
specified in ISO/IEC 9899:2024, 7.20[.](#2.sentence-1)
|