Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Library Documentation Index

Safe Numerics

PrevUpHomeNext

Numeric<T>

Description
Notation
Associated Types
Valid Expressions
Models
Header

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

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.

Table 1. General

Expression Return Type Return Value
std::numeric_limits<T>::is_bounded bool true or false
std::numeric_limits<T>::is_integer bool true or false
std::numeric_limits<T>::is_signed bool true or false
std::numeric_limits<T>::is_specialized bool true


Table 2. 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

Table 3. 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>


PrevUpHomeNext