std::invocable, std::regular_invocable
| Definiert in der Header-Datei <concepts> |
||
| template< class F, class... Args > concept invocable = |
(seit C++20) | |
| template< class F, class... Args > concept regular_invocable = std::invocable<F, Args...>; |
(seit C++20) | |
Das Konzept invocable spezifiziert, dass ein aufrufbarer Typ F mit einer Menge von Argumenten Args... mithilfe der Funktions-Template std::invoke aufgerufen werden kann.
Das Konzept regular_invocable erweitert das Konzept invocable, indem es verlangt, dass der invoke-Ausdruck gleichheitserhaltend ist und weder das Funktionsobjekt noch die Argumente modifiziert.
Inhalt |
[bearbeiten] Gleichheitserhaltung
Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).
[bearbeiten] Anmerkungen
Die Unterscheidung zwischen invocable und regular_invocable ist rein semantischer Natur.
Ein Zufallszahlengenerator kann invocable erfüllen, aber nicht regular_invocable (komische Ausnahmen unberücksichtigt).
[bearbeiten] Referenzen
- C++23 Standard (ISO/IEC 14882:2024)
- 18.7.2 Konzept
invocable[concept.invocable]
- 18.7.2 Konzept
- 18.7.3 Konzept
regular_invocable[concept.regularinvocable]
- 18.7.3 Konzept
- C++20 Standard (ISO/IEC 14882:2020)
- 18.7.2 Konzept
invocable[concept.invocable]
- 18.7.2 Konzept
- 18.7.3 Konzept
regular_invocable[concept.regularinvocable]
- 18.7.3 Konzept
[bearbeiten] Siehe auch
| prüft, ob ein Typ mit den gegebenen Argumenttypen aufgerufen werden kann (als ob durch std::invoke) (Klassenvorlage) |
[bearbeiten] Externe Links
Ein Witz-Beispiel eines Zufallszahlengenerators, der sowohl invocable als auch regular_invocable erfüllt. |