std::modulus<void>
From cppreference.com
< cpp | utility | functional
| ヘッダ <functional> で定義 |
||
| template<> class modulus<void>; |
(C++14以降) | |
std::modulus<void> は、パラメータと戻り値の型が推論される std::modulus の特殊化です。
目次 |
[編集] ネストされた型
| ネストされた型 | 定義 |
is_transparent
|
unspecified |
[編集] メンバ関数
| operator() |
2つの引数の剰余を返します。 (public member function) |
std::modulus<void>::operator()
| template< class T, class U > constexpr auto operator()( T&& lhs, U&& rhs ) const |
||
lhs を rhs で割ったときの剰余を返します。
パラメータ
| lhs, rhs | - | 割られる値 |
戻り値
std::forward<T>(lhs) % std::forward<U>(rhs).
[編集] 例
このコードを実行
#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) }
出力
M(42); operator%(M, M); operator%(M, int); operator%(int, M);