Namensräume
Varianten
Aktionen

deduction guides für std::packaged_task

Von cppreference.com
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
Definiert im Header <future>
template< class R, class... Args >
packaged_task( R(*)(Args...) ) -> packaged_task<R(Args...)>;
(1) (seit C++17)
template< class F >
packaged_task( F ) -> packaged_task</*siehe unten*/>;
(2) (seit C++17)
template< class F >
packaged_task( F ) -> packaged_task</*siehe unten*/>;
(3) (seit C++23)
template< class F >
packaged_task( F ) -> packaged_task</*siehe unten*/>;
(4) (seit C++23)
1) Dieser Deduktionsleitfaden ist für std::packaged_task vorgesehen, um die Deduktion aus Funktionen zu ermöglichen.
2) Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn &F::operator() als unevaluierter Operand gut gebildet ist und decltype(&F::operator()) die Form R(G::*)(A...) hat (optional cv-qualifiziert, optional noexcept, optional lvalue-Referenz-qualifiziert). Der abgeleitete Typ ist std::packaged_task<R(A...)>.
3) Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn &F::operator() als unevaluierter Operand gut gebildet ist und F::operator() ein explizit übergebener Objektparameter ist, dessen Typ die Form R(G, A...) oder R(G, A...) noexcept hat. Der abgeleitete Typ ist std::packaged_task<R(A...)>.
4) Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn &F::operator() als unevaluierter Operand gut gebildet ist und F::operator() eine statische Memberfunktion ist, deren Typ die Form R(A...) oder R(A...) noexcept hat. Der abgeleitete Typ ist std::packaged_task<R(A...)>.

[bearbeiten] Anmerkungen

Diese Deduktionsleitfäden erlauben keine Deduktion aus einer Funktion mit einem Ellipsenparameter, und die ... in den Typen wird immer als Pack-Erweiterung behandelt.

[bearbeiten] Beispiel

#include <future>
 
int func(double) { return 0; }
 
int main()
{
    std::packaged_task f{func}; // deduces packaged_task<int(double)>
 
    int i = 5;
    std::packaged_task g = [&](double) { return i; }; // => packaged_task<int(double)>
}