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

Integer<T>

Description
Refinement of
Notation
Valid Expressions
Models
Header

Description

A type fulfills the requirements of an Integer if it has the properties of a integer.

More specifically, a type T is Integer if there exists a specialization of std::numeric_limits<T> for which std::numeric_limits<T>::is_integer is equal to true. See the documentation for standard library class numeric_limits. The standard library includes such specializations for all 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 requirements of the concept Numeric. But there are types which fulfill this concept for which is_arithmetic<T>::value == false. For example see safe<int>.

Refinement of

Numeric

Notation

T, U, V A type that is a model of an Integer type
t, u An object of type modeling an Integer type
OS, IS A type that is a model of an output or input stream
os, is An object of a type modeling output or input stream

Valid Expressions

In addition to the expressions defined in Integer, the following expression must be true.

Table 4. General

Expression Value
std::numeric_limits<T>::is_integer true


Any or all of the following unary operators MAY be defined. Any such defined operators shall implement the semantics as described below

Table 5. Unary Operator

Expression Return Type Semantics
~t T bitwise complement


Any or all of the following binary operators MAY be defined. Any defined operators shall implement the semantics as described bellow

Table 6. Binary Operators

Expression Return Type Semantics
t % u T t modulus u. t can be a Numeric type.
t << u T shift t left u bits
t >> u T shift t right by u bits
t & u V and of t and u padded out to max # bits in t, u
t | u V or of t and u padded out to max # bits in t, u
t ^ u V exclusive or of t and u padded out to max # bits in t, u
t <<= u T left shift the value of t by u bits
t >>= u T right shift the value of t by u bits
t &= u T and the value of t with u and assign to t
t |= u T or the value of t with u and assign to t
t ^= u T exclusive or the value of t with u and assign to t
os << t OS & write contents of t to output stream
is >> t IS & read contents of an input stream into t


Models

int, safe<int>, safe_unsigned_range<0, 11>, checked_result<int> etc.

Header

#include <boost/safe_numerics/concepts/integer.hpp>


PrevUpHomeNext