Files
cppdraft_translate/cppdraft/concepts/arithmetic.md
2025-10-25 03:02:53 +03:00

42 lines
2.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[concepts.arithmetic]
# 18 Concepts library [[concepts]](./#concepts)
## 18.4 Language-related concepts [[concepts.lang]](concepts.lang#concepts.arithmetic)
### 18.4.7 Arithmetic concepts [concepts.arithmetic]
[🔗](#itemdecl:1)
`template<class T>
concept [integral](#concept:integral "18.4.7Arithmetic concepts[concepts.arithmetic]") = [is_integral_v](meta.type.synop#lib:is_integral_v "21.3.3Header <type_­traits> synopsis[meta.type.synop]")<T>;
template<class T>
concept [signed_integral](#concept:signed_integral "18.4.7Arithmetic concepts[concepts.arithmetic]") = [integral](#concept:integral "18.4.7Arithmetic concepts[concepts.arithmetic]")<T> && [is_signed_v](meta.type.synop#lib:is_signed_v "21.3.3Header <type_­traits> synopsis[meta.type.synop]")<T>;
template<class T>
concept [unsigned_integral](#concept:unsigned_integral "18.4.7Arithmetic concepts[concepts.arithmetic]") = [integral](#concept:integral "18.4.7Arithmetic concepts[concepts.arithmetic]")<T> && ![signed_integral](#concept:signed_integral "18.4.7Arithmetic concepts[concepts.arithmetic]")<T>;
template<class T>
concept [floating_point](#concept:floating_point "18.4.7Arithmetic concepts[concepts.arithmetic]") = is_floating_point_v<T>;
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L502)
[*Note [1](#note-1)*:
[signed_integral](#concept:signed_integral "18.4.7Arithmetic concepts[concepts.arithmetic]") can be modeled even by types that are
not signed integer types ([[basic.fundamental]](basic.fundamental "6.9.2Fundamental types")); for example, char[.](#1.sentence-1)
— *end note*]
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L508)
[*Note [2](#note-2)*:
[unsigned_integral](#concept:unsigned_integral "18.4.7Arithmetic concepts[concepts.arithmetic]") can be modeled even by types that are
not unsigned integer types ([[basic.fundamental]](basic.fundamental "6.9.2Fundamental types")); for example, bool[.](#2.sentence-1)
— *end note*]