std::experimental::ranges:: distance
|
Definiert im Header
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* unspecified */
distance
=
/* unspecified */
;
|
(ranges TS)
(Anpassungspunktobjekt) |
|
|
Aufrufsignatur
|
||
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr ranges :: difference_type_t < I > distance ( I first, S last ) ; |
(1) | |
|
template
<
Range R
>
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ; |
(2) | |
|
template
<
SizedRange R
>
constexpr ranges :: difference_type_t < ranges:: iterator_t < R >> distance ( R && r ) ; |
(3) | |
Gibt den Abstand zwischen first und last zurück, oder zwischen Anfang und Ende des Bereichs r .
[
first
,
last
)
keinen Bereich bezeichnet, dann müssen
I
und
S
denselben Typ haben und müssen
SizedSentinel
modellieren, und
[
last
,
first
)
muss einen Bereich bezeichnen. Andernfalls ist das Verhalten undefiniert.
Instanziierung von Überladungen (2,3) kann fehlerhaft sein, wenn der Header <experimental/ranges/range> nicht vor dem Instanziierungszeitpunkt eingebunden wurde.
Inhaltsverzeichnis |
Customization Point Objects
Der Name
ranges::distance
bezeichnet ein
Customization Point Object
, welches ein
Funktionsobjekt
eines
Literal
Semiregular
Klassentyps ist (zur Veranschaulichung als
DistanceT
bezeichnet). Alle Instanzen von
DistanceT
sind gleich. Daher kann
ranges::distance
frei kopiert werden und seine Kopien können austauschbar verwendet werden.
Gegeben eine Menge von Typen
Args...
, falls
std::
declval
<
Args
>
(
)
...
die Anforderungen für Argumente an
ranges::distance
oben erfüllen, wird
DistanceT
ranges
::
Invocable
<
const
DistanceT, Args...
>
erfüllen. Andernfalls nimmt kein Funktionsaufrufoperator von
DistanceT
an der Überladungsauflösung teil.
In jeder Übersetzungseinheit, in der
ranges::distance
definiert ist, verweist es auf dieselbe Instanz des Customization Point Objects. (Dies bedeutet, dass es frei in Dingen wie Inline-Funktionen und Funktionsvorlagen verwendet werden kann, ohne die
One-Definition-Rule
zu verletzen.)
Rückgabewert
Der Abstand zwischen first und last , oder zwischen dem Anfang und dem Ende des Bereichs r .
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
gibt den Abstand zwischen zwei Iteratoren zurück
(Funktionstemplate) |
|
|
bewegt einen Iterator um eine gegebene Distanz
(Funktionstemplate) |
|
|
erhöht einen Iterator
(Funktionstemplate) |
|
|
verringert einen Iterator
(Funktionstemplate) |
|
|
ermittelt die Größe eines Bereichs, dessen Größe in konstanter Zeit berechnet werden kann
(Anpassungspunktobjekt) |