Шаблонний клас std::negate являється класом функціональних об’єктів, який виконують базові арифметичні операції операндом-параметром перевантаженого оператора дужок (виклик функції). Оголошення:
template <class T> struct negate:
unary_function <T,T>
{
T operator() (const T& x) const
{ return -x ; }
} ;
Перевантажений оператор дужок отримує переданий параметр x і повертає його від’ємне значення в даному типі. Параметр шаблону T вказує на тип параметру і тип в якому зберігається повернене значення.
Щоб використовувати клас std::negate необхідно підключити файл functional:
#include <functional> /* усе корисне разом з std::negate */
Приклади
Розглянемо найпростіший приклад використання даного класу функціональних об'єктів - безпосереднє застосування до значення змінної.
#include <functional> /* negate */
#include <iostream> /* об'єкт cout */
using namespace std ; /* друкуємо усе без std */
/* головна функція програми*/
int main (int argc, char** argv)
{
/* створюємо піддослідний примірник класу */
negate <int> dpred ;
/* створюємо змінні для збереження значень */
int a = 10 ;
/* викликаємо перевантажений оператор дужок */
cout << a << " negated: " << dpred (a) << endl ;
return 0 ;
}
Вивід програми: