[#BloombergLP-bdlb-TransformIterator_Traits-0f] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlb.adoc[bdlb]::TransformIterator_Traits :relfileprefix: ../../ :mrdocs: This component‐private class defines various types that are used in the implementation of the transform iterator. == Synopsis Declared in `<bdlb_transformiterator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class FUNCTOR, class ITERATOR> struct TransformIterator_Traits; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/BaseIteratorTraits.adoc[`BaseIteratorTraits`] | Define the iterator traits class of the underlying iterator. | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/ResultType.adoc[`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. | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/difference_type.adoc[`difference_type`] | Type used to represent distances between iterators. | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/iterator_category.adoc[`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). | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/pointer.adoc[`pointer`] | | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/reference.adoc[`reference`] | Define the remaining standard types of the transform iterator. | xref:BloombergLP/bdlb/TransformIterator_Traits-0f/value_type.adoc[`value_type`] | Value type produced by applying the functor to a dereferenced underlying iterator. |=== == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlb/TransformIterator_Traits-05.adoc[`TransformIterator_Traits<RESULT(*)(ARGUMENT), ITERATOR>`] | 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. | xref:BloombergLP/bdlb/TransformIterator_Traits-04.adoc[`TransformIterator_Traits<RESULT(ARGUMENT), ITERATOR>`] | |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlb/TransformIterator_Traits-04.adoc[`TransformIterator_Traits<RESULT(ARGUMENT), ITERATOR>`] | | xref:BloombergLP/bdlb/TransformIterator_Traits-05.adoc[`TransformIterator_Traits<RESULT(*)(ARGUMENT), ITERATOR>`] | 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. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#