Specialize the transform iterator traits template for functors that are function or function pointer types. It is sufficient to inherit from the version of the traits class that corresponds to a bsl::function of the function type parameter.
Declared in <bdlb_transformiterator.h>
template<
class RESULT,
class ARGUMENT,
class ITERATOR>
struct TransformIterator_Traits<RESULT(*)(ARGUMENT), ITERATOR>
: TransformIterator_Traits<bsl::function<RESULT(ARGUMENT)>, ITERATOR>
| Name | Description |
|---|---|
TransformIterator_Traits<bsl::function<RESULT(ARGUMENT)>, ITERATOR> | This component-private class defines various types that are used in the implementation of the transform iterator. |
| Name | Description |
|---|---|
BaseIteratorTraits | Define the iterator traits class of the underlying iterator. |
ResultType | Define the result type returned by the functor. This is not necessarily the same type as the dereference of the iterator. In C++11, the result type can be determined automatically. Note that various iterations of the language standard might want to instead use std::result_of or std::invoke_result (which have been variously added and then deprecated), but the following works from C++11 onwards. |
difference_type | Type used to represent distances between iterators. |
iterator_category | Define the iterator category of the transform iterator. If the functor returns a reference type, we pass through the iterator category of the underlying iterator, otherwise we use the input iterator tag (because all the other tags require that dereferencing produces a reference). |
pointer | |
reference | Define the remaining standard types of the transform iterator. |
value_type | Value type produced by applying the functor to a dereferenced underlying iterator. |