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 the Integer
t, u An object of type modeling Integer

Valid Expressions

In addition to the expressions defined in Numeric the following expressions must be valid.

Table 4. General

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


Expression Return Type Semantics
~t T bitwise complement
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

Models

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

Header

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


PrevUpHomeNext