В контекстні мови програмування C++, functional це файл заголовку, що є частиною Стандартної бібліотеки C++ і містить набір зумовлених шаблонів класів для функціональних об'єктів (функторів), включаючи арифметичні операції, порівняння, і логічні операції. Екземплярами цих шаблонів є класи C++, які визначають оператор виклику функції, і екземпляри цих класів можуть викликатися так, ніби ці об'єкти є функціями. Це дає можливість виконувати дуже складні операції без написання нового функціонального об'єкта, просто поєднуючи заздалегідь визначені функтори й адаптери функціональних об'єктів.
Основним призначенням шаблону класів std::function, що запропонований в C++11 відігравати роль поліморфної функції обгортки. Екземпляри функтора std::function можуть зберігати, копіювати, і викликати цільові функції, лямбда вирази (вирази, що визначають анонімні функції), вирази зв'язування (bind expressions) (екземпляри функцій адаптерів, які перетворюють одні функції в інші функції з меншою арністю повертаючи значення для частини аргументів), або інші функціональні об'єкти.
Алгоритми, що надаються Стандартною бібліотекою C++ не потребують функціональних об'єктів з більше ніж двома аргументами. Функціональні об'єкти, які повертають значення типу Boolean є важливим окремим випадком. Унарні функції, які повертають логічний тип називаються предикатами, а бінарні функції, які повертають тип називаються бінарними предикатами.
Функціональний об'єкт
Функціональний об'єкт це будь-який об'єкт, для якого визначений оператор виклику функції. Функціональні об'єкти це об'єкти, які спеціально спроектовані так, щоб використовуватись із синтаксисом схожим на виклик звичайної функції. В C++, це досягається шляхом визначення функції класу , наприклад:
struct myclass { int operator()(int a) {return a;} } myobject;
int x = myobject (0); // використовується об'єкт, але синтаксис подібний до виклику функцій
Вони зазвичай використовуються як аргументи функцій, таких як предикати або функції порівняння, які передаються в стандартні алгоритми.
Примітки
Посилання C++ reference for standard function objects