<functional>
Definuje funkce standardní knihovny, které pomáhají při vytváření objektů funkce, také známých jako funktory, a jejich vazačů.Objekt funkce je objekt typu, který definuje operator().Objekt funkce může být ukazatel na funkci, ale častěji tento objekt slouží k ukládání dalších informací, ke kterým lze získat přístup během volání funkce.
#include <functional>
Poznámky
Algoritmy vyžadují dva druhy objektů funkce, unární a binární.Unární objekty funkce vyžadují jeden argument a binární objekty funkce vyžadují dva argumenty.Objekty funkce a ukazatele na funkce lze algoritmu předat jako predikát, ale objekty funkce jsou také přizpůsobivé a zvyšují rozsah, flexibilitu a efektivitu knihovny STL.Například, pokud potřebná hodnota musí být navázána na funkci před předáním algoritmu, nelze ukazatel na funkci použít.Adaptéry funkce převádějí ukazatele na funkci na přizpůsobitelné objekty funkce, které lze navázat na hodnotu.Hlavička <functional> také obsahuje členské adaptéry funkce, které umožňují členské funkce jako přizpůsobitelné objekty funkce.Funkce jsou přizpůsobitelné, pokud obsahují deklarace vnořených typů určující jejich argumenty a návratové typy.Standard jazyka C++ vyžaduje, aby tato přizpůsobivost byla implementována všemi standardními třídami objektů dědícími ze základních tříd unární nebo binární funkce.Objekty funkce a jejich adaptéry knihovně STL umožňují upgrade existujících aplikací a pomáhají integrovat knihovnu STL do programovacího prostředí jazyka C++.
Implementace objektů funkce v jazyce Visual C++ ve <functional> obsahuje transparentní operátory funktorů, což jsou specializované standardní objekty funkce, nepřebírající žádné parametry šablony a vykonávající dokonalé předávání argumentů funkce a dokonalé vrácení výsledku.Tato funkce je součástí návrhu specifikace standardu C++14.Tyto specializace šablony nevyžadují určení typů argumentu při vyvolání aritmetických, relačních, logických a bitových operátorů funktorů.Lze přetěžovat aritmetické, relační, logické a bitové operátory vlastních typů nebo heterogenní kombinace typů a poté použít průhledný operátor funktoru jako argumenty funkce.Například pokud váš typ MyType implementuje operator<, lze volat sort(my_collection.begin(), my_collection.end(), less<>()) namísto explicitního určení typu sort(my_collection.begin(), my_collection.end(), less<MyType>()).
Implementace standardu C++11/C++14.
Následující funkce byly přidány do implementace standardu C++11/C++14 v jazyce Visual C++:
Signatura volání je název návratového typu následovaného seznamem žádného nebo více typů argumentů odděleného čárkami a uzavřeného v závorkách.
Volatelný typ je ukazatel na funkci, ukazatel na členskou funkci, ukazatel na členská data nebo typ třídy, jejichž objekty se mohou zobrazit bezprostředně nalevo operátoru volání funkce.
Volatelný objekt je objekt volatelného typu.
Obálka typu volání je typ, který uchovává volatelný objekt a podporuje operaci volání, kterou lze tomuto objektu předat.
Obálka volání je objekt typu obálky volání.
Cílový objekt je volatelný objekt uchovaný objektem obálky volání.
Jako pseudo funkce INVOKE(f, t1, t2, ..., tN) se rozumí jedna z následujících možností:
(t1.*f)(t2, ..., tN) když je f ukazatel na členskou funkci třídy T a t1 je objekt typu T nebo odkaz na objekt typu T nebo odkaz na objekt typu odvozeného z typu T.
((*t1).*f)(t2, ..., tN) když je f ukazatel na členskou funkci třídy T a t1 není jedním z typů uvedených v předchozí položce.
t1.*f když N == 1 a f je ukazatel na členská data třídy T a t1 je objekt typu T nebo reference na objekt typu T nebo reference na objekt typu odvozeného z typu T.
(*t1).*f když N == 1 a f je ukazatel na datový člen třídy T a t1 není jedním z typů uvedených v předchozí položce.
f(t1, t2, ..., tN) ve všech ostatních případech.
Pseudo funkce INVOKE(f, t1, t2, ..., tN, R) znamená INVOKE(f, t1, t2, ..., tN) implicitně převedenou na R.
Pokud má obálka volání slabý typ výsledku, typ jeho členského typu result_type je založen na typu T cílového objektu obálky následujícím způsobem:
Pokud je T ukazatel na funkci, je result_type synonymem návratového typu T.
Pokud je T ukazatel na členskou funkci, je result_type synonymem návratového typu T.
T je typ třídy, která obsahuje typ členu result_type, pak je result_type synonymem pro T::result_type.
Jinak neexistuje žádný člen result_type.
Každá obálka volání má konstruktor přesunutí a konstruktor kopírování.Jednoduchá obálka volání je obálka volání obsahující operátor přiřazení a jehož konstruktor kopírování, konstruktor přesunutí a operátor přiřazení nevyvolají výjimky.Obálka předání volání je obálka volání, kterou lze volat pomocí libovolného seznamu argumentů, a který přenáší tyto argumenty zabaleným volatelným objektům jako reference.Všechny argumenty p-hodnot jsou dodávány jako odkazy p-hodnot a argumenty l-hodnot jsou dodávány jako odkazy l-hodnot.
Třídy
Třída, která popisuje vyvolanou výjimku k označení toho, že volání operator() na objektu funkce se nezdařilo, protože byl tento objekt prázdný. |
|
Třída šablony poskytující členské funkce, které negují návratovou hodnotu zadané binární funkce. |
|
Třída šablony poskytující konstruktor, který převádí binární funkce objektu na unární objekt funkce navázáním prvního argumentu binární funkce na zadanou hodnotu. |
|
Třída šablony poskytující konstruktor, který převádí binární funkce objektu na unární objekt funkce navázáním druhého argumentu binární funkce na zadanou hodnotu. |
|
Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem reference. |
|
Třída adaptéru umožňující volat konstantní členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem ukazatele. |
|
Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem reference. |
|
Třída adaptéru umožňující volat konstantní členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem ukazatele. |
|
Třída, která obaluje volatelný objekt. |
|
Třída, která vypočítá hashovací kód hodnoty. |
|
Třída, která testuje, zda je určitý typ generován voláním metody bind. |
|
Třída, která testuje, zda je určitý typ zástupným symbolem. |
|
Třída adaptéru umožňující volat non_const členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem reference. |
|
Třída adaptéru umožňující volat non_const členskou funkci, která nepřijímá žádné argumenty, jako unární objekt funkce při inicializaci s argumentem ukazatele. |
|
Třída adaptéru umožňující volat non_const členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem reference. |
|
Třída adaptéru umožňující volat non_const členskou funkci, která přijímá jeden argument, jako binární objekt funkce při inicializaci s argumentem ukazatele. |
|
Převede binární ukazatel na funkci na přizpůsobitelnou binární funkci. |
|
Převede unární ukazatel na funkci na přizpůsobitelnou unární funkci. |
|
Třída, která obaluje referenci. |
|
Struktura, která uchovává návratový typ zabaleného volatelného objektu. |
|
Třída šablony poskytující členské funkce, které negují návratovou hodnotu zadané unární funkce. |
Funkce
Naváže argumenty na volatelný objekt. |
|
Pomocná funkce šablony, která vytvoří adaptér pro převedení binárního objektu funkce na unární objekt funkce pomocí vazby prvního argumentu binární funkce na zadanou hodnotu. |
|
Pomocná funkce šablony, která vytvoří adaptér pro převedení binárního objektu funkce na unární objekt funkce pomocí vazby druhého argumentu binární funkce na zadanou hodnotu. |
|
Vrací bitové logické AND (binární operátor &) dvou parametrů. |
|
Vrací bitový logický doplněk (operátor ~) parametru. |
|
Vrací bitové logické OR (operátor |) dvou parametrů. |
|
Vrací bitové logické XOR (operátor ^) dvou parametrů. |
|
Z argumentu vytvoří konstantní reference_wrapper. |
|
Vygeneruje jednoduchou obálku volání. |
|
Pomocné funkce šablony použité k vytvoření adaptérů objektu funkce pro členské funkce při inicializaci pomocí argumentů ukazatelů. |
|
Pomocná funkce šablony použitá k vytvoření adaptérů objektu funkce pro členské funkce při inicializaci pomocí argumentů reference. |
|
Vrací doplněk unárního predikátu. |
|
Vrací doplněk binárního predikátu. |
|
Pomocná funkce šablony použitá k převedení unárních a binárních ukazatelů na funkce do unárních a binárních přizpůsobitelných funkcí. |
|
Vytvoří reference_wrapper z argumentu. |
|
Prohodí dva objekty function. |
Struktury
Prázdná základní třída definující typy, které mohou být zděděny odvozenou třídou obsahující binární objekt funkce. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace dělení na prvcích zadaného typu hodnoty. |
|
Binární predikát, který testuje, zda je hodnota zadaného typu rovna jiné hodnotě tohoto typu. |
|
Binární predikát, který testuje, zda je hodnota zadaného typu větší než jiná hodnota tohoto typu. |
|
Binární predikát, který testuje, zda je hodnota zadaného typu větší nebo rovna než jiná hodnota tohoto typu. |
|
Binární predikát, který testuje, zda je hodnota zadaného typu menší než jiná hodnota tohoto typu. |
|
Binární predikát, který testuje, zda je hodnota zadaného typu menší nebo rovna než jiná hodnota tohoto typu. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí logické operace konjunkce prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí logické operace negace prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí logické operace disjunkce prvků zadaného typu hodnoty a testuje pravdivost nebo nepravdivost výsledku. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace odečítání na prvcích zadaného typu hodnoty. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace zbytek po dělení na prvcích zadaného typu hodnoty. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace násobení na prvcích zadaného typu hodnoty. |
|
Třída poskytující předdefinovaný objekt funkce, který vrací záporné hodnoty prvku. |
|
Binární predikát, který testuje, zda není hodnota zadaného typu rovna jiné hodnotě tohoto typu. |
|
Třída poskytující předdefinovaný objekt funkce, který provádí aritmetické operace součtu na prvcích zadaného typu hodnoty. |
|
Prázdná základní třída definující typy, které mohou být zděděny odvozenou třídou obsahující unární objekt funkce. |
Objekty
Zástupné symboly pro nahraditelné argumenty. |
Operátory
Zakáže porovnávání rovnosti volatelných objektů. |
|
Zakáže porovnávání nerovnosti volatelných objektů. |
Viz také
Referenční dokumentace
Bezpečný přístup z více vláken ve standardní knihovně C++