std:: piecewise_construct, std:: piecewise_construct_t
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::pair
| Member functions | ||||
|
(C++11)
|
||||
| Non-member functions | ||||
|
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(until C++20)
(C++20)
|
||||
|
(C++11)
|
||||
|
(C++11)
|
||||
| Helper classes | ||||
|
(C++11)
|
||||
|
(C++11)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
piecewise_construct_t
(C++11)
|
||||
| Deduction guides (C++17) |
|
Definiert im Header
<utility>
|
||
|
struct
piecewise_construct_t
{
explicit
piecewise_construct_t
(
)
=
default
;
}
;
|
(1) | (seit C++11) |
|
constexpr
std::
piecewise_construct_t
piecewise_construct
{
}
;
|
(2) |
(seit C++11)
(inline seit C++17) |
1)
std::piecewise_construct_t
ist ein leerer Klassen-Tag-Typ, der zur Unterscheidung zwischen verschiedenen Funktionen verwendet wird, die zwei Tupel-Argumente entgegennehmen.
2)
Die Konstante
std::piecewise_construct
ist eine Instanz von
(1)
.
Die Überladungen, die nicht
std::piecewise_construct_t
verwenden, gehen davon aus, dass jedes Tupel-Argument zum Element eines Paares wird. Die Überladungen, die
std::piecewise_construct_t
verwenden, gehen davon aus, dass jedes Tupel-Argument verwendet wird, um stückweise ein neues Objekt des angegebenen Typs zu konstruieren, das zum Element des Paares wird.
Inhaltsverzeichnis |
Standardbibliothek
Die folgenden Standardbibliothekstypen und -funktionen verwenden es als Unterscheidungsmerkmal:
|
implementiert ein binäres Tupel, d.h. ein Wertepaar
(Klassen-Template) |
|
|
(C++20)
|
bereitet die Argumentliste vor, die dem für den gegebenen Typ erforderlichen Uses-Allocator-Konstruktionsstil entspricht
(Funktions-Template) |
eine
view
, die aus einer generierten Sequenz besteht, indem wiederholt der gleiche Wert erzeugt wird
(Klassen-Template) (Customization Point Object) |
Beispiel
Diesen Code ausführen
#include <iostream> #include <tuple> #include <utility> struct Foo { Foo(std::tuple<int, float>) { std::cout << "Constructed a Foo from a tuple\n"; } Foo(int, float) { std::cout << "Constructed a Foo from an int and a float\n"; } }; int main() { std::tuple<int, float> t(1, 3.14); std::cout << "Creating p1...\n"; std::pair<Foo, Foo> p1(t, t); std::cout << "Creating p2...\n"; std::pair<Foo, Foo> p2(std::piecewise_construct, t, t); }
Ausgabe:
Creating p1... Constructed a Foo from a tuple Constructed a Foo from a tuple Creating p2... Constructed a Foo from an int and a float Constructed a Foo from an int and a float
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 2510 | C++11 | der Standardkonstruktor war nicht-explicit, was zu Mehrdeutigkeit führen konnte | als explicit deklariert |
Siehe auch
|
Konstruiert neues Paar
(öffentliche Elementfunktion von
std::pair<T1,T2>
)
|