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