Skip to content

Latest commit

 

History

History
50 lines (36 loc) · 1.13 KB

File metadata and controls

50 lines (36 loc) · 1.13 KB

Funktion std::invoke: "Uniformly invoking anything callable"

Zurück


Quellcode


Der Begriff des Callables tritt in C++ an vielen Stellen in Erscheinung. Man zählt dazu

  • eine (reguläre) Funktion,
  • einen Zeiger auf eine (reguläre) Funktion,
  • einen Zeiger auf eine Methode (member function pointer),
  • ein Funktionsobjekt,
  • ein aufrufbares Objekt,
  • eine Lambda-Funktion

Mit C++ 17 hat man nun eine Standardfunktion std::invoke ergänzt, die jedes Callable mit einer entsprechenden Liste von Parametern aufrufen kann.

std::invoke ist eine variadische Funktionsschablone, die das aufrufbare Objekt als erstes Argument entgegennimmt und anschließend eine variable Anzahl von Argumenten, die an den Aufruf übergeben werden.

Der Sinn und Zweck von std::invoke ist es nicht, den direkten Aufrufe zu ersetzen, aber std::invoke kann nützlich sein bei der Programmierung von Templates und allgemein gehaltenen Bibliotheksfunktionen.

Ausgabe des Code-Snippets:

result: 3
result: 7
result: 11
m_x: 5
result: 5
result: 13
result: 15
a: 23

Zurück