«Functional (C++)»–ի խմբագրումների տարբերություն

Content deleted Content added
Տող 48.
 
=== std::function ===
[[C++11]] ստանդարտից սկսած <tt>std::function</tt> կաղապարային դասը համարվում է [[Պոլիմորֆիզմ (ծրագրավորում)|պոլիմորֆիզմ]] ֆունկցիայի փաթեթ ընդհանուր օգտագործման համար։ <tt>std::function</tt> դասի օբյեկտները կարող են պահել, պատճենելև կանչել կամայական ''անհրաժեշտ օբյեկտներ'' ՝ ֆունկցիա, լյամբդա-արտահայտություն և այլ ֆունկցիոնալ օբյեկտներ։ Ընդանուր ասած, կամայական տեղ, որտեղ պետք է օգտագործել ֆունկցիայի ցուցիչը՝ կանչը չեղարկելու համար կամ [[Callback (ծրագրավորում)|հետ կանչի ֆունկցիա]] ստեղծելու համար օգտագործվում է <tt>std::function</tt> ֆունկցիան։
Начиная со стандарта [[C++11]] шаблонный класс <tt>std::function</tt> является [[Полиморфизм (информатика)|полиморфной]] обёрткой функций для общего использования. Объекты класса <tt>std::function</tt> могут хранить, копировать и вызывать произвольные ''вызываемые объекты'' — функции, лямбда-выражения, выражения связывания и другие функциональные объекты. Говоря в общем, в любом месте, где необходимо использовать указатель на функцию для её отложенного вызова, или для создания [[Callback (программирование)|функции обратного вызова]], вместо него может быть использован <tt>std::function</tt>, который предоставляет пользователю большую гибкость в реализации.
 
ВпервыеԱռաջին данныйանգամ классտվյալ появилсяֆունկցիան вհայտնվել библиотекеէ Function в версииգրադարանում Boost 1.23.0 տարբերակի ժամանակ<ref name="BoostLibs">
{{cite web
| url = http://www.boost.org/doc/libs/
Տող 58.
| archiveurl = http://www.webcitation.org/6GgR8Khwk
| archivedate = 2013-05-17
}}</ref>։ Հետագա զարգացման ժամանակայն այն ներառվել է C++ TR1-ու և С++11-ում։
}}</ref>. После его дальнейшей разработки он был включен в стандарт расширения C++ TR1 и окончательно утверждён в С++11.
 
==== Դասի որոշումը ====
Տող 65.
template<class R, class... ArgTypes> class function<R(ArgTypes...)>;
</source>
Ստանդարտում կան նաև օժանդակ բաղադրիժներ՝ <tt>swap</tt> и <tt>assign</tt> և համեմատության օպերատորներ՝ (<tt>==</tt> и <tt>!=</tt>), <tt>nullptr</tt>-ի հետ միասին։
Также в стандарте определены вспомогательные модификаторы <tt>swap</tt> и <tt>assign</tt> и операторы сравнения (<tt>==</tt> и <tt>!=</tt>) с <tt>nullptr</tt>. Доступ к [[Functional (C++)#.D0.A2.D0.B5.D1.80.D0.BC.D0.B8.D0.BD.D1.8B .D1.81.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.B0|целевому объекту]] предоставляет функция <tt>target</tt>, а к его типу — <tt>target_type</tt>. Оператор приведения <tt>function</tt> к булевскому типу возвращает <tt>true</tt>, когда у класса есть целевой объект.
 
==== Օգտագործման օրինակը ====