std::modulus<void>
Von cppreference.com
< cpp | utility | functional
| Definiert in der Header-Datei <functional> |
||
| template<> class modulus<void>; |
(seit C++14) | |
std::modulus<void> ist eine Spezialisierung von std::modulus mit deduziertem Parameter- und Rückgabetyp.
Inhalt |
[bearbeiten] Verschachtelte Typen
| Verschachtelter Typ | Definition |
is_transparent
|
nicht spezifiziert |
[bearbeiten] Member-Funktionen
| operator() |
Gibt den Modulus zweier Argumente zurück (öffentliche Memberfunktion) |
std::modulus<void>::operator()
| template< class T, class U > constexpr auto operator()( T&& lhs, U&& rhs ) const |
||
Gibt den Rest der Division von lhs durch rhs zurück.
Parameter
| lhs, rhs | - | zu teilende Werte |
Rückgabewert
std::forward<T>(lhs) % std::forward<U>(rhs).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <functional> #include <iostream> struct M { M(int x) { std::cout << "M(" << x << ");\n"; } M() {} }; auto operator%(M, M) { std::cout << "operator%(M, M);\n"; return M{}; } auto operator%(M, int) { std::cout << "operator%(M, int);\n"; return M{}; } auto operator%(int, M) { std::cout << "operator%(int, M);\n"; return M{}; } int main() { M m; // 42 is converted into a temporary object M{42} std::modulus<M>{}(m, 42); // calls operator%(M, M) // no temporary object std::modulus<void>{}(m, 42); // calls operator%(M, int) std::modulus<void>{}(42, m); // calls operator%(int, M) }
Ausgabe
M(42); operator%(M, M); operator%(M, int); operator%(int, M);