[#BloombergLP-bslstl-IteratorUtil_LegacyInsertDistance-03] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::IteratorUtil_LegacyInsertDistance :relfileprefix: ../../ :mrdocs: Utility for type‐based dispatch of insert‐distance calculation. == Synopsis Declared in `<bslstl_iteratorutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class t_INPUT_ITERATOR, class t_SENTINEL, bool t_MATCHING_SENTINEL = bsl::is_convertible<t_SENTINEL, t_INPUT_ITERATOR>::value> struct IteratorUtil_LegacyInsertDistance; ---- == Description This supporting utility type is used for type‐based dispatch as part of the implementation of the similarly structured functions `insertDistance` and `canCalculateInsertDistance` from `IteratorUtil`. Selection between the primary template and secondary (much simpler) one is performed based on the defaulted third parameter that checks if the (template parameter) type `t_SENTINEL` is convertible to the (template parameter) type `t_INPUT_ITERATOR`. When the primary template is selected, the decision to delegate distance calculation to `bsl::distance` is performed using tag dispatch. == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/IteratorUtil_LegacyInsertDistance-03/canCalculate.adoc[`canCalculate`] | Return whether insert‐distance can be calculated for these types. | xref:BloombergLP/bslstl/IteratorUtil_LegacyInsertDistance-03/insertDistance.adoc[`insertDistance`] | Return the insertable element count for the specified iterator range. |=== == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/IteratorUtil_LegacyInsertDistance-0c.adoc[`IteratorUtil_LegacyInsertDistance<t_INPUT_ITERATOR, t_SENTINEL, false>`] | Partial specialization that does not support insert‐distance calculation. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#