std::divides<void>
Определено в заголовочном файле <functional> | ||
template<> class divides<void>; | (начиная с C++14) | |
std::divides<> является специализацией std::divides с выведенным типом параметра и возвращаемого значения.
Содержание |
[править]Типы элементы
Тип элемента | Определение |
is_transparent | /* неопределено */ |
[править]Функции-элементы
operator() | возвращает частное двух аргументов (public функция-элемент) |
std::divides<>::operator()
template<class T, class U> constexprauto operator()( T&& lhs, U&& rhs )const | ||
Возвращает результат деления lhs на rhs (или что-то ещё, для чего перегружен operator/
).
Параметры
lhs, rhs | — | значения для деления |
Возвращаемое значение
Результат lhs / rhs.
[править]Примечание
Тип элемент is_transparent
указывает вызывающему объекту, что этот функциональный объект является прозрачным: он принимает аргументы произвольных типов и использует идеальную переадресацию, которая позволяет избежать ненужного копирования и преобразования, когда функциональный объект используется в разнородном контексте или с аргументами rvalue. В частности, шаблонные функции, такие как std::set::find и std::set::lower_bound , используют этот тип элемента в своих типах Compare
.
[править]Пример
#include <complex>#include <functional>#include <iostream> int main(){constexprstd::complex z1{8.0, 4.0}, z2{1.0, 2.0}; std::cout<<std::showpos<<std::divides{}(z1, z2)<<' '<< z1 / z2 <<'\n'<<std::divides{}(z1, 5.)<<' '<< z1 /5. <<'\n'<<std::divides{}(6., z2)<<' '<<6. / z2 <<'\n';}
Вывод:
(+3.2,-2.4) (+3.2,-2.4) (+1.6,+0.8) (+1.6,+0.8) (+1.2,-2.4) (+1.2,-2.4)