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) |
|
Défini dans l'en-tête
<utility>
|
||
|
struct
piecewise_construct_t
{
explicit
piecewise_construct_t
(
)
=
default
;
}
;
|
(1) | (depuis C++11) |
|
constexpr
std::
piecewise_construct_t
piecewise_construct
{
}
;
|
(2) |
(depuis C++11)
(inline depuis C++17) |
1)
std::piecewise_construct_t
est un type de marqueur de classe vide utilisé pour lever l'ambiguïté entre différentes fonctions qui prennent deux arguments de type tuple.
2)
La constante
std::piecewise_construct
est une instance de
(1)
.
Les surcharges qui n'utilisent pas
std::piecewise_construct_t
supposent que chaque argument tuple devient l'élément d'une paire. Les surcharges qui utilisent
std::piecewise_construct_t
supposent que chaque argument tuple est utilisé pour construire, pièce par pièce, un nouvel objet du type spécifié, qui deviendra l'élément de la paire.
Table des matières |
Bibliothèque standard
Les types et fonctions suivants de la bibliothèque standard l'utilisent comme étiquette de désambiguïsation :
|
implémente un tuple binaire, c'est-à-dire une paire de valeurs
(modèle de classe) |
|
|
(C++20)
|
prépare la liste d'arguments correspondant au type de construction uses-allocator requis par le type donné
(modèle de fonction) |
une
view
consistant en une séquence générée en produisant répétitivement la même valeur
(modèle de classe) (objet de point de personnalisation) |
Exemple
Exécuter ce code
#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); }
Sortie :
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
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2510 | C++11 | le constructeur par défaut était non-explicite, ce qui pouvait entraîner une ambiguïté | rendu explicite |
Voir aussi
|
construit une nouvelle paire
(fonction membre publique de
std::pair<T1,T2>
)
|