mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
Fixed references to Doxygen-generated reference and between sections.
Since BoostBook stylesheets were updated to pass through Doxygen anchor names to BoostBook output, references from QuickBook and manually written BoostBook docs were broken. Fix this by using classref/classname and similar tools to reference Doxygen-generated content. Also, to avoid anchor clashes between different parts of Boost.Utility docs, use proper anchor namespacing: avoid using manual anchors where possible and use fully qualified namespace where not. Fixes https://github.com/boostorg/utility/issues/110.
This commit is contained in:
parent
67d8cbd243
commit
49cd132374
@ -6,8 +6,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[#sec:BOOST_BINARY]
|
[section:BOOST_BINARY Binary Integer Literals]
|
||||||
[section Binary Integer Literals]
|
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
|
@ -285,6 +285,7 @@ doxygen result_of_reference
|
|||||||
doxygen string_view_reference
|
doxygen string_view_reference
|
||||||
:
|
:
|
||||||
$(INCLUDES)/boost/utility/string_view.hpp
|
$(INCLUDES)/boost/utility/string_view.hpp
|
||||||
|
$(INCLUDES)/boost/utility/string_ref.hpp
|
||||||
:
|
:
|
||||||
<location>tmp
|
<location>tmp
|
||||||
<doxygen:param>ENABLE_PREPROCESSING=YES
|
<doxygen:param>ENABLE_PREPROCESSING=YES
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[section Call Traits]
|
[section:call_traits Call Traits]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
@ -19,9 +19,9 @@ The template class __call_traits_T__ encapsulates the
|
|||||||
"best" method to pass a parameter of some type `T` to or
|
"best" method to pass a parameter of some type `T` to or
|
||||||
from a function, and consists of a collection of `typedef`s defined
|
from a function, and consists of a collection of `typedef`s defined
|
||||||
as in the table below. The purpose of __call_traits__ is to ensure
|
as in the table below. The purpose of __call_traits__ is to ensure
|
||||||
that problems like [link sec:refs "references to references"]
|
that problems like [link utility.utilities.call_traits.examples.refs "references to references"]
|
||||||
never occur, and that parameters are passed in the most efficient
|
never occur, and that parameters are passed in the most efficient
|
||||||
manner possible, as in the [link sec:examples examples]. In each
|
manner possible, as in the [link utility.utilities.call_traits.examples examples]. In each
|
||||||
case, if your existing practice is to use the type defined on the
|
case, if your existing practice is to use the type defined on the
|
||||||
left, then replace it with the __call_traits__ defined type on the
|
left, then replace it with the __call_traits__ defined type on the
|
||||||
right.
|
right.
|
||||||
@ -100,7 +100,7 @@ used to solve the reference to reference problem.
|
|||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
# If `T` is already reference type, then __call_traits__ is
|
# If `T` is already reference type, then __call_traits__ is
|
||||||
defined such that [link sec:refs "references to references"]
|
defined such that [link utility.utilities.call_traits.examples.refs "references to references"]
|
||||||
do not occur (requires partial specialization).
|
do not occur (requires partial specialization).
|
||||||
# If `T` is an array type, then __call_traits__ defines `value_type`
|
# If `T` is an array type, then __call_traits__ defines `value_type`
|
||||||
as a "constant pointer to type" rather than an
|
as a "constant pointer to type" rather than an
|
||||||
@ -145,8 +145,7 @@ If `T` is an assignable type the following assignments are possible:
|
|||||||
]
|
]
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:examples]
|
[section:examples Examples]
|
||||||
[section Examples]
|
|
||||||
|
|
||||||
The following table shows the effect that __call_traits__ has on
|
The following table shows the effect that __call_traits__ has on
|
||||||
various types.
|
various types.
|
||||||
@ -204,8 +203,7 @@ struct contained
|
|||||||
```
|
```
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:refs]
|
[section:refs Example 2 (the reference to reference problem):]
|
||||||
[section Example 2 (the reference to reference problem):]
|
|
||||||
|
|
||||||
Consider the definition of __std_binder1st__:
|
Consider the definition of __std_binder1st__:
|
||||||
|
|
||||||
@ -241,8 +239,7 @@ the no "reference to reference" occurs.
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:example3]
|
[section:example3 Example 3 (the `make_pair` problem):]
|
||||||
[section Example 3 (the `make_pair` problem):]
|
|
||||||
|
|
||||||
If we pass the name of an array as one (or both) arguments to `__std_make_pair__`,
|
If we pass the name of an array as one (or both) arguments to `__std_make_pair__`,
|
||||||
then template argument deduction deduces the passed parameter as
|
then template argument deduction deduces the passed parameter as
|
||||||
@ -277,8 +274,7 @@ __std_make_pair__ are not expressed in terms of __call_traits__: doing so
|
|||||||
would prevent template argument deduction from functioning.
|
would prevent template argument deduction from functioning.
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:example4]
|
[section:example4 Example 4 (optimising fill):]
|
||||||
[section Example 4 (optimising fill):]
|
|
||||||
|
|
||||||
The __call_traits__ template will "optimize" the passing
|
The __call_traits__ template will "optimize" the passing
|
||||||
of a small built-in type as a function parameter. This mainly has
|
of a small built-in type as a function parameter. This mainly has
|
||||||
@ -359,12 +355,12 @@ Small built-in types, what the standard calls [@https://en.cppreference.com/w/cp
|
|||||||
types], differ from existing practice only in the `param_type`
|
types], differ from existing practice only in the `param_type`
|
||||||
`typedef`. In this case passing `T const` is compatible
|
`typedef`. In this case passing `T const` is compatible
|
||||||
with existing practice, but may improve performance in some cases
|
with existing practice, but may improve performance in some cases
|
||||||
(see [link sec:example4 Example 4]). In any case this should never
|
(see [link utility.utilities.call_traits.examples.example4 Example 4]). In any case this should never
|
||||||
be any worse than existing practice.
|
be any worse than existing practice.
|
||||||
|
|
||||||
Pointers follow the same rationale as small built-in types.
|
Pointers follow the same rationale as small built-in types.
|
||||||
|
|
||||||
For reference types the rationale follows [link sec:refs Example 2]
|
For reference types the rationale follows [link utility.utilities.call_traits.examples.refs Example 2]
|
||||||
- references to references are not allowed, so the __call_traits__
|
- references to references are not allowed, so the __call_traits__
|
||||||
members must be defined such that these problems do
|
members must be defined such that these problems do
|
||||||
not occur. There is a proposal to modify the language such that
|
not occur. There is a proposal to modify the language such that
|
||||||
@ -425,7 +421,7 @@ For `value_type` (return by value), again only a pointer may be
|
|||||||
returned, not a copy of the whole array, and again __call_traits__
|
returned, not a copy of the whole array, and again __call_traits__
|
||||||
makes the degradation explicit. The `value_type` member is useful
|
makes the degradation explicit. The `value_type` member is useful
|
||||||
whenever an array must be explicitly degraded to a pointer -
|
whenever an array must be explicitly degraded to a pointer -
|
||||||
[link sec:example3 Example 3] provides the test case.
|
[link utility.utilities.call_traits.examples.example3 Example 3] provides the test case.
|
||||||
|
|
||||||
Footnote: the array specialisation for __call_traits__ is the least
|
Footnote: the array specialisation for __call_traits__ is the least
|
||||||
well understood of all the __call_traits__ specialisations. If the given
|
well understood of all the __call_traits__ specialisations. If the given
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
or copy at http://boost.org/LICENSE_1_0.txt
|
or copy at http://boost.org/LICENSE_1_0.txt
|
||||||
]
|
]
|
||||||
|
|
||||||
[section Compressed Pair]
|
[section:compressed_pair Compressed Pair]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
|
|
||||||
|
@ -7,8 +7,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[#sec:in_place_factory]
|
[section:in_place_factory In-place Factory]
|
||||||
[section In-place Factory]
|
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
@ -296,7 +295,6 @@ void foo()
|
|||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[#boost.typed_in_place_factory_base]
|
|
||||||
[xinclude tmp/in_place_factory_reference.xml]
|
[xinclude tmp/in_place_factory_reference.xml]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
|
213
doc/main.qbk
213
doc/main.qbk
@ -57,113 +57,113 @@
|
|||||||
[/ (Macros are defined here because these macros are often referenced in other components) ]
|
[/ (Macros are defined here because these macros are often referenced in other components) ]
|
||||||
[/ (operators macros link to the a table of operators because there's no doxygen reference for the operators) ]
|
[/ (operators macros link to the a table of operators because there's no doxygen reference for the operators) ]
|
||||||
|
|
||||||
[def __BOOST_BINARY__ [link sec:BOOST_BINARY `BOOST_BINARY`]]
|
[def __BOOST_BINARY__ [link utility.utilities.BOOST_BINARY `BOOST_BINARY`]]
|
||||||
[def __in_place_factory__ [link sec:in_place_factory `in_place_factory`]]
|
[def __in_place_factory__ [link utility.utilities.in_place_factory `in_place_factory`]]
|
||||||
|
|
||||||
[def __boost_base_from_member__ [link boost.base_from_member `boost::base_from_member`]]
|
[def __boost_base_from_member__ [classref boost::base_from_member `boost::base_from_member`]]
|
||||||
[def __boost_call_traits__ [link boost.call_traits `boost::call_traits`]]
|
[def __boost_call_traits__ [classref boost::call_traits `boost::call_traits`]]
|
||||||
[def __boost_result_of__ [link boost.result_of `boost::result_of`]]
|
[def __boost_result_of__ [classref boost::result_of `boost::result_of`]]
|
||||||
[def __boost_tr1_result_of__ [link boost.tr1_result_of `boost::tr1_result_of`]]
|
[def __boost_tr1_result_of__ [classref boost::tr1_result_of `boost::tr1_result_of`]]
|
||||||
[def __boost_string_view__ [link boost.basic_string_view `boost::string_view`]]
|
[def __boost_string_view__ [classref boost::basic_string_view `boost::string_view`]]
|
||||||
[def __boost_basic_string_view__ [link boost.basic_string_view `boost::basic_string_view`]]
|
[def __boost_basic_string_view__ [classref boost::basic_string_view `boost::basic_string_view`]]
|
||||||
|
|
||||||
[def __additive1__ [link sec:arithmetic `additive1`]]
|
[def __additive1__ [link utility.utilities.operators.arithmetic `additive1`]]
|
||||||
[def __additive2__ [link sec:arithmetic `additive2`]]
|
[def __additive2__ [link utility.utilities.operators.arithmetic `additive2`]]
|
||||||
[def __arithmetic1__ [link sec:arithmetic `arithmetic1`]]
|
[def __arithmetic1__ [link utility.utilities.operators.arithmetic `arithmetic1`]]
|
||||||
[def __arithmetic2__ [link sec:arithmetic `arithmetic2`]]
|
[def __arithmetic2__ [link utility.utilities.operators.arithmetic `arithmetic2`]]
|
||||||
[def __base_from_member__ [link boost.base_from_member `base_from_member`]]
|
[def __base_from_member__ [classref boost::base_from_member `base_from_member`]]
|
||||||
[def __basic_string_ref__ [link boost.basic_string_view `basic_string_ref`]]
|
[def __basic_string_ref__ [classref boost::basic_string_ref `basic_string_ref`]]
|
||||||
[def __basic_string_view__ [link boost.basic_string_view `basic_string_view`]]
|
[def __basic_string_view__ [classref boost::basic_string_view `basic_string_view`]]
|
||||||
[def __bidirectional_iteratable__ [link sec:arithmetic `bidirectional_iteratable`]]
|
[def __bidirectional_iteratable__ [link utility.utilities.operators.arithmetic `bidirectional_iteratable`]]
|
||||||
[def __bidirectional_iterator_helper__ [link sec:arithmetic `bidirectional_iterator_helper`]]
|
[def __bidirectional_iterator_helper__ [link utility.utilities.operators.arithmetic `bidirectional_iterator_helper`]]
|
||||||
[def __bitwise1__ [link sec:arithmetic `bitwise1`]]
|
[def __bitwise1__ [link utility.utilities.operators.arithmetic `bitwise1`]]
|
||||||
[def __bitwise2__ [link sec:arithmetic `bitwise2`]]
|
[def __bitwise2__ [link utility.utilities.operators.arithmetic `bitwise2`]]
|
||||||
[def __call_traits__ [link boost.call_traits `call_traits`]]
|
[def __call_traits__ [classref boost::call_traits `call_traits`]]
|
||||||
[def __call_traits_T__ [link boost.call_traits `call_traits<T>`]]
|
[def __call_traits_T__ [classref boost::call_traits `call_traits<T>`]]
|
||||||
[def __call_traits_lt__T___ [link boost.call_traits `call_traits<T&>`]]
|
[def __call_traits_lt__T___ [classref boost::call_traits `call_traits<T&>`]]
|
||||||
[def __call_traits_lt__T_lb_N_rb__gt___ [link boost.call_traits `call_traits< T[N]>`]]
|
[def __call_traits_lt__T_lb_N_rb__gt___ [classref boost::call_traits `call_traits< T[N]>`]]
|
||||||
[def __call_traits_lt__const_T_lb_N_rb__gt___ [link boost.call_traits `call_traits< const T[N]>`]]
|
[def __call_traits_lt__const_T_lb_N_rb__gt___ [classref boost::call_traits `call_traits< const T[N]>`]]
|
||||||
[def __compressed_pair__ [link boost.compressed_pair `compressed_pair`]]
|
[def __compressed_pair__ [classref boost::compressed_pair `compressed_pair`]]
|
||||||
[def __decrementable__ [link sec:arithmetic `decrementable`]]
|
[def __decrementable__ [link utility.utilities.operators.arithmetic `decrementable`]]
|
||||||
[def __dereferenceable__ [link sec:arithmetic `dereferenceable`]]
|
[def __dereferenceable__ [link utility.utilities.operators.arithmetic `dereferenceable`]]
|
||||||
[def __equal_pointees__ [link sec:arithmetic `equal_pointees`]]
|
[def __equal_pointees__ [link utility.utilities.operators.arithmetic `equal_pointees`]]
|
||||||
[def __equal_pointees_t__ [link sec:arithmetic `equal_pointees_t`]]
|
[def __equal_pointees_t__ [link utility.utilities.operators.arithmetic `equal_pointees_t`]]
|
||||||
[def __equality_comparable1__ [link sec:arithmetic `equality_comparable1`]]
|
[def __equality_comparable1__ [link utility.utilities.operators.arithmetic `equality_comparable1`]]
|
||||||
[def __equality_comparable2__ [link sec:arithmetic `equality_comparable2`]]
|
[def __equality_comparable2__ [link utility.utilities.operators.arithmetic `equality_comparable2`]]
|
||||||
[def __equivalent1__ [link sec:arithmetic `equivalent1`]]
|
[def __equivalent1__ [link utility.utilities.operators.arithmetic `equivalent1`]]
|
||||||
[def __equivalent2__ [link sec:arithmetic `equivalent2`]]
|
[def __equivalent2__ [link utility.utilities.operators.arithmetic `equivalent2`]]
|
||||||
[def __euclidean_ring_operators1__ [link sec:arithmetic `euclidean_ring_operators1`]]
|
[def __euclidean_ring_operators1__ [link utility.utilities.operators.arithmetic `euclidean_ring_operators1`]]
|
||||||
[def __euclidean_ring_operators2__ [link sec:arithmetic `euclidean_ring_operators2`]]
|
[def __euclidean_ring_operators2__ [link utility.utilities.operators.arithmetic `euclidean_ring_operators2`]]
|
||||||
[def __field_operators1__ [link sec:arithmetic `field_operators1`]]
|
[def __field_operators1__ [link utility.utilities.operators.arithmetic `field_operators1`]]
|
||||||
[def __field_operators2__ [link sec:arithmetic `field_operators2`]]
|
[def __field_operators2__ [link utility.utilities.operators.arithmetic `field_operators2`]]
|
||||||
[def __forward_iteratable__ [link sec:arithmetic `forward_iteratable`]]
|
[def __forward_iteratable__ [link utility.utilities.operators.arithmetic `forward_iteratable`]]
|
||||||
[def __forward_iterator_helper__ [link sec:arithmetic `forward_iterator_helper`]]
|
[def __forward_iterator_helper__ [link utility.utilities.operators.arithmetic `forward_iterator_helper`]]
|
||||||
[def __get__ [link boost.get `get`]]
|
[def __get__ [funcref boost::get `get`]]
|
||||||
[def __hash_range__ [link boost.hash_range `hash_range`]]
|
[def __hash_range__ [funcref boost::hash_range `hash_range`]]
|
||||||
[def __hash_value__ [link boost.hash_value `hash_value`]]
|
[def __hash_value__ [funcref boost::hash_value `hash_value`]]
|
||||||
[def __in_place_factory_base__ [link boost.in_place_factory_base `in_place_factory_base`]]
|
[def __in_place_factory_base__ [classref boost::in_place_factory_base `in_place_factory_base`]]
|
||||||
[def __incrementable__ [link sec:arithmetic `incrementable`]]
|
[def __incrementable__ [link utility.utilities.operators.arithmetic `incrementable`]]
|
||||||
[def __indexable__ [link sec:arithmetic `indexable`]]
|
[def __indexable__ [link utility.utilities.operators.arithmetic `indexable`]]
|
||||||
[def __initialized__ [link boost.initialized `initialized`]]
|
[def __initialized__ [classref boost::initialized `initialized`]]
|
||||||
[def __initialized_value__ [link boost.initialized_value `initialized_value`]]
|
[def __initialized_value__ [globalref boost::initialized_value `initialized_value`]]
|
||||||
[def __initialized_value_t__ [link boost.initialized_value_t `initialized_value_t`]]
|
[def __initialized_value_t__ [classref boost::initialized_value_t `initialized_value_t`]]
|
||||||
[def __input_iteratable__ [link sec:arithmetic `input_iteratable`]]
|
[def __input_iteratable__ [link utility.utilities.operators.arithmetic `input_iteratable`]]
|
||||||
[def __input_iterator_helper__ [link sec:arithmetic `input_iterator_helper`]]
|
[def __input_iterator_helper__ [link utility.utilities.operators.arithmetic `input_iterator_helper`]]
|
||||||
[def __integer_arithmetic1__ [link sec:arithmetic `integer_arithmetic1`]]
|
[def __integer_arithmetic1__ [link utility.utilities.operators.arithmetic `integer_arithmetic1`]]
|
||||||
[def __integer_arithmetic2__ [link sec:arithmetic `integer_arithmetic2`]]
|
[def __integer_arithmetic2__ [link utility.utilities.operators.arithmetic `integer_arithmetic2`]]
|
||||||
[def __integer_multiplicative1__ [link sec:arithmetic `integer_multiplicative1`]]
|
[def __integer_multiplicative1__ [link utility.utilities.operators.arithmetic `integer_multiplicative1`]]
|
||||||
[def __integer_multiplicative2__ [link sec:arithmetic `integer_multiplicative2`]]
|
[def __integer_multiplicative2__ [link utility.utilities.operators.arithmetic `integer_multiplicative2`]]
|
||||||
[def __is_chained_base__ [link sec:arithmetic `is_chained_base`]]
|
[def __is_chained_base__ [link utility.utilities.operators.arithmetic `is_chained_base`]]
|
||||||
[def __less_pointees__ [link boost.less_pointees `less_pointees`]]
|
[def __less_pointees__ [funcref boost::less_pointees `less_pointees`]]
|
||||||
[def __less_pointees_t__ [link boost.less_pointees_t `less_pointees_t`]]
|
[def __less_pointees_t__ [class boost::less_pointees_t `less_pointees_t`]]
|
||||||
[def __less_than_comparable1__ [link sec:arithmetic `less_than_comparable1`]]
|
[def __less_than_comparable1__ [link utility.utilities.operators.arithmetic `less_than_comparable1`]]
|
||||||
[def __less_than_comparable2__ [link sec:arithmetic `less_than_comparable2`]]
|
[def __less_than_comparable2__ [link utility.utilities.operators.arithmetic `less_than_comparable2`]]
|
||||||
[def __multiplicative1__ [link sec:arithmetic `multiplicative1`]]
|
[def __multiplicative1__ [link utility.utilities.operators.arithmetic `multiplicative1`]]
|
||||||
[def __multiplicative2__ [link sec:arithmetic `multiplicative2`]]
|
[def __multiplicative2__ [link utility.utilities.operators.arithmetic `multiplicative2`]]
|
||||||
[def __operator_eq__eq__ [link sec:arithmetic `operator==`]]
|
[def __operator_eq__eq__ [link utility.utilities.operators.arithmetic `operator==`]]
|
||||||
[def __operator_gt__ [link sec:arithmetic `operator_gt_`]]
|
[def __operator_gt__ [link utility.utilities.operators.arithmetic `operator_gt_`]]
|
||||||
[def __operator_gt__eq__ [link sec:arithmetic `operator>`]]
|
[def __operator_gt__eq__ [link utility.utilities.operators.arithmetic `operator>`]]
|
||||||
[def __operator_lt__ [link sec:arithmetic `operator<`]]
|
[def __operator_lt__ [link utility.utilities.operators.arithmetic `operator<`]]
|
||||||
[def __operator_lt__eq__ [link sec:arithmetic `operator<=`]]
|
[def __operator_lt__eq__ [link utility.utilities.operators.arithmetic `operator<=`]]
|
||||||
[def __operator_lt__lt__ [link sec:arithmetic `operator<<`]]
|
[def __operator_lt__lt__ [link utility.utilities.operators.arithmetic `operator<<`]]
|
||||||
[def __operator_not__eq__ [link sec:arithmetic `operator!=`]]
|
[def __operator_not__eq__ [link utility.utilities.operators.arithmetic `operator!=`]]
|
||||||
[def __operators2__ [link sec:arithmetic `operators2`]]
|
[def __operators2__ [link utility.utilities.operators.arithmetic `operators2`]]
|
||||||
[def __operators__ [link sec:arithmetic `operators`]]
|
[def __operators__ [link utility.utilities.operators.arithmetic `operators`]]
|
||||||
[def __operators_lt_T__ [link sec:arithmetic `operators<T,T>`]]
|
[def __operators_lt_T__ [link utility.utilities.operators.arithmetic `operators<T,T>`]]
|
||||||
[def __ordered_euclidean_ring_operators1__ [link sec:arithmetic `ordered_euclidean_ring_operators1`]]
|
[def __ordered_euclidean_ring_operators1__ [link utility.utilities.operators.arithmetic `ordered_euclidean_ring_operators1`]]
|
||||||
[def __ordered_euclidean_ring_operators2__ [link sec:arithmetic `ordered_euclidean_ring_operators2`]]
|
[def __ordered_euclidean_ring_operators2__ [link utility.utilities.operators.arithmetic `ordered_euclidean_ring_operators2`]]
|
||||||
[def __ordered_euclidian_ring_operators1__ [link sec:arithmetic `ordered_euclidian_ring_operators1`]]
|
[def __ordered_euclidian_ring_operators1__ [link utility.utilities.operators.arithmetic `ordered_euclidian_ring_operators1`]]
|
||||||
[def __ordered_euclidian_ring_operators2__ [link sec:arithmetic `ordered_euclidian_ring_operators2`]]
|
[def __ordered_euclidian_ring_operators2__ [link utility.utilities.operators.arithmetic `ordered_euclidian_ring_operators2`]]
|
||||||
[def __ordered_field_operators1__ [link sec:arithmetic `ordered_field_operators1`]]
|
[def __ordered_field_operators1__ [link utility.utilities.operators.arithmetic `ordered_field_operators1`]]
|
||||||
[def __ordered_field_operators2__ [link sec:arithmetic `ordered_field_operators2`]]
|
[def __ordered_field_operators2__ [link utility.utilities.operators.arithmetic `ordered_field_operators2`]]
|
||||||
[def __ordered_ring_operators1__ [link sec:arithmetic `ordered_ring_operators1`]]
|
[def __ordered_ring_operators1__ [link utility.utilities.operators.arithmetic `ordered_ring_operators1`]]
|
||||||
[def __ordered_ring_operators2__ [link sec:arithmetic `ordered_ring_operators2`]]
|
[def __ordered_ring_operators2__ [link utility.utilities.operators.arithmetic `ordered_ring_operators2`]]
|
||||||
[def __output_iteratable__ [link sec:arithmetic `output_iteratable`]]
|
[def __output_iteratable__ [link utility.utilities.operators.arithmetic `output_iteratable`]]
|
||||||
[def __output_iterator_helper__ [link sec:arithmetic `output_iterator_helper`]]
|
[def __output_iterator_helper__ [link utility.utilities.operators.arithmetic `output_iterator_helper`]]
|
||||||
[def __partially_ordered1__ [link sec:arithmetic `partially_ordered1`]]
|
[def __partially_ordered1__ [link utility.utilities.operators.arithmetic `partially_ordered1`]]
|
||||||
[def __partially_ordered2__ [link sec:arithmetic `partially_ordered2`]]
|
[def __partially_ordered2__ [link utility.utilities.operators.arithmetic `partially_ordered2`]]
|
||||||
[def __random_access_iteratable__ [link sec:arithmetic `random_access_iteratable`]]
|
[def __random_access_iteratable__ [link utility.utilities.operators.arithmetic `random_access_iteratable`]]
|
||||||
[def __random_access_iterator_helper__ [link sec:arithmetic `random_access_iterator_helper`]]
|
[def __random_access_iterator_helper__ [link utility.utilities.operators.arithmetic `random_access_iterator_helper`]]
|
||||||
[def __result_of__ [link boost.result_of `result_of`]]
|
[def __result_of__ [classref boost::result_of `result_of`]]
|
||||||
[def __ring_operators1__ [link sec:arithmetic `ring_operators1`]]
|
[def __ring_operators1__ [link utility.utilities.operators.arithmetic `ring_operators1`]]
|
||||||
[def __ring_operators2__ [link sec:arithmetic `ring_operators2`]]
|
[def __ring_operators2__ [link utility.utilities.operators.arithmetic `ring_operators2`]]
|
||||||
[def __shiftable1__ [link sec:arithmetic `shiftable1`]]
|
[def __shiftable1__ [link utility.utilities.operators.arithmetic `shiftable1`]]
|
||||||
[def __shiftable2__ [link sec:arithmetic `shiftable2`]]
|
[def __shiftable2__ [link utility.utilities.operators.arithmetic `shiftable2`]]
|
||||||
[def __string_ref__ [link boost.basic_string_view `string_ref`]]
|
[def __string_ref__ [classref boost::basic_string_ref `string_ref`]]
|
||||||
[def __string_view__ [link boost.basic_string_view `string_view`]]
|
[def __string_view__ [classref boost::basic_string_view `string_view`]]
|
||||||
[def __swap__ [link sec:arithmetic `swap`]]
|
[def __swap__ [link utility.utilities.operators.arithmetic `swap`]]
|
||||||
[def __totally_ordered1__ [link sec:arithmetic `totally_ordered1`]]
|
[def __totally_ordered1__ [link utility.utilities.operators.arithmetic `totally_ordered1`]]
|
||||||
[def __totally_ordered2__ [link sec:arithmetic `totally_ordered2`]]
|
[def __totally_ordered2__ [link utility.utilities.operators.arithmetic `totally_ordered2`]]
|
||||||
[def __tr1_result_of__ [link boost.tr1_result_of `tr1_result_of`]]
|
[def __tr1_result_of__ [classref boost::tr1_result_of `tr1_result_of`]]
|
||||||
[def __typed_in_place_factory_base__ [link boost.typed_in_place_factory_base `typed_in_place_factory_base`]]
|
[def __typed_in_place_factory_base__ [classref boost::typed_in_place_factory_base `typed_in_place_factory_base`]]
|
||||||
[def __u16string_ref__ [link boost.basic_string_view `u16string_ref`]]
|
[def __u16string_ref__ [classref boost::basic_string_ref `u16string_ref`]]
|
||||||
[def __u16string_view__ [link boost.basic_string_view `u16string_view`]]
|
[def __u16string_view__ [classref boost::basic_string_view `u16string_view`]]
|
||||||
[def __u32string_ref__ [link boost.basic_string_view `u32string_ref`]]
|
[def __u32string_ref__ [classref boost::basic_string_ref `u32string_ref`]]
|
||||||
[def __u32string_view__ [link boost.basic_string_view `u32string_view`]]
|
[def __u32string_view__ [classref boost::basic_string_view `u32string_view`]]
|
||||||
[def __unit_steppable__ [link sec:arithmetic `unit_steppable`]]
|
[def __unit_steppable__ [link utility.utilities.operators.arithmetic `unit_steppable`]]
|
||||||
[def __value_initialized__ [link boost.value_initialized `value_initialized`]]
|
[def __value_initialized__ [classref boost::value_initialized `value_initialized`]]
|
||||||
[def __wstring_ref__ [link boost.basic_string_view `wstring_ref`]]
|
[def __wstring_ref__ [classref boost::basic_string_ref `wstring_ref`]]
|
||||||
[def __wstring_view__ [link boost.basic_string_view `wstring_view`]]
|
[def __wstring_view__ [classref boost::basic_string_view `wstring_view`]]
|
||||||
|
|
||||||
[/ std:: types ]
|
[/ std:: types ]
|
||||||
|
|
||||||
@ -219,8 +219,7 @@
|
|||||||
|
|
||||||
[include other.qbk]
|
[include other.qbk]
|
||||||
|
|
||||||
[#sec:reference]
|
[section:reference Quick Reference]
|
||||||
[section:ref Quick Reference]
|
|
||||||
|
|
||||||
[/ Reference table ]
|
[/ Reference table ]
|
||||||
[xinclude quickref.xml]
|
[xinclude quickref.xml]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@
|
|||||||
Official repository: https://github.com/boostorg/utility
|
Official repository: https://github.com/boostorg/utility
|
||||||
]
|
]
|
||||||
|
|
||||||
[section:utilities More Utilities]
|
[section:more_utilities More Utilities]
|
||||||
|
|
||||||
Some utilities have been moved from Boost.Utilities to more appropriate Boost libraries:
|
Some utilities have been moved from Boost.Utilities to more appropriate Boost libraries:
|
||||||
|
|
||||||
|
@ -20,14 +20,14 @@ Over time,
|
|||||||
When the component has moved to another Boost library, Boost.Utility headers still lead to the appropriate headers
|
When the component has moved to another Boost library, Boost.Utility headers still lead to the appropriate headers
|
||||||
in other libraries.
|
in other libraries.
|
||||||
|
|
||||||
[table:id Components
|
[table Components
|
||||||
[[Boost.Utility] [Moved to Boost] [C++ Standard variant]]
|
[[Boost.Utility] [Moved to Boost] [C++ Standard variant]]
|
||||||
[[[@boost:/libs/core/doc/html/core/addressof.html `addressof`]] [[@boost:/libs/core/index.html Boost.Core]] [C++11 __std_addressof__]]
|
[[[@boost:/libs/core/doc/html/core/addressof.html `addressof`]] [[@boost:/libs/core/index.html Boost.Core]] [C++11 __std_addressof__]]
|
||||||
[[__base_from_member__] [] []]
|
[[[link utility.utilities.base_from_member `base_from_member`]] [] []]
|
||||||
[[__BOOST_BINARY__] [] [C++14 [@https://en.cppreference.com/w/cpp/language/integer_literal Binary integer literal]]]
|
[[__BOOST_BINARY__] [] [C++14 [@https://en.cppreference.com/w/cpp/language/integer_literal Binary integer literal]]]
|
||||||
[[__call_traits__] [] []]
|
[[[link utility.utilities.call_traits `call_traits`]] [] []]
|
||||||
[[[@boost:/libs/core/doc/html/core/checked_delete.html `checked_delete`]] [[@boost:/libs/core/index.html Boost.Core]] []]
|
[[[@boost:/libs/core/doc/html/core/checked_delete.html `checked_delete`]] [[@boost:/libs/core/index.html Boost.Core]] []]
|
||||||
[[__compressed_pair__] [] []]
|
[[[link utility.utilities.compressed_pair `compressed_pair`]] [] []]
|
||||||
[[[@boost:/libs/type_traits/doc/html/boost_typetraits/reference/declval.html `declval`]] [[@boost:/libs/type_traits/index.html Boost.TypeTraits]] [C++11 __std_declval__]]
|
[[[@boost:/libs/type_traits/doc/html/boost_typetraits/reference/declval.html `declval`]] [[@boost:/libs/type_traits/index.html Boost.TypeTraits]] [C++11 __std_declval__]]
|
||||||
[[[@boost:/libs/core/doc/html/core/enable_if.html `enable_if`]] [[@boost:/libs/core/index.html Boost.Core]] [C++11 __std_enable_if__]]
|
[[[@boost:/libs/core/doc/html/core/enable_if.html `enable_if`]] [[@boost:/libs/core/index.html Boost.Core]] [C++11 __std_enable_if__]]
|
||||||
[[[@boost:/libs/iterator/doc/generator_iterator.htm generator iterator adaptors]] [[@boost:/libs/iterator/index.html Boost.Iterator]] []]
|
[[[@boost:/libs/iterator/doc/generator_iterator.htm generator iterator adaptors]] [[@boost:/libs/iterator/index.html Boost.Iterator]] []]
|
||||||
@ -35,12 +35,12 @@ in other libraries.
|
|||||||
[[[@boost:/libs/iterator/index.html `iterator_adaptors`]] [[@boost:/libs/iterator/index.html Boost.Iterator]] []]
|
[[[@boost:/libs/iterator/index.html `iterator_adaptors`]] [[@boost:/libs/iterator/index.html Boost.Iterator]] []]
|
||||||
[[[@boost:/libs/iterator/doc/html/iterator/algorithms/next_prior.html `next` / `prior`]] [[@boost:/libs/iterator/index.html Boost.Iterator]] [C++11 __std_next__ / __std_prev__]]
|
[[[@boost:/libs/iterator/doc/html/iterator/algorithms/next_prior.html `next` / `prior`]] [[@boost:/libs/iterator/index.html Boost.Iterator]] [C++11 __std_next__ / __std_prev__]]
|
||||||
[[[@boost:/libs/core/doc/html/core/noncopyable.html `noncopyable`]] [[@boost:/libs/core/index.html Boost.Core]] []]
|
[[[@boost:/libs/core/doc/html/core/noncopyable.html `noncopyable`]] [[@boost:/libs/core/index.html Boost.Core]] []]
|
||||||
[[[link sec:operators `operators`]] [] []]
|
[[[link utility.utilities.operators `operators`]] [] []]
|
||||||
[[[@boost:/libs/io/doc/html/io.html `ostream_string`]] [[@boost:/libs/io/index.html Boost.IO]] []]
|
[[[@boost:/libs/io/doc/html/io.html `ostream_string`]] [[@boost:/libs/io/index.html Boost.IO]] []]
|
||||||
[[__result_of__] [] [C++11 __std_result_of__]]
|
[[[link utility.utilities.result_of `result_of`]] [] [C++11 __std_result_of__]]
|
||||||
[[__string_view__] [] [C++17 __std_string_view__]]
|
[[[link utility.utilities.string_view `string_view`]] [] [C++17 __std_string_view__]]
|
||||||
[[[@boost:/libs/throw_exception/doc/html/throw_exception.html#using_boost_throw_exception `throw_exception`]] [[@boost:/libs/throw_exception/index.html Boost.ThrowException]] []]
|
[[[@boost:/libs/throw_exception/doc/html/throw_exception.html#using_boost_throw_exception `throw_exception`]] [[@boost:/libs/throw_exception/index.html Boost.ThrowException]] []]
|
||||||
[[[link sec:value_init `value_init`]] [] [C++11 [@https://en.cppreference.com/w/cpp/language/list_initialization List initialization]]]
|
[[[link utility.utilities.value_init `value_init`]] [] [C++11 [@https://en.cppreference.com/w/cpp/language/list_initialization List initialization]]]
|
||||||
]
|
]
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
261
doc/quickref.xml
261
doc/quickref.xml
@ -43,7 +43,7 @@
|
|||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.base_from_member">base_from_member</link>
|
<classname alt="boost::base_from_member">base_from_member</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -53,19 +53,16 @@
|
|||||||
<bridgehead renderas="sect3">Type Traits</bridgehead>
|
<bridgehead renderas="sect3">Type Traits</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.call_traits">call_traits</link>
|
<classname alt="boost::call_traits">call_traits</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.call_traits">call_traits<T&></link>
|
<classname alt="boost::call_traits">call_traits<T&></classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.call_traits">call_traits<T[N]>
|
<classname alt="boost::call_traits">call_traits<T[N]></classname>
|
||||||
</link>
|
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.call_traits">call_traits<const
|
<classname alt="boost::call_traits">call_traits<const T[N]></classname>
|
||||||
T[N]>
|
|
||||||
</link>
|
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -75,14 +72,14 @@
|
|||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.compressed_pair">compressed_pair</link>
|
<classname alt="boost::compressed_pair">compressed_pair</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
|
|
||||||
<bridgehead renderas="sect3">Functions</bridgehead>
|
<bridgehead renderas="sect3">Functions</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.detail.compressed_pair_hpp">swap</link>
|
<headername alt="boost/detail/compressed_pair.hpp">swap</headername>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -92,11 +89,10 @@
|
|||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.in_place_factory_base">in_place_factory_base</link>
|
<classname alt="boost::in_place_factory_base">in_place_factory_base</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.typed_in_place_factory_base">typed_in_place_factory_base
|
<classname alt="boost::typed_in_place_factory_base">typed_in_place_factory_base</classname>
|
||||||
</link>
|
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -126,45 +122,45 @@
|
|||||||
<bridgehead renderas="sect3">Classes (1 of 5)</bridgehead>
|
<bridgehead renderas="sect3">Classes (1 of 5)</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">additive1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.additive1">additive1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">additive2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.additive2">additive2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">arithmetic1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.arithmetic1">arithmetic1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">arithmetic2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.arithmetic2">arithmetic2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">bidirectional_iteratable</link>
|
<link linkend="utility.utilities.operators.deref.grpd_iter_oprs.bidirectional_iteratable">bidirectional_iteratable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">
|
<link linkend="utility.utilities.operators.deref.iterator.bidirectional_iterator_helper">
|
||||||
bidirectional_iterator_helper
|
bidirectional_iterator_helper
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">bitwise1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.bitwise1">bitwise1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">bitwise2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.bitwise2">bitwise2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">decrementable</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.decrementable">decrementable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">dereferenceable</link>
|
<link linkend="utility.utilities.operators.deref.dereference.dereferenceable">dereferenceable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">equality_comparable1</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.equality_comparable1">equality_comparable1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">equality_comparable2</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.equality_comparable2">equality_comparable2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">equivalent1</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.equivalent1">equivalent1</link>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -173,45 +169,45 @@
|
|||||||
<bridgehead renderas="sect3">Classes (2 of 5)</bridgehead>
|
<bridgehead renderas="sect3">Classes (2 of 5)</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">equivalent2</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.equivalent2">equivalent2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">euclidean_ring_operators1
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.euclidean_ring_operators1">euclidean_ring_operators1
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">euclidean_ring_operators2
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.euclidean_ring_operators2">euclidean_ring_operators2
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">field_operators1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.field_operators1">field_operators1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">field_operators2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.field_operators2">field_operators2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">forward_iteratable</link>
|
<link linkend="utility.utilities.operators.deref.grpd_iter_oprs.forward_iteratable">forward_iteratable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">forward_iterator_helper</link>
|
<link linkend="utility.utilities.operators.deref.iterator.forward_iterator_helper">forward_iterator_helper</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">incrementable</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.incrementable">incrementable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">indexable</link>
|
<link linkend="utility.utilities.operators.deref.dereference.indexable">indexable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">input_iteratable</link>
|
<link linkend="utility.utilities.operators.deref.grpd_iter_oprs.input_iteratable">input_iteratable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">input_iterator_helper</link>
|
<link linkend="utility.utilities.operators.deref.iterator.input_iterator_helper">input_iterator_helper</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">integer_arithmetic1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.integer_arithmetic1">integer_arithmetic1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">integer_arithmetic2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.integer_arithmetic2">integer_arithmetic2</link>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -220,49 +216,47 @@
|
|||||||
<bridgehead renderas="sect3">Classes (3 of 5)</bridgehead>
|
<bridgehead renderas="sect3">Classes (3 of 5)</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">integer_multiplicative1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.integer_multiplicative1">integer_multiplicative1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">integer_multiplicative2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.integer_multiplicative2">integer_multiplicative2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">is_chained_base</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.less_than_comparable1">less_than_comparable1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">less_than_comparable1</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.less_than_comparable2">less_than_comparable2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">less_than_comparable2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.multiplicative1">multiplicative1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">multiplicative1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.multiplicative2">multiplicative2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">multiplicative2</link>
|
<link linkend="utility.utilities.operators.arithmetic.ex_oprs.operators1">operators1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">operators</link>
|
<link linkend="utility.utilities.operators.arithmetic.ex_oprs.operators2">operators2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">operators2</link>
|
<link linkend="utility.utilities.operators.arithmetic.ex_oprs.operators2">operators<T,T></link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">operators<T,T></link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_euclidean_ring_operators1">
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">
|
|
||||||
ordered_euclidean_ring_operators1
|
ordered_euclidean_ring_operators1
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_euclidean_ring_operators2">
|
||||||
ordered_euclidean_ring_operators2
|
ordered_euclidean_ring_operators2
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_field_operators1">ordered_field_operators1</link>
|
||||||
ordered_euclidian_ring_operators1
|
</member>
|
||||||
</link>
|
<member>
|
||||||
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_field_operators2">ordered_field_operators2</link>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -271,47 +265,45 @@
|
|||||||
<bridgehead renderas="sect3">Classes (4 of 5)</bridgehead>
|
<bridgehead renderas="sect3">Classes (4 of 5)</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_ring_operators1">ordered_ring_operators1</link>
|
||||||
ordered_euclidian_ring_operators2
|
|
||||||
</link>
|
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ordered_field_operators1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ordered_ring_operators2">ordered_ring_operators2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ordered_field_operators2</link>
|
<link linkend="utility.utilities.operators.deref.grpd_iter_oprs.output_iteratable">output_iteratable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ordered_ring_operators1</link>
|
<link linkend="utility.utilities.operators.deref.iterator.output_iterator_helper">output_iterator_helper</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ordered_ring_operators2</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.partially_ordered1">partially_ordered1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">output_iteratable</link>
|
<link linkend="utility.utilities.operators.arithmetic.smpl_oprs.partially_ordered2">partially_ordered2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">output_iterator_helper</link>
|
<link linkend="utility.utilities.operators.deref.grpd_iter_oprs.random_access_iteratable">random_access_iteratable</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">partially_ordered1</link>
|
<link linkend="utility.utilities.operators.deref.iterator.random_access_iterator_helper">
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">partially_ordered2</link>
|
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">random_access_iteratable</link>
|
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">
|
|
||||||
random_access_iterator_helper
|
random_access_iterator_helper
|
||||||
</link>
|
</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ring_operators1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ring_operators1">ring_operators1</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">ring_operators2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.ring_operators2">ring_operators2</link>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.shiftable1">shiftable1</link>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.shiftable2">shiftable2</link>
|
||||||
|
</member>
|
||||||
|
<member>
|
||||||
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.totally_ordered1">totally_ordered1</link>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -320,25 +312,10 @@
|
|||||||
<bridgehead renderas="sect3">Classes (5 of 5)</bridgehead>
|
<bridgehead renderas="sect3">Classes (5 of 5)</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">shiftable1</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.totally_ordered2">totally_ordered2</link>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="sec:arithmetic">shiftable2</link>
|
<link linkend="utility.utilities.operators.arithmetic.grpd_oprs.unit_steppable">unit_steppable</link>
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">totally_ordered1</link>
|
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">totally_ordered2</link>
|
|
||||||
</member>
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">unit_steppable</link>
|
|
||||||
</member>
|
|
||||||
</simplelist>
|
|
||||||
<bridgehead renderas="sect3">Type Traits</bridgehead>
|
|
||||||
<simplelist type="vert" columns="1">
|
|
||||||
<member>
|
|
||||||
<link linkend="sec:arithmetic">is_chained_base</link>
|
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -374,10 +351,10 @@
|
|||||||
<bridgehead renderas="sect3">Type Traits</bridgehead>
|
<bridgehead renderas="sect3">Type Traits</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.result_of">result_of</link>
|
<classname alt="boost::result_of">result_of</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.tr1_result_of">tr1_result_of</link>
|
<classname alt="boost::tr1_result_of">tr1_result_of</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -387,28 +364,28 @@
|
|||||||
<bridgehead renderas="sect3">Aliases</bridgehead>
|
<bridgehead renderas="sect3">Aliases</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">string_view</link>
|
<classname alt="boost::basic_string_view">string_view</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">u16string_ref</link>
|
<classname alt="boost::basic_string_ref">u16string_ref</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">u16string_view</link>
|
<classname alt="boost::basic_string_view">u16string_view</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">u32string_ref</link>
|
<classname alt="boost::basic_string_ref">u32string_ref</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">u32string_view</link>
|
<classname alt="boost::basic_string_view">u32string_view</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">wstring_ref</link>
|
<classname alt="boost::basic_string_ref">wstring_ref</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">wstring_view</link>
|
<classname alt="boost::basic_string_view">wstring_view</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">string_ref</link>
|
<classname alt="boost::basic_string_ref">string_ref</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -417,19 +394,19 @@
|
|||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">basic_string_ref</link>
|
<classname alt="boost::basic_string_ref">basic_string_ref</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.basic_string_view">basic_string_view</link>
|
<classname alt="boost::basic_string_view">basic_string_view</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
<bridgehead renderas="sect3">Functions</bridgehead>
|
<bridgehead renderas="sect3">Functions</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.hash_range">hash_range</link>
|
<functionname alt="boost::hash_range">hash_range</functionname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.hash_value">hash_value</link>
|
<functionname alt="boost::hash_value">hash_value</functionname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
@ -438,58 +415,58 @@
|
|||||||
<bridgehead renderas="sect3">Operators</bridgehead>
|
<bridgehead renderas="sect3">Operators</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator==</link>
|
<headername alt="boost/utility/string_view.hpp">operator==</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator!=</link>
|
<headername alt="boost/utility/string_view.hpp">operator!=</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator<</link>
|
<headername alt="boost/utility/string_view.hpp">operator<</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator<=</link>
|
<headername alt="boost/utility/string_view.hpp">operator<=</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator></link>
|
<headername alt="boost/utility/string_view.hpp">operator></headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator>=</link>
|
<headername alt="boost/utility/string_view.hpp">operator>=</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.string_view_hpp">operator<<</link>
|
<headername alt="boost/utility/string_view.hpp">operator<<</headername>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<!-- value_init -->
|
<!-- value_init -->
|
||||||
<entry valign="top">
|
<entry valign="top">
|
||||||
<bridgehead renderas="sect3">Classes</bridgehead>
|
<bridgehead renderas="sect3">Classes</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.initialized">initialized</link>
|
<classname alt="boost::initialized">initialized</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.initialized_value_t">initialized_value_t</link>
|
<classname alt="boost::initialized_value_t">initialized_value_t</classname>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.value_initialized">value_initialized</link>
|
<classname alt="boost::value_initialized">value_initialized</classname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
<bridgehead renderas="sect3">Functions</bridgehead>
|
<bridgehead renderas="sect3">Functions</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.value_init_hpp">get</link>
|
<headername alt="boost/utility/value_init.hpp">get</headername>
|
||||||
</member>
|
</member>
|
||||||
<member>
|
<member>
|
||||||
<link linkend="header.boost.utility.value_init_hpp">swap</link>
|
<headername alt="boost/utility/value_init.hpp">swap</headername>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
<bridgehead renderas="sect3">Constants</bridgehead>
|
<bridgehead renderas="sect3">Constants</bridgehead>
|
||||||
<simplelist type="vert" columns="1">
|
<simplelist type="vert" columns="1">
|
||||||
<member>
|
<member>
|
||||||
<link linkend="boost.initialized_value">initialized_value</link>
|
<globalname alt="boost::initialized_value">initialized_value</globalname>
|
||||||
</member>
|
</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[section Result of]
|
[section:result_of Result of]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
@ -122,7 +122,7 @@ and is not implemented by some compilers.
|
|||||||
the actual result type deduced by __decltype__, then using TR1 with a __decltype__ fallback
|
the actual result type deduced by __decltype__, then using TR1 with a __decltype__ fallback
|
||||||
will allow you to work with both your existing TR1 function objects and new C++11
|
will allow you to work with both your existing TR1 function objects and new C++11
|
||||||
function object. This situation could occur if your legacy function objects
|
function object. This situation could occur if your legacy function objects
|
||||||
misused the TR1 protocol. See the documentation on known [link sec:result_of_tr1_diff differences]
|
misused the TR1 protocol. See the documentation on known [link utility.utilities.result_of.result_of_tr1_diff differences]
|
||||||
between __boost_result_of__ and TR1.
|
between __boost_result_of__ and TR1.
|
||||||
|
|
||||||
* [#BOOST_NO_RESULT_OF] This implementation of __result_of__ requires class template
|
* [#BOOST_NO_RESULT_OF] This implementation of __result_of__ requires class template
|
||||||
@ -138,8 +138,7 @@ or, for motivation and design rationale, the __result_of__
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:result_of_guidelines]
|
[section:result_of_guidelines Usage guidelines for __boost_result_of__]
|
||||||
[section Usage guidelines for __boost_result_of__]
|
|
||||||
|
|
||||||
The following are general suggestions about when and how to use __boost_result_of__.
|
The following are general suggestions about when and how to use __boost_result_of__.
|
||||||
|
|
||||||
@ -151,7 +150,7 @@ there's no reason to stop using it.
|
|||||||
# If you are targeting C++11 but may port your code to legacy compilers
|
# If you are targeting C++11 but may port your code to legacy compilers
|
||||||
at some time in the future, then use __boost_result_of__ with __decltype__.
|
at some time in the future, then use __boost_result_of__ with __decltype__.
|
||||||
When __decltype__ is used __boost_result_of__ and `__std_result_of__` are usually
|
When __decltype__ is used __boost_result_of__ and `__std_result_of__` are usually
|
||||||
interchangeable. See the documentation on known [link sec:result_of_cxx11_diff differences]
|
interchangeable. See the documentation on known [link utility.utilities.result_of.result_of_cxx11_diff differences]
|
||||||
between __boost_result_of__ and C++11 __std_result_of__.
|
between __boost_result_of__ and C++11 __std_result_of__.
|
||||||
|
|
||||||
# If compiler portability is required, use __boost_result_of__ with the TR1 protocol
|
# If compiler portability is required, use __boost_result_of__ with the TR1 protocol
|
||||||
@ -195,8 +194,7 @@ typedef __boost_result_of__<
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:result_of_tr1_protocol_guidelines]
|
[section:result_of_tr1_protocol_guidelines Usage guidelines for the TR1 result_of protocol]
|
||||||
[section Usage guidelines for the TR1 result_of protocol]
|
|
||||||
|
|
||||||
On compliant C++11 compilers, __boost_result_of__ can
|
On compliant C++11 compilers, __boost_result_of__ can
|
||||||
use __decltype__ to deduce the type of any
|
use __decltype__ to deduce the type of any
|
||||||
@ -212,7 +210,7 @@ argument types or the cv-qualification of the
|
|||||||
function object, simply
|
function object, simply
|
||||||
define `result_type`. There is no need
|
define `result_type`. There is no need
|
||||||
to use the `result` template unless the
|
to use the `result` template unless the
|
||||||
return type varies.</li>
|
return type varies.
|
||||||
|
|
||||||
* Use the protocol specified type when defining
|
* Use the protocol specified type when defining
|
||||||
function prototypes. This can help ensure the
|
function prototypes. This can help ensure the
|
||||||
@ -274,8 +272,7 @@ struct functor {
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:result_of_tr1_diff]
|
[section:result_of_tr1_diff Known differences between __boost_result_of__ and __boost_tr1_result_of__]
|
||||||
[section Known differences between __boost_result_of__ and __boost_tr1_result_of__]
|
|
||||||
|
|
||||||
When using __decltype__, __boost_result_of__ ignores the TR1 protocol and instead deduces the
|
When using __decltype__, __boost_result_of__ ignores the TR1 protocol and instead deduces the
|
||||||
return type of function objects directly via __decltype__. In most situations, users
|
return type of function objects directly via __decltype__. In most situations, users
|
||||||
@ -399,8 +396,7 @@ BOOST_STATIC_ASSERT((
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:result_of_cxx11_diff]
|
[section:result_of_cxx11_diff Known differences between __boost_result_of__ and C++11 result_of]
|
||||||
[section Known differences between __boost_result_of__ and C++11 result_of]
|
|
||||||
|
|
||||||
When using __decltype__, __boost_result_of__ implements most of the C++11 __std_result_of__
|
When using __decltype__, __boost_result_of__ implements most of the C++11 __std_result_of__
|
||||||
specification. One known exception is that __boost_result_of__ does not implement the
|
specification. One known exception is that __boost_result_of__ does not implement the
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[section String View]
|
[section:string_view String View]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
|
@ -7,9 +7,7 @@
|
|||||||
/]
|
/]
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
[#sec:value_init]
|
[section:value_init Value Init]
|
||||||
[section Value Init]
|
|
||||||
|
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[section Introduction]
|
[section Introduction]
|
||||||
@ -61,7 +59,7 @@ the syntax did not allow for a class that has an explicitly declared constructor
|
|||||||
The fourth form is the most generic form of them, as it can be used to initialize
|
The fourth form is the most generic form of them, as it can be used to initialize
|
||||||
arithmetic types, class types, aggregates, pointers, and other types.
|
arithmetic types, class types, aggregates, pointers, and other types.
|
||||||
The declaration, `T4 var4 = T4()`, should be read as follows: First a temporary
|
The declaration, `T4 var4 = T4()`, should be read as follows: First a temporary
|
||||||
object is created, by `T4()`. This object is [link sec:valueinit value-initialized].
|
object is created, by `T4()`. This object is [link utility.utilities.value_init.details.value_initialization value-initialized].
|
||||||
Next the temporary object is copied to the named variable, `var4`. Afterwards,
|
Next the temporary object is copied to the named variable, `var4`. Afterwards,
|
||||||
the temporary is destroyed. While the copying and the destruction are likely to
|
the temporary is destroyed. While the copying and the destruction are likely to
|
||||||
be optimized away, C++ still requires the type `T4` to be __CopyConstructible__.
|
be optimized away, C++ still requires the type `T4` to be __CopyConstructible__.
|
||||||
@ -69,11 +67,11 @@ So `T4` needs to be ['both] __DefaultConstructible__ ['and] __CopyConstructible_
|
|||||||
|
|
||||||
A class may not be CopyConstructible, for example because it may have a
|
A class may not be CopyConstructible, for example because it may have a
|
||||||
private and undefined copy constructor, or because it may be derived from
|
private and undefined copy constructor, or because it may be derived from
|
||||||
`boost::noncopyable`. Scott Meyers \[[link sec:references 2]\] explains why a
|
`boost::noncopyable`. Scott Meyers \[[link utility.utilities.value_init.references 2]\] explains why a
|
||||||
class would be defined like that.
|
class would be defined like that.
|
||||||
|
|
||||||
There is another, less obvious disadvantage to the fourth form, `T4 var4 = T4()`:
|
There is another, less obvious disadvantage to the fourth form, `T4 var4 = T4()`:
|
||||||
It suffers from various [link sec:compiler_issues compiler issues], causing
|
It suffers from various [link utility.utilities.value_init.details.compiler_issues compiler issues], causing
|
||||||
a variable to be left uninitialized in some compiler specific cases.
|
a variable to be left uninitialized in some compiler specific cases.
|
||||||
|
|
||||||
The template __value_initialized__ offers a generic way to initialize
|
The template __value_initialized__ offers a generic way to initialize
|
||||||
@ -103,13 +101,12 @@ but robust against the aforementioned compiler issues.
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:details]
|
[section:details Details]
|
||||||
[section Details]
|
|
||||||
|
|
||||||
The C++ standard \[[link sec:references 3]\] contains the definitions
|
The C++ standard \[[link utility.utilities.value_init.references 3]\] contains the definitions
|
||||||
of `zero-initialization` and `default-initialization`. Informally, zero-initialization
|
of `zero-initialization` and `default-initialization`. Informally, zero-initialization
|
||||||
means that the object is given the initial value `0` converted to the type and
|
means that the object is given the initial value `0` converted to the type and
|
||||||
default-initialization means that [@https://en.cppreference.com/w/cpp/named_req/PODType POD] \[[link sec:references 4]\] types are zero-initialized,
|
default-initialization means that [@https://en.cppreference.com/w/cpp/named_req/PODType POD] \[[link utility.utilities.value_init.references 4]\] types are zero-initialized,
|
||||||
while non-POD class types are initialized with their corresponding default constructors.
|
while non-POD class types are initialized with their corresponding default constructors.
|
||||||
|
|
||||||
A ['declaration] can contain an ['initializer], which specifies the
|
A ['declaration] can contain an ['initializer], which specifies the
|
||||||
@ -136,8 +133,7 @@ foo ( __std_string__() ) ;
|
|||||||
// as indicated by the initializer ()
|
// as indicated by the initializer ()
|
||||||
```
|
```
|
||||||
|
|
||||||
[#sec:valueinit]
|
[section:value_initialization value-initialization]
|
||||||
[h5 value-initialization]
|
|
||||||
|
|
||||||
The first [@http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html Technical
|
The first [@http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html Technical
|
||||||
Corrigendum for the C++ Standard] (TC1), whose draft was released to the public in
|
Corrigendum for the C++ Standard] (TC1), whose draft was released to the public in
|
||||||
@ -173,8 +169,9 @@ eat ( int() ) ; // value-initialized
|
|||||||
eat ( __std_string__() ) ; // value-initialized
|
eat ( __std_string__() ) ; // value-initialized
|
||||||
```
|
```
|
||||||
|
|
||||||
[#sec:valueinitsyn]
|
[endsect]
|
||||||
[h5 value-initialization syntax]
|
|
||||||
|
[section:syntax value-initialization syntax]
|
||||||
|
|
||||||
Value initialization is specified using `()`. However, the empty set of
|
Value initialization is specified using `()`. However, the empty set of
|
||||||
parentheses is not permitted by the syntax of initializers because it is
|
parentheses is not permitted by the syntax of initializers because it is
|
||||||
@ -224,8 +221,9 @@ This is the solution as it was supplied by earlier versions of the
|
|||||||
`__value_initialized__<T>` template class. Unfortunately this approach
|
`__value_initialized__<T>` template class. Unfortunately this approach
|
||||||
suffered from various compiler issues.
|
suffered from various compiler issues.
|
||||||
|
|
||||||
[#sec:compiler_issues]
|
[endsect]
|
||||||
[h5 Compiler issues]
|
|
||||||
|
[section:compiler_issues Compiler issues]
|
||||||
|
|
||||||
Various compilers have not yet fully implemented value-initialization.
|
Various compilers have not yet fully implemented value-initialization.
|
||||||
So when an object should be ['value-initialized] according to the C++ Standard,
|
So when an object should be ['value-initialized] according to the C++ Standard,
|
||||||
@ -242,8 +240,6 @@ go wrong on various compilers.
|
|||||||
At the moment of writing, May 2010, the following reported issues regarding
|
At the moment of writing, May 2010, the following reported issues regarding
|
||||||
value-initialization are still there in current compiler releases:
|
value-initialization are still there in current compiler releases:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* [@https://connect.microsoft.com/VisualStudio/feedback/details/100744 Microsoft Visual Studio Feedback ID 100744, Value-initialization in new-expression]: Reported by Pavel Kuznetsov (MetaCommunications Engineering), 2005.
|
* [@https://connect.microsoft.com/VisualStudio/feedback/details/100744 Microsoft Visual Studio Feedback ID 100744, Value-initialization in new-expression]: Reported by Pavel Kuznetsov (MetaCommunications Engineering), 2005.
|
||||||
* [@http://connect.microsoft.com/VisualStudio/feedback/details/484295 Microsoft Visual Studio Feedback ID 484295, VC++ does not value-initialize members of derived classes without user-declared constructor] Reported by Sylvester Hesp, 2009.
|
* [@http://connect.microsoft.com/VisualStudio/feedback/details/484295 Microsoft Visual Studio Feedback ID 484295, VC++ does not value-initialize members of derived classes without user-declared constructor] Reported by Sylvester Hesp, 2009.
|
||||||
* [@https://connect.microsoft.com/VisualStudio/feedback/details/499606 Microsoft Visual Studio Feedback ID 499606, Presence of copy constructor breaks member class initialization] Reported by Alex Vakulenko, 2009
|
* [@https://connect.microsoft.com/VisualStudio/feedback/details/499606 Microsoft Visual Studio Feedback ID 499606, Presence of copy constructor breaks member class initialization] Reported by Alex Vakulenko, 2009
|
||||||
@ -267,11 +263,11 @@ compiler defect macro] `BOOST_NO_COMPLETE_VALUE_INITIALIZATION`.
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:types]
|
[endsect]
|
||||||
[section Types and objects]
|
|
||||||
|
|
||||||
[#sec:val_init]
|
[section:types Types and objects]
|
||||||
[section `template class value_initialized<T>`]
|
|
||||||
|
[section:val_init `template class value_initialized<T>`]
|
||||||
|
|
||||||
```
|
```
|
||||||
namespace boost {
|
namespace boost {
|
||||||
@ -323,7 +319,7 @@ void swap ( __value_initialized__<T>& lhs, __value_initialized__<T>& rhs )
|
|||||||
```
|
```
|
||||||
|
|
||||||
An object of this template class is a `T`-wrapper convertible to `'T&'` whose
|
An object of this template class is a `T`-wrapper convertible to `'T&'` whose
|
||||||
wrapped object (data member of type `T`) is [link sec:valueinit value-initialized] upon default-initialization
|
wrapped object (data member of type `T`) is [link utility.utilities.value_init.details.value_initialization value-initialized] upon default-initialization
|
||||||
of this wrapper class:
|
of this wrapper class:
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -338,7 +334,7 @@ assert( y == def ) ;
|
|||||||
|
|
||||||
The purpose of this wrapper is to provide a consistent syntax for value initialization
|
The purpose of this wrapper is to provide a consistent syntax for value initialization
|
||||||
of scalar, union and class types (POD and non-POD) since the correct syntax for value
|
of scalar, union and class types (POD and non-POD) since the correct syntax for value
|
||||||
initialization varies (see [link sec:valueinitsyn value-initialization syntax]).
|
initialization varies (see [link utility.utilities.value_init.details.syntax value-initialization syntax]).
|
||||||
|
|
||||||
The wrapped object can be accessed either through the conversion operator
|
The wrapped object can be accessed either through the conversion operator
|
||||||
`T&`, the member function `data()`, or the non-member function `get()`:
|
`T&`, the member function `data()`, or the non-member function `get()`:
|
||||||
@ -404,7 +400,7 @@ supports the idea of logical constness.
|
|||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[h5 Recommended practice: The non-member get() idiom]
|
[section Recommended practice: The non-member get() idiom]
|
||||||
|
|
||||||
The obscure behavior of being able to modify a non-`const`
|
The obscure behavior of being able to modify a non-`const`
|
||||||
wrapped object from within a constant wrapper (as was supported by previous
|
wrapped object from within a constant wrapper (as was supported by previous
|
||||||
@ -426,8 +422,9 @@ get(cx_c) = 1; // ERROR: Cannot modify a const object
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:initialized]
|
[endsect]
|
||||||
[section `template class initialized<T>`]
|
|
||||||
|
[section:initialized `template class initialized<T>`]
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -491,8 +488,7 @@ direct-initialized, none of the two wrappers really needs to be used.
|
|||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:initialized_value]
|
[section:initialized_value `initialized_value`]
|
||||||
[section `initialized_value`]
|
|
||||||
|
|
||||||
```
|
```
|
||||||
namespace boost {
|
namespace boost {
|
||||||
@ -538,8 +534,7 @@ T var = __initialized_value__;
|
|||||||
[endsect]
|
[endsect]
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[#sec:references]
|
[section:references References]
|
||||||
[section References]
|
|
||||||
|
|
||||||
# Bjarne Stroustrup, Gabriel Dos Reis, and J. Stephen Adamczyk wrote various papers,
|
# Bjarne Stroustrup, Gabriel Dos Reis, and J. Stephen Adamczyk wrote various papers,
|
||||||
proposing to extend the support for brace-enclosed ['initializer lists]
|
proposing to extend the support for brace-enclosed ['initializer lists]
|
||||||
@ -561,8 +556,7 @@ compiler-generated functions you do not want], [@http://www.aristeia.com/books.h
|
|||||||
[xinclude tmp/value_init_reference.xml]
|
[xinclude tmp/value_init_reference.xml]
|
||||||
[/===============]
|
[/===============]
|
||||||
|
|
||||||
[#sec:acknowledgements]
|
[section:acknowledgements Acknowledgements]
|
||||||
[section Acknowledgements]
|
|
||||||
|
|
||||||
__value_initialized__ was developed by Fernando Cacciola, with help and suggestions
|
__value_initialized__ was developed by Fernando Cacciola, with help and suggestions
|
||||||
from David Abrahams and Darin Adler.
|
from David Abrahams and Darin Adler.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user