std::divides<void>
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <functional>
|
||
template<> class divides<void>; |
(начиная с C++14) | |
std::divides<> является специализацией std::divides с выведенным типом параметра и возвращаемого значения.
Содержание
Типы элементы
| Тип элемента | Определение |
is_transparent
|
/* неопределено */ |
Функции-элементы
| возвращает частное двух аргументов (public функция-элемент) |
std::divides<>::operator()
<tbody> </tbody> template< class T, class U> constexpr auto operator()( T&& lhs, U&& rhs ) const -> decltype(std::forward<T>(lhs) / std::forward<U>(rhs)); |
||
Возвращает результат деления 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()
{
constexpr std::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)