📄 conversion.qbk
字号:
[library Boost.NumericConversion [quickbook 1.4] [authors [Cacciola Carballal, Fernando Luis]] [copyright 2004-2007 Fernando Luis Cacciola Carballal] [category numerics] [id numeric_conversion] [dirname numeric_conversion] [purpose Optimized Policy-based Numeric Conversions ] [source-mode c++] [licenseDistributed 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]) ]][/ Macros will be used for links so we have a central place to change them ][/ Cited Boost resources ][def __MPL_INTEGRAL_CONSTANT__ [@../../../../mpl/doc/refmanual/integral-constant.html MPL's Integral Constant] ][/ Other web resources ][def __SGI_UNARY_FUNCTION__ [@http://www.sgi.com/tech/stl/UnaryFunction.html Unary Function Object]][/ Icons ][def __NOTE__ [$images/note.png]][def __ALERT__ [$images/caution.png]][def __DETAIL__ [$images/note.png]][def __TIP__ [$images/tip.png]][def __QUESTION_MARK__ [$images/question.png]][def __SPACE__ [$images/space.png]][def __GO_TO__ [$images/callouts/R.png]][section Overview]The Boost Numeric Conversion library is a collection of tools to describe andperform conversions between values of different [link numeric_conversion_definitions_numeric_types numeric types].The library includes a special alternative for a subset of `std::numeric_limits<>`,the [link numeric_conversion_bounds bounds<>] traits class, which provides a consistent way to obtain the [link numeric_conversion_definitions_range boundary] values for the [link numeric_conversion_definitions_range range] of a numeric type.It also includes a set of [link numeric_conversion_traits trait classes] which describes the compile-timeproperties of a conversion from a source to a target numeric type.Both [link numeric_conversion_cpp_arithmetic_types arithmetic] and [link numeric_conversion_definitions_numeric_types user-defined numeric types] can be used.A policy-based [link numeric_conversion_converter converter] object which uses `conversion_traits` to selectan optimized implementation is supplied. Such implementation uses an optimalrange checking code suitable for the source/target combination.* The converter's out-of-range behavior can be customized via an[link numeric_conversion_policy_overflow_handler OverflowHandler] policy.* For floating-point to integral conversions, the rounding mode can be selected via the[link numeric_conversion_policy_float_to_int_rounder Float2IntRounder] policy.* A custom low-level conversion routine (for UDTs for instance) can be passed via a[link numeric_conversion_policy_raw_converter RawConverter] policy.* The optimized automatic range-checking logic can be overridden via a[link numeric_conversion_policy_user_range_checker UserRangeChecker] policy.[endsect][include definitions.qbk][include converter.qbk][include requirements.qbk][include bounds.qbk][include conversion_traits.qbk][include converter_policies.qbk][include numeric_cast.qbk][section History and Acknowledgments][heading Pre-formal review]* Kevlin Henney, with help from David Abrahams and Beman Dawes, originally contributedthe previous version of `numeric_cast<>` which already presented the idea of a runtimerange check.* Later, Eric Ford, Kevin Lynch and the author spotted some genericity problems withthat `numeric_cast<>` which prevented it from being used in a generic layer of mathfunctions.* An improved `numeric_cast<>` which properly handled all combinations of arithmetictypes was presented.* David Abrahams and Beman Dawes acknowledged the need of an improved version of`numeric_cast<>` and supported the submission as originally laid out. Daryl Walker andDarin Adler made some important comments and proposed fixes to the original submission.* Special thanks go to Björn Karlsoon who helped the author considerably. Having found theproblems with `numeric_cast<>` himself, he revised very carefully the original submissionand spot a subtle bug in the range checking implementation. He also wrote part ofthis documentation and proof-read and corrected other parts. And most importantly:the features now presented here in this library evolved from the original submission asa result of the useful private communications between Björn and the author.[heading Post-formal review]* Guillaume Melquiond spoted some documentation and code issues, particularly aboutrounding conversions.* The following people contributed an important review of the design, documentation and code: Kevin Lynch, Thorsten Ottosen, Paul Bristow, Daryle Walker, Jhon Torjo, Eric Ford,Gennadiy Rozental.[endsect][section Bibliography]* Standard Documents: # ISO/IEC 14882:98 (C++98 Standard) # ISO/IEC 9899:1999 (C99 Standard) # ISO/IEC 10967-1 (Language Independent Arithmetic (LIA), Part I, 1994) # ISO/IEC 2382-1:1993 (Information Technology - Vocabulary - Part I: Fundamental Terms) # ANSI/IEEE 754-1985 [and IEC 60559:1989] (Binary floating-point) # ANSI/IEEE 854-1988 (Radix Independent floating-point) # ANSI X3/TR-1-82 (Dictionary for Information Processing Systems) # ISO/IEC JTC1/SC22/WG14/N753 C9X Revision Proposal: LIA-1 Binding: Rationale* Papers: # David Goldberg What Every Computer Scientist Should Know About Floating-Point Arithmetic # Prof. William Kahan papers on floating-point.[endsect]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -