Numeric<T>
Description
A type is Numeric if it has the properties of a number.
More specifically, a type T is Numeric if there exists a
specialization of std::numeric_limits<T>. See the
documentation for the standard library class numeric_limits.
The standard library includes such specializations for all the built-in
numeric types. Note that this concept is distinct from the C++ standard
library type traits is_integral and
is_arithmetic. These latter fulfill the requirement of the
concept Numeric. But there are types T which fulfill this concept for
which is_arithmetic<T>::value == false. For example see
safe_signed_integer<int>.
Notation
T, U, V
A type that is a model of Numeric
t, u
An object of a type modeling Numeric
os
An object of type std::base_ostream
is
An object of type std::base_istream
Associated Types
std::numeric_limits<T>
The numeric_limits class template provides a C++ program
with information about various properties of the implementation's
representation of the arithmetic types. See C++ standard
18.3.2.2.
Valid Expressions
In addition to the expressions defined in Assignable the
following expressions must be valid. Any operations which result in
integers which cannot be represented as some Numeric type will throw an
exception.
General
Expression
Return Value
std::numeric_limits<T>::is_bounded
true or false
std::numeric_limits<T>::is_specialized
true or false
std::numeric_limits<T>::is_integer
true or false
std::numeric_limits<T>::is_signed
true or false
os << t
os &
is >> t
is &
Unary Operators
Expression
Return Type
Semantics
-t
T
Invert sign
+t
T
unary plus - a no op
t--
T
post decrement
t++
T
post increment
--t
T
pre decrement
++t
T
pre increment
Binary Operators
Expression
Return Type
Semantics
t - u
V
subtract u from t
t + u
V
add u to t
t * u
V
multiply t by u
t / u
T
divide t by u
t % u
T
t modulus u
t < u
bool
true if t less than u, false otherwise
t <= u
bool
true if t less than or equal to u, false otherwise
t > u
bool
true if t greater than u, false otherwise
t >= u
bool
true if t greater than or equal to u, false
otherwise
t == u
bool
true if t equal to u, false otherwise
t != u
bool
true if t not equal to u, false otherwise
t = u
T
assign value of u to t
t += u
T
add u to t and assign to t
t -= u
T
subtract u from t and assign to t
t *= u
T
multiply t by u and assign to t
t /= u
T
divide t by u and assign to t
Models
int, float, safe_signed_integer<int>,
safe_signed_range<int>, etc.
Header
#include
<boost/numeric/safe_numerics/concepts/numeric.hpp>