std::modulus<void>
来自 cppreference.com
< cpp | utility | functional
在头文件 <functional> 中定义 |
||
template<> class modulus<void>; |
(自 C++14 起) | |
std::modulus<void> 是 std::modulus 的一个特化,参数和返回值类型是推断出来的。
内容 |
[编辑] 嵌套类型
嵌套类型 | 定义 |
is_transparent
|
未指定 |
[编辑] 成员函数
operator() |
返回两个参数的模 (公共成员函数) |
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);