std::negate<void>
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <functional>
|
||
template<> class negate<void>; |
(начиная с C++14) | |
std::negate<> является специализацией std::negate с выведенным типом параметра и возвращаемого значения.
Типы элементы
| Тип элемент | Определение |
is_transparent
|
/* неопределено */ |
Функции-элементы
| возвращает свой аргумент отрицательным (public функция-элемент) |
std::negate<>::operator()
<tbody> </tbody> template< class T > constexpr auto operator()( T&& arg ) const -> decltype(-std::forward<T>(arg)); |
||
Возвращает результат инвертирования arg (или то, для чего перегружен унарный operator-).
Параметры
| arg | — | значение для отрицания |
Возвращаемое значение
Результат -arg.
Примечание
Тип элемент is_transparent указывает вызывающему объекту, что этот функциональный объект является прозрачным: он принимает аргументы произвольных типов и использует идеальную переадресацию, которая позволяет избежать ненужного копирования и преобразования, когда функциональный объект используется в разнородном контексте или с аргументами rvalue. В частности, шаблонные функции, такие как std::set::find и std::set::lower_bound , используют этот тип элемента в своих типах Compare.
Пример
Запустить этот код
#include <complex>
#include <functional>
#include <iostream>
int main()
{
constexpr std::complex z(4, 2);
std::cout << z << ' ' << -z << ' ' << std::negate{}(z) << '\n';
}
Вывод:
(4,2) (-4,-2) (-4,-2)