/usr/include/boost/safe_numerics
NameSizeModeActions
concept/-0755rm
automatic.hpp177720644editdlrm
checked_default.hpp71340644editdlrm
checked_float.hpp51530644editdlrm
checked_integer.hpp265350644editdlrm
checked_result.hpp41350644editdlrm
checked_result_operations.hpp425600644editdlrm
cpp.hpp68020644editdlrm
exception.hpp68110644editdlrm
exception_policies.hpp74620644editdlrm
interval.hpp83570644editdlrm
native.hpp31830644editdlrm
range_value.hpp14910644editdlrm
safe_base.hpp91570644editdlrm
safe_base_operations.hpp530800644editdlrm
safe_common.hpp9130644editdlrm
safe_compare.hpp48580644editdlrm
safe_integer.hpp9560644editdlrm
safe_integer_literal.hpp70550644editdlrm
safe_integer_range.hpp16000644editdlrm
utility.hpp82130644editdlrm
Edit: /usr/include/boost/safe_numerics/native.hpp (3183B)
#ifndef BOOST_NUMERIC_NATIVE_HPP #define BOOST_NUMERIC_NATIVE_HPP // Copyright (c) 2012 Robert Ramey // // 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) #include #include // policy which creates results types and values equal to that of C++ promotions. // When used in conjunction with a desired exception policy, traps errors but // does not otherwise alter the results produced by the program using it. namespace boost { namespace safe_numerics { struct native { public: // arithmetic operators template struct addition_result { using type = decltype( typename base_type::type() + typename base_type::type() ); }; template struct subtraction_result { using type = decltype( typename base_type::type() - typename base_type::type() ); }; template struct multiplication_result { using type = decltype( typename base_type::type() * typename base_type::type() ); }; template struct division_result { using type = decltype( typename base_type::type() / typename base_type::type() ); }; template struct modulus_result { using type = decltype( typename base_type::type() % typename base_type::type() ); }; // note: comparison_result (<, >, ...) is special. // The return value is always a bool. The type returned here is // the intermediate type applied to make the values comparable. template struct comparison_result { using type = decltype( typename base_type::type() + typename base_type::type() ); }; // shift operators template struct left_shift_result { using type = decltype( typename base_type::type() << typename base_type::type() ); }; template struct right_shift_result { using type = decltype( typename base_type::type() >> typename base_type::type() ); }; // bitwise operators template struct bitwise_or_result { using type = decltype( typename base_type::type() | typename base_type::type() ); }; template struct bitwise_and_result { using type = decltype( typename base_type::type() & typename base_type::type() ); }; template struct bitwise_xor_result { using type = decltype( typename base_type::type() ^ typename base_type::type() ); }; }; } // safe_numerics } // boost #endif // BOOST_NUMERIC_NATIVE_HPP