std::experimental::optional<T>::emplace
Von cppreference.com
< cpp | experimental | optional
| template< class... Args > void emplace( Args&&... args ); |
(library fundamentals TS) | |
| template< class U, class... Args > void emplace( std::initializer_list<U> ilist, Args&&... args ); |
(library fundamentals TS) | |
Konstruiert den enthaltenen Wert in-place. Wenn *this vor dem Aufruf bereits einen Wert enthält, wird der enthaltene Wert durch Aufruf seines Destruktors zerstört.
1) Initialisiert den enthaltenen Wert durch direkte Initialisierung (aber nicht durch direkte Listeninitialisierung) mit std::forward<Args>(args)... als Parameter.
2) Initialisiert den enthaltenen Wert durch Aufruf seines Konstruktors mit ilist, std::forward<Args>(args)... als Parameter. Dieser Überladungsfall nimmt nur an der Überladungsauswahl teil, wenn std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value true ist.
Inhalt |
[bearbeiten] Parameter
| args... | - | die Argumente, die an den Konstruktor übergeben werden sollen |
| ilist | - | die Initialisierungsliste, die an den Konstruktor übergeben werden soll |
| Typanforderungen | ||
-T muss aus Args... konstruierbar sein | ||
-T muss aus std::initializer_list und Args... konstruierbar sein | ||
[bearbeiten] Rückgabewert
(keine)
[bearbeiten] Ausnahmen
Jede Ausnahme, die vom ausgewählten Konstruktor von T ausgelöst wird. Wenn eine Ausnahme ausgelöst wird, enthält *this nach diesem Aufruf keinen Wert (der zuvor enthaltene Wert, falls vorhanden, wurde zerstört).
[bearbeiten] Siehe auch
| weist Inhalte zu (öffentliche Memberfunktion) |