[/ Copyright 2011 - 2020 John Maddock. Copyright 2013 - 2019 Paul A. Bristow. Copyright 2013 Christopher Kormanyos. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). ] [section:tom_int tom_int] `#include ` namespace boost{ namespace multiprecision{ class tommath_int; typedef number tom_int; }} // namespaces The `tommath_int` back-end is used via the typedef `boost::multiprecision::tom_int`. It acts as a thin wrapper around the [tommath] `tom_int` to provide an integer type that is a drop-in replacement for the native C++ integer types, but with unlimited precision. Things you should know when using this type: * Default constructed objects have the value zero (this is [tommath]'s default behavior). * Although `tom_int` is mostly a drop in replacement for the integer __fundamental_types, it should be noted that it is a rather strange beast as it's a signed type that is not a 2's complement type. As a result the bitwise operations `| & ^` will throw a `std::runtime_error` exception if either of the arguments is negative. Similarly the complement operator`~` is deliberately not implemented for this type. * Formatted IO for this type does not support octal or hexadecimal notation for negative values, as a result performing formatted output on this type when the argument is negative and either of the flags `std::ios_base::oct` or `std::ios_base::hex` are set, will result in a `std::runtime_error` will be thrown. * Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted as a valid integer. * Division by zero results in a `std::overflow_error` being thrown. [h5 Example:] [tommath_eg] [endsect] [/section:tom_int tom_int]