bind_member_function_30.hpp 161 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573
  1. /*=============================================================================
  2. Copyright (c) 2001-2007 Joel de Guzman
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. ==============================================================================*/
  6. template <
  7. typename RT
  8. , typename ClassT
  9. , typename T0
  10. , typename ClassA
  11. , typename A0
  12. >
  13. inline
  14. typename detail::expression::function_eval<
  15. detail::member_function_ptr<
  16. 1
  17. , RT
  18. , RT(ClassT::*)(T0)
  19. >
  20. , ClassA
  21. , A0
  22. >::type const
  23. bind(
  24. RT(ClassT::*f)(T0)
  25. , ClassA const & obj
  26. , A0 const& a0
  27. )
  28. {
  29. typedef detail::member_function_ptr<
  30. 1
  31. , RT
  32. , RT(ClassT::*)(T0)
  33. > fp_type;
  34. return
  35. detail::expression::function_eval<
  36. fp_type
  37. , ClassA
  38. , A0
  39. >::make(
  40. fp_type(f)
  41. , obj
  42. , a0
  43. );
  44. }
  45. template <
  46. typename RT
  47. , typename ClassT
  48. , typename T0
  49. , typename ClassA
  50. , typename A0
  51. >
  52. inline
  53. typename detail::expression::function_eval<
  54. detail::member_function_ptr<
  55. 1
  56. , RT
  57. , RT(ClassT::*)(T0) const
  58. >
  59. , ClassA
  60. , A0
  61. >::type const
  62. bind(
  63. RT(ClassT::*f)(T0) const
  64. , ClassA const & obj
  65. , A0 const& a0
  66. )
  67. {
  68. typedef detail::member_function_ptr<
  69. 1
  70. , RT
  71. , RT(ClassT::*)(T0) const
  72. > fp_type;
  73. return
  74. detail::expression::function_eval<
  75. fp_type
  76. , ClassA
  77. , A0
  78. >::make(
  79. fp_type(f)
  80. , obj
  81. , a0
  82. );
  83. }
  84. template <
  85. typename RT
  86. , typename ClassT
  87. , typename T0
  88. , typename A0
  89. >
  90. inline
  91. typename detail::expression::function_eval<
  92. detail::member_function_ptr<
  93. 1
  94. , RT
  95. , RT(ClassT::*)(T0)
  96. >
  97. , ClassT
  98. , A0
  99. >::type const
  100. bind(
  101. RT(ClassT::*f)(T0)
  102. , ClassT & obj
  103. , A0 const& a0
  104. )
  105. {
  106. typedef detail::member_function_ptr<
  107. 1
  108. , RT
  109. , RT(ClassT::*)(T0)
  110. > fp_type;
  111. return
  112. detail::expression::function_eval<
  113. fp_type
  114. , ClassT
  115. , A0
  116. >::make(
  117. fp_type(f)
  118. , obj
  119. , a0
  120. );
  121. }
  122. template <
  123. typename RT
  124. , typename ClassT
  125. , typename T0 , typename T1
  126. , typename ClassA
  127. , typename A0 , typename A1
  128. >
  129. inline
  130. typename detail::expression::function_eval<
  131. detail::member_function_ptr<
  132. 2
  133. , RT
  134. , RT(ClassT::*)(T0 , T1)
  135. >
  136. , ClassA
  137. , A0 , A1
  138. >::type const
  139. bind(
  140. RT(ClassT::*f)(T0 , T1)
  141. , ClassA const & obj
  142. , A0 const& a0 , A1 const& a1
  143. )
  144. {
  145. typedef detail::member_function_ptr<
  146. 2
  147. , RT
  148. , RT(ClassT::*)(T0 , T1)
  149. > fp_type;
  150. return
  151. detail::expression::function_eval<
  152. fp_type
  153. , ClassA
  154. , A0 , A1
  155. >::make(
  156. fp_type(f)
  157. , obj
  158. , a0 , a1
  159. );
  160. }
  161. template <
  162. typename RT
  163. , typename ClassT
  164. , typename T0 , typename T1
  165. , typename ClassA
  166. , typename A0 , typename A1
  167. >
  168. inline
  169. typename detail::expression::function_eval<
  170. detail::member_function_ptr<
  171. 2
  172. , RT
  173. , RT(ClassT::*)(T0 , T1) const
  174. >
  175. , ClassA
  176. , A0 , A1
  177. >::type const
  178. bind(
  179. RT(ClassT::*f)(T0 , T1) const
  180. , ClassA const & obj
  181. , A0 const& a0 , A1 const& a1
  182. )
  183. {
  184. typedef detail::member_function_ptr<
  185. 2
  186. , RT
  187. , RT(ClassT::*)(T0 , T1) const
  188. > fp_type;
  189. return
  190. detail::expression::function_eval<
  191. fp_type
  192. , ClassA
  193. , A0 , A1
  194. >::make(
  195. fp_type(f)
  196. , obj
  197. , a0 , a1
  198. );
  199. }
  200. template <
  201. typename RT
  202. , typename ClassT
  203. , typename T0 , typename T1
  204. , typename A0 , typename A1
  205. >
  206. inline
  207. typename detail::expression::function_eval<
  208. detail::member_function_ptr<
  209. 2
  210. , RT
  211. , RT(ClassT::*)(T0 , T1)
  212. >
  213. , ClassT
  214. , A0 , A1
  215. >::type const
  216. bind(
  217. RT(ClassT::*f)(T0 , T1)
  218. , ClassT & obj
  219. , A0 const& a0 , A1 const& a1
  220. )
  221. {
  222. typedef detail::member_function_ptr<
  223. 2
  224. , RT
  225. , RT(ClassT::*)(T0 , T1)
  226. > fp_type;
  227. return
  228. detail::expression::function_eval<
  229. fp_type
  230. , ClassT
  231. , A0 , A1
  232. >::make(
  233. fp_type(f)
  234. , obj
  235. , a0 , a1
  236. );
  237. }
  238. template <
  239. typename RT
  240. , typename ClassT
  241. , typename T0 , typename T1 , typename T2
  242. , typename ClassA
  243. , typename A0 , typename A1 , typename A2
  244. >
  245. inline
  246. typename detail::expression::function_eval<
  247. detail::member_function_ptr<
  248. 3
  249. , RT
  250. , RT(ClassT::*)(T0 , T1 , T2)
  251. >
  252. , ClassA
  253. , A0 , A1 , A2
  254. >::type const
  255. bind(
  256. RT(ClassT::*f)(T0 , T1 , T2)
  257. , ClassA const & obj
  258. , A0 const& a0 , A1 const& a1 , A2 const& a2
  259. )
  260. {
  261. typedef detail::member_function_ptr<
  262. 3
  263. , RT
  264. , RT(ClassT::*)(T0 , T1 , T2)
  265. > fp_type;
  266. return
  267. detail::expression::function_eval<
  268. fp_type
  269. , ClassA
  270. , A0 , A1 , A2
  271. >::make(
  272. fp_type(f)
  273. , obj
  274. , a0 , a1 , a2
  275. );
  276. }
  277. template <
  278. typename RT
  279. , typename ClassT
  280. , typename T0 , typename T1 , typename T2
  281. , typename ClassA
  282. , typename A0 , typename A1 , typename A2
  283. >
  284. inline
  285. typename detail::expression::function_eval<
  286. detail::member_function_ptr<
  287. 3
  288. , RT
  289. , RT(ClassT::*)(T0 , T1 , T2) const
  290. >
  291. , ClassA
  292. , A0 , A1 , A2
  293. >::type const
  294. bind(
  295. RT(ClassT::*f)(T0 , T1 , T2) const
  296. , ClassA const & obj
  297. , A0 const& a0 , A1 const& a1 , A2 const& a2
  298. )
  299. {
  300. typedef detail::member_function_ptr<
  301. 3
  302. , RT
  303. , RT(ClassT::*)(T0 , T1 , T2) const
  304. > fp_type;
  305. return
  306. detail::expression::function_eval<
  307. fp_type
  308. , ClassA
  309. , A0 , A1 , A2
  310. >::make(
  311. fp_type(f)
  312. , obj
  313. , a0 , a1 , a2
  314. );
  315. }
  316. template <
  317. typename RT
  318. , typename ClassT
  319. , typename T0 , typename T1 , typename T2
  320. , typename A0 , typename A1 , typename A2
  321. >
  322. inline
  323. typename detail::expression::function_eval<
  324. detail::member_function_ptr<
  325. 3
  326. , RT
  327. , RT(ClassT::*)(T0 , T1 , T2)
  328. >
  329. , ClassT
  330. , A0 , A1 , A2
  331. >::type const
  332. bind(
  333. RT(ClassT::*f)(T0 , T1 , T2)
  334. , ClassT & obj
  335. , A0 const& a0 , A1 const& a1 , A2 const& a2
  336. )
  337. {
  338. typedef detail::member_function_ptr<
  339. 3
  340. , RT
  341. , RT(ClassT::*)(T0 , T1 , T2)
  342. > fp_type;
  343. return
  344. detail::expression::function_eval<
  345. fp_type
  346. , ClassT
  347. , A0 , A1 , A2
  348. >::make(
  349. fp_type(f)
  350. , obj
  351. , a0 , a1 , a2
  352. );
  353. }
  354. template <
  355. typename RT
  356. , typename ClassT
  357. , typename T0 , typename T1 , typename T2 , typename T3
  358. , typename ClassA
  359. , typename A0 , typename A1 , typename A2 , typename A3
  360. >
  361. inline
  362. typename detail::expression::function_eval<
  363. detail::member_function_ptr<
  364. 4
  365. , RT
  366. , RT(ClassT::*)(T0 , T1 , T2 , T3)
  367. >
  368. , ClassA
  369. , A0 , A1 , A2 , A3
  370. >::type const
  371. bind(
  372. RT(ClassT::*f)(T0 , T1 , T2 , T3)
  373. , ClassA const & obj
  374. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
  375. )
  376. {
  377. typedef detail::member_function_ptr<
  378. 4
  379. , RT
  380. , RT(ClassT::*)(T0 , T1 , T2 , T3)
  381. > fp_type;
  382. return
  383. detail::expression::function_eval<
  384. fp_type
  385. , ClassA
  386. , A0 , A1 , A2 , A3
  387. >::make(
  388. fp_type(f)
  389. , obj
  390. , a0 , a1 , a2 , a3
  391. );
  392. }
  393. template <
  394. typename RT
  395. , typename ClassT
  396. , typename T0 , typename T1 , typename T2 , typename T3
  397. , typename ClassA
  398. , typename A0 , typename A1 , typename A2 , typename A3
  399. >
  400. inline
  401. typename detail::expression::function_eval<
  402. detail::member_function_ptr<
  403. 4
  404. , RT
  405. , RT(ClassT::*)(T0 , T1 , T2 , T3) const
  406. >
  407. , ClassA
  408. , A0 , A1 , A2 , A3
  409. >::type const
  410. bind(
  411. RT(ClassT::*f)(T0 , T1 , T2 , T3) const
  412. , ClassA const & obj
  413. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
  414. )
  415. {
  416. typedef detail::member_function_ptr<
  417. 4
  418. , RT
  419. , RT(ClassT::*)(T0 , T1 , T2 , T3) const
  420. > fp_type;
  421. return
  422. detail::expression::function_eval<
  423. fp_type
  424. , ClassA
  425. , A0 , A1 , A2 , A3
  426. >::make(
  427. fp_type(f)
  428. , obj
  429. , a0 , a1 , a2 , a3
  430. );
  431. }
  432. template <
  433. typename RT
  434. , typename ClassT
  435. , typename T0 , typename T1 , typename T2 , typename T3
  436. , typename A0 , typename A1 , typename A2 , typename A3
  437. >
  438. inline
  439. typename detail::expression::function_eval<
  440. detail::member_function_ptr<
  441. 4
  442. , RT
  443. , RT(ClassT::*)(T0 , T1 , T2 , T3)
  444. >
  445. , ClassT
  446. , A0 , A1 , A2 , A3
  447. >::type const
  448. bind(
  449. RT(ClassT::*f)(T0 , T1 , T2 , T3)
  450. , ClassT & obj
  451. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
  452. )
  453. {
  454. typedef detail::member_function_ptr<
  455. 4
  456. , RT
  457. , RT(ClassT::*)(T0 , T1 , T2 , T3)
  458. > fp_type;
  459. return
  460. detail::expression::function_eval<
  461. fp_type
  462. , ClassT
  463. , A0 , A1 , A2 , A3
  464. >::make(
  465. fp_type(f)
  466. , obj
  467. , a0 , a1 , a2 , a3
  468. );
  469. }
  470. template <
  471. typename RT
  472. , typename ClassT
  473. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
  474. , typename ClassA
  475. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
  476. >
  477. inline
  478. typename detail::expression::function_eval<
  479. detail::member_function_ptr<
  480. 5
  481. , RT
  482. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
  483. >
  484. , ClassA
  485. , A0 , A1 , A2 , A3 , A4
  486. >::type const
  487. bind(
  488. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4)
  489. , ClassA const & obj
  490. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
  491. )
  492. {
  493. typedef detail::member_function_ptr<
  494. 5
  495. , RT
  496. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
  497. > fp_type;
  498. return
  499. detail::expression::function_eval<
  500. fp_type
  501. , ClassA
  502. , A0 , A1 , A2 , A3 , A4
  503. >::make(
  504. fp_type(f)
  505. , obj
  506. , a0 , a1 , a2 , a3 , a4
  507. );
  508. }
  509. template <
  510. typename RT
  511. , typename ClassT
  512. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
  513. , typename ClassA
  514. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
  515. >
  516. inline
  517. typename detail::expression::function_eval<
  518. detail::member_function_ptr<
  519. 5
  520. , RT
  521. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4) const
  522. >
  523. , ClassA
  524. , A0 , A1 , A2 , A3 , A4
  525. >::type const
  526. bind(
  527. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4) const
  528. , ClassA const & obj
  529. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
  530. )
  531. {
  532. typedef detail::member_function_ptr<
  533. 5
  534. , RT
  535. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4) const
  536. > fp_type;
  537. return
  538. detail::expression::function_eval<
  539. fp_type
  540. , ClassA
  541. , A0 , A1 , A2 , A3 , A4
  542. >::make(
  543. fp_type(f)
  544. , obj
  545. , a0 , a1 , a2 , a3 , a4
  546. );
  547. }
  548. template <
  549. typename RT
  550. , typename ClassT
  551. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
  552. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
  553. >
  554. inline
  555. typename detail::expression::function_eval<
  556. detail::member_function_ptr<
  557. 5
  558. , RT
  559. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
  560. >
  561. , ClassT
  562. , A0 , A1 , A2 , A3 , A4
  563. >::type const
  564. bind(
  565. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4)
  566. , ClassT & obj
  567. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
  568. )
  569. {
  570. typedef detail::member_function_ptr<
  571. 5
  572. , RT
  573. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4)
  574. > fp_type;
  575. return
  576. detail::expression::function_eval<
  577. fp_type
  578. , ClassT
  579. , A0 , A1 , A2 , A3 , A4
  580. >::make(
  581. fp_type(f)
  582. , obj
  583. , a0 , a1 , a2 , a3 , a4
  584. );
  585. }
  586. template <
  587. typename RT
  588. , typename ClassT
  589. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
  590. , typename ClassA
  591. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
  592. >
  593. inline
  594. typename detail::expression::function_eval<
  595. detail::member_function_ptr<
  596. 6
  597. , RT
  598. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
  599. >
  600. , ClassA
  601. , A0 , A1 , A2 , A3 , A4 , A5
  602. >::type const
  603. bind(
  604. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5)
  605. , ClassA const & obj
  606. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
  607. )
  608. {
  609. typedef detail::member_function_ptr<
  610. 6
  611. , RT
  612. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
  613. > fp_type;
  614. return
  615. detail::expression::function_eval<
  616. fp_type
  617. , ClassA
  618. , A0 , A1 , A2 , A3 , A4 , A5
  619. >::make(
  620. fp_type(f)
  621. , obj
  622. , a0 , a1 , a2 , a3 , a4 , a5
  623. );
  624. }
  625. template <
  626. typename RT
  627. , typename ClassT
  628. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
  629. , typename ClassA
  630. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
  631. >
  632. inline
  633. typename detail::expression::function_eval<
  634. detail::member_function_ptr<
  635. 6
  636. , RT
  637. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5) const
  638. >
  639. , ClassA
  640. , A0 , A1 , A2 , A3 , A4 , A5
  641. >::type const
  642. bind(
  643. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5) const
  644. , ClassA const & obj
  645. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
  646. )
  647. {
  648. typedef detail::member_function_ptr<
  649. 6
  650. , RT
  651. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5) const
  652. > fp_type;
  653. return
  654. detail::expression::function_eval<
  655. fp_type
  656. , ClassA
  657. , A0 , A1 , A2 , A3 , A4 , A5
  658. >::make(
  659. fp_type(f)
  660. , obj
  661. , a0 , a1 , a2 , a3 , a4 , a5
  662. );
  663. }
  664. template <
  665. typename RT
  666. , typename ClassT
  667. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
  668. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
  669. >
  670. inline
  671. typename detail::expression::function_eval<
  672. detail::member_function_ptr<
  673. 6
  674. , RT
  675. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
  676. >
  677. , ClassT
  678. , A0 , A1 , A2 , A3 , A4 , A5
  679. >::type const
  680. bind(
  681. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5)
  682. , ClassT & obj
  683. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
  684. )
  685. {
  686. typedef detail::member_function_ptr<
  687. 6
  688. , RT
  689. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5)
  690. > fp_type;
  691. return
  692. detail::expression::function_eval<
  693. fp_type
  694. , ClassT
  695. , A0 , A1 , A2 , A3 , A4 , A5
  696. >::make(
  697. fp_type(f)
  698. , obj
  699. , a0 , a1 , a2 , a3 , a4 , a5
  700. );
  701. }
  702. template <
  703. typename RT
  704. , typename ClassT
  705. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
  706. , typename ClassA
  707. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
  708. >
  709. inline
  710. typename detail::expression::function_eval<
  711. detail::member_function_ptr<
  712. 7
  713. , RT
  714. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  715. >
  716. , ClassA
  717. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  718. >::type const
  719. bind(
  720. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  721. , ClassA const & obj
  722. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
  723. )
  724. {
  725. typedef detail::member_function_ptr<
  726. 7
  727. , RT
  728. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  729. > fp_type;
  730. return
  731. detail::expression::function_eval<
  732. fp_type
  733. , ClassA
  734. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  735. >::make(
  736. fp_type(f)
  737. , obj
  738. , a0 , a1 , a2 , a3 , a4 , a5 , a6
  739. );
  740. }
  741. template <
  742. typename RT
  743. , typename ClassT
  744. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
  745. , typename ClassA
  746. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
  747. >
  748. inline
  749. typename detail::expression::function_eval<
  750. detail::member_function_ptr<
  751. 7
  752. , RT
  753. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
  754. >
  755. , ClassA
  756. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  757. >::type const
  758. bind(
  759. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
  760. , ClassA const & obj
  761. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
  762. )
  763. {
  764. typedef detail::member_function_ptr<
  765. 7
  766. , RT
  767. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6) const
  768. > fp_type;
  769. return
  770. detail::expression::function_eval<
  771. fp_type
  772. , ClassA
  773. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  774. >::make(
  775. fp_type(f)
  776. , obj
  777. , a0 , a1 , a2 , a3 , a4 , a5 , a6
  778. );
  779. }
  780. template <
  781. typename RT
  782. , typename ClassT
  783. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
  784. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
  785. >
  786. inline
  787. typename detail::expression::function_eval<
  788. detail::member_function_ptr<
  789. 7
  790. , RT
  791. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  792. >
  793. , ClassT
  794. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  795. >::type const
  796. bind(
  797. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  798. , ClassT & obj
  799. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
  800. )
  801. {
  802. typedef detail::member_function_ptr<
  803. 7
  804. , RT
  805. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
  806. > fp_type;
  807. return
  808. detail::expression::function_eval<
  809. fp_type
  810. , ClassT
  811. , A0 , A1 , A2 , A3 , A4 , A5 , A6
  812. >::make(
  813. fp_type(f)
  814. , obj
  815. , a0 , a1 , a2 , a3 , a4 , a5 , a6
  816. );
  817. }
  818. template <
  819. typename RT
  820. , typename ClassT
  821. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
  822. , typename ClassA
  823. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
  824. >
  825. inline
  826. typename detail::expression::function_eval<
  827. detail::member_function_ptr<
  828. 8
  829. , RT
  830. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  831. >
  832. , ClassA
  833. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  834. >::type const
  835. bind(
  836. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  837. , ClassA const & obj
  838. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
  839. )
  840. {
  841. typedef detail::member_function_ptr<
  842. 8
  843. , RT
  844. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  845. > fp_type;
  846. return
  847. detail::expression::function_eval<
  848. fp_type
  849. , ClassA
  850. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  851. >::make(
  852. fp_type(f)
  853. , obj
  854. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
  855. );
  856. }
  857. template <
  858. typename RT
  859. , typename ClassT
  860. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
  861. , typename ClassA
  862. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
  863. >
  864. inline
  865. typename detail::expression::function_eval<
  866. detail::member_function_ptr<
  867. 8
  868. , RT
  869. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
  870. >
  871. , ClassA
  872. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  873. >::type const
  874. bind(
  875. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
  876. , ClassA const & obj
  877. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
  878. )
  879. {
  880. typedef detail::member_function_ptr<
  881. 8
  882. , RT
  883. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const
  884. > fp_type;
  885. return
  886. detail::expression::function_eval<
  887. fp_type
  888. , ClassA
  889. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  890. >::make(
  891. fp_type(f)
  892. , obj
  893. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
  894. );
  895. }
  896. template <
  897. typename RT
  898. , typename ClassT
  899. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
  900. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
  901. >
  902. inline
  903. typename detail::expression::function_eval<
  904. detail::member_function_ptr<
  905. 8
  906. , RT
  907. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  908. >
  909. , ClassT
  910. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  911. >::type const
  912. bind(
  913. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  914. , ClassT & obj
  915. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
  916. )
  917. {
  918. typedef detail::member_function_ptr<
  919. 8
  920. , RT
  921. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
  922. > fp_type;
  923. return
  924. detail::expression::function_eval<
  925. fp_type
  926. , ClassT
  927. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
  928. >::make(
  929. fp_type(f)
  930. , obj
  931. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
  932. );
  933. }
  934. template <
  935. typename RT
  936. , typename ClassT
  937. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
  938. , typename ClassA
  939. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
  940. >
  941. inline
  942. typename detail::expression::function_eval<
  943. detail::member_function_ptr<
  944. 9
  945. , RT
  946. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  947. >
  948. , ClassA
  949. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  950. >::type const
  951. bind(
  952. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  953. , ClassA const & obj
  954. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
  955. )
  956. {
  957. typedef detail::member_function_ptr<
  958. 9
  959. , RT
  960. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  961. > fp_type;
  962. return
  963. detail::expression::function_eval<
  964. fp_type
  965. , ClassA
  966. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  967. >::make(
  968. fp_type(f)
  969. , obj
  970. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
  971. );
  972. }
  973. template <
  974. typename RT
  975. , typename ClassT
  976. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
  977. , typename ClassA
  978. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
  979. >
  980. inline
  981. typename detail::expression::function_eval<
  982. detail::member_function_ptr<
  983. 9
  984. , RT
  985. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
  986. >
  987. , ClassA
  988. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  989. >::type const
  990. bind(
  991. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
  992. , ClassA const & obj
  993. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
  994. )
  995. {
  996. typedef detail::member_function_ptr<
  997. 9
  998. , RT
  999. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const
  1000. > fp_type;
  1001. return
  1002. detail::expression::function_eval<
  1003. fp_type
  1004. , ClassA
  1005. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  1006. >::make(
  1007. fp_type(f)
  1008. , obj
  1009. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
  1010. );
  1011. }
  1012. template <
  1013. typename RT
  1014. , typename ClassT
  1015. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
  1016. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
  1017. >
  1018. inline
  1019. typename detail::expression::function_eval<
  1020. detail::member_function_ptr<
  1021. 9
  1022. , RT
  1023. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  1024. >
  1025. , ClassT
  1026. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  1027. >::type const
  1028. bind(
  1029. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  1030. , ClassT & obj
  1031. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
  1032. )
  1033. {
  1034. typedef detail::member_function_ptr<
  1035. 9
  1036. , RT
  1037. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
  1038. > fp_type;
  1039. return
  1040. detail::expression::function_eval<
  1041. fp_type
  1042. , ClassT
  1043. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
  1044. >::make(
  1045. fp_type(f)
  1046. , obj
  1047. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
  1048. );
  1049. }
  1050. template <
  1051. typename RT
  1052. , typename ClassT
  1053. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
  1054. , typename ClassA
  1055. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
  1056. >
  1057. inline
  1058. typename detail::expression::function_eval<
  1059. detail::member_function_ptr<
  1060. 10
  1061. , RT
  1062. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1063. >
  1064. , ClassA
  1065. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1066. >::type const
  1067. bind(
  1068. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1069. , ClassA const & obj
  1070. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
  1071. )
  1072. {
  1073. typedef detail::member_function_ptr<
  1074. 10
  1075. , RT
  1076. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1077. > fp_type;
  1078. return
  1079. detail::expression::function_eval<
  1080. fp_type
  1081. , ClassA
  1082. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1083. >::make(
  1084. fp_type(f)
  1085. , obj
  1086. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
  1087. );
  1088. }
  1089. template <
  1090. typename RT
  1091. , typename ClassT
  1092. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
  1093. , typename ClassA
  1094. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
  1095. >
  1096. inline
  1097. typename detail::expression::function_eval<
  1098. detail::member_function_ptr<
  1099. 10
  1100. , RT
  1101. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
  1102. >
  1103. , ClassA
  1104. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1105. >::type const
  1106. bind(
  1107. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
  1108. , ClassA const & obj
  1109. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
  1110. )
  1111. {
  1112. typedef detail::member_function_ptr<
  1113. 10
  1114. , RT
  1115. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const
  1116. > fp_type;
  1117. return
  1118. detail::expression::function_eval<
  1119. fp_type
  1120. , ClassA
  1121. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1122. >::make(
  1123. fp_type(f)
  1124. , obj
  1125. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
  1126. );
  1127. }
  1128. template <
  1129. typename RT
  1130. , typename ClassT
  1131. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
  1132. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
  1133. >
  1134. inline
  1135. typename detail::expression::function_eval<
  1136. detail::member_function_ptr<
  1137. 10
  1138. , RT
  1139. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1140. >
  1141. , ClassT
  1142. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1143. >::type const
  1144. bind(
  1145. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1146. , ClassT & obj
  1147. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
  1148. )
  1149. {
  1150. typedef detail::member_function_ptr<
  1151. 10
  1152. , RT
  1153. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
  1154. > fp_type;
  1155. return
  1156. detail::expression::function_eval<
  1157. fp_type
  1158. , ClassT
  1159. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
  1160. >::make(
  1161. fp_type(f)
  1162. , obj
  1163. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
  1164. );
  1165. }
  1166. template <
  1167. typename RT
  1168. , typename ClassT
  1169. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
  1170. , typename ClassA
  1171. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
  1172. >
  1173. inline
  1174. typename detail::expression::function_eval<
  1175. detail::member_function_ptr<
  1176. 11
  1177. , RT
  1178. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1179. >
  1180. , ClassA
  1181. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1182. >::type const
  1183. bind(
  1184. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1185. , ClassA const & obj
  1186. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
  1187. )
  1188. {
  1189. typedef detail::member_function_ptr<
  1190. 11
  1191. , RT
  1192. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1193. > fp_type;
  1194. return
  1195. detail::expression::function_eval<
  1196. fp_type
  1197. , ClassA
  1198. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1199. >::make(
  1200. fp_type(f)
  1201. , obj
  1202. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
  1203. );
  1204. }
  1205. template <
  1206. typename RT
  1207. , typename ClassT
  1208. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
  1209. , typename ClassA
  1210. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
  1211. >
  1212. inline
  1213. typename detail::expression::function_eval<
  1214. detail::member_function_ptr<
  1215. 11
  1216. , RT
  1217. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
  1218. >
  1219. , ClassA
  1220. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1221. >::type const
  1222. bind(
  1223. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
  1224. , ClassA const & obj
  1225. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
  1226. )
  1227. {
  1228. typedef detail::member_function_ptr<
  1229. 11
  1230. , RT
  1231. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const
  1232. > fp_type;
  1233. return
  1234. detail::expression::function_eval<
  1235. fp_type
  1236. , ClassA
  1237. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1238. >::make(
  1239. fp_type(f)
  1240. , obj
  1241. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
  1242. );
  1243. }
  1244. template <
  1245. typename RT
  1246. , typename ClassT
  1247. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
  1248. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
  1249. >
  1250. inline
  1251. typename detail::expression::function_eval<
  1252. detail::member_function_ptr<
  1253. 11
  1254. , RT
  1255. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1256. >
  1257. , ClassT
  1258. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1259. >::type const
  1260. bind(
  1261. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1262. , ClassT & obj
  1263. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
  1264. )
  1265. {
  1266. typedef detail::member_function_ptr<
  1267. 11
  1268. , RT
  1269. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
  1270. > fp_type;
  1271. return
  1272. detail::expression::function_eval<
  1273. fp_type
  1274. , ClassT
  1275. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
  1276. >::make(
  1277. fp_type(f)
  1278. , obj
  1279. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
  1280. );
  1281. }
  1282. template <
  1283. typename RT
  1284. , typename ClassT
  1285. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
  1286. , typename ClassA
  1287. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
  1288. >
  1289. inline
  1290. typename detail::expression::function_eval<
  1291. detail::member_function_ptr<
  1292. 12
  1293. , RT
  1294. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1295. >
  1296. , ClassA
  1297. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1298. >::type const
  1299. bind(
  1300. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1301. , ClassA const & obj
  1302. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
  1303. )
  1304. {
  1305. typedef detail::member_function_ptr<
  1306. 12
  1307. , RT
  1308. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1309. > fp_type;
  1310. return
  1311. detail::expression::function_eval<
  1312. fp_type
  1313. , ClassA
  1314. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1315. >::make(
  1316. fp_type(f)
  1317. , obj
  1318. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
  1319. );
  1320. }
  1321. template <
  1322. typename RT
  1323. , typename ClassT
  1324. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
  1325. , typename ClassA
  1326. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
  1327. >
  1328. inline
  1329. typename detail::expression::function_eval<
  1330. detail::member_function_ptr<
  1331. 12
  1332. , RT
  1333. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
  1334. >
  1335. , ClassA
  1336. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1337. >::type const
  1338. bind(
  1339. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
  1340. , ClassA const & obj
  1341. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
  1342. )
  1343. {
  1344. typedef detail::member_function_ptr<
  1345. 12
  1346. , RT
  1347. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const
  1348. > fp_type;
  1349. return
  1350. detail::expression::function_eval<
  1351. fp_type
  1352. , ClassA
  1353. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1354. >::make(
  1355. fp_type(f)
  1356. , obj
  1357. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
  1358. );
  1359. }
  1360. template <
  1361. typename RT
  1362. , typename ClassT
  1363. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
  1364. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
  1365. >
  1366. inline
  1367. typename detail::expression::function_eval<
  1368. detail::member_function_ptr<
  1369. 12
  1370. , RT
  1371. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1372. >
  1373. , ClassT
  1374. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1375. >::type const
  1376. bind(
  1377. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1378. , ClassT & obj
  1379. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
  1380. )
  1381. {
  1382. typedef detail::member_function_ptr<
  1383. 12
  1384. , RT
  1385. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
  1386. > fp_type;
  1387. return
  1388. detail::expression::function_eval<
  1389. fp_type
  1390. , ClassT
  1391. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
  1392. >::make(
  1393. fp_type(f)
  1394. , obj
  1395. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
  1396. );
  1397. }
  1398. template <
  1399. typename RT
  1400. , typename ClassT
  1401. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
  1402. , typename ClassA
  1403. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
  1404. >
  1405. inline
  1406. typename detail::expression::function_eval<
  1407. detail::member_function_ptr<
  1408. 13
  1409. , RT
  1410. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1411. >
  1412. , ClassA
  1413. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1414. >::type const
  1415. bind(
  1416. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1417. , ClassA const & obj
  1418. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
  1419. )
  1420. {
  1421. typedef detail::member_function_ptr<
  1422. 13
  1423. , RT
  1424. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1425. > fp_type;
  1426. return
  1427. detail::expression::function_eval<
  1428. fp_type
  1429. , ClassA
  1430. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1431. >::make(
  1432. fp_type(f)
  1433. , obj
  1434. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
  1435. );
  1436. }
  1437. template <
  1438. typename RT
  1439. , typename ClassT
  1440. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
  1441. , typename ClassA
  1442. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
  1443. >
  1444. inline
  1445. typename detail::expression::function_eval<
  1446. detail::member_function_ptr<
  1447. 13
  1448. , RT
  1449. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
  1450. >
  1451. , ClassA
  1452. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1453. >::type const
  1454. bind(
  1455. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
  1456. , ClassA const & obj
  1457. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
  1458. )
  1459. {
  1460. typedef detail::member_function_ptr<
  1461. 13
  1462. , RT
  1463. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const
  1464. > fp_type;
  1465. return
  1466. detail::expression::function_eval<
  1467. fp_type
  1468. , ClassA
  1469. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1470. >::make(
  1471. fp_type(f)
  1472. , obj
  1473. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
  1474. );
  1475. }
  1476. template <
  1477. typename RT
  1478. , typename ClassT
  1479. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
  1480. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
  1481. >
  1482. inline
  1483. typename detail::expression::function_eval<
  1484. detail::member_function_ptr<
  1485. 13
  1486. , RT
  1487. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1488. >
  1489. , ClassT
  1490. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1491. >::type const
  1492. bind(
  1493. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1494. , ClassT & obj
  1495. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
  1496. )
  1497. {
  1498. typedef detail::member_function_ptr<
  1499. 13
  1500. , RT
  1501. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
  1502. > fp_type;
  1503. return
  1504. detail::expression::function_eval<
  1505. fp_type
  1506. , ClassT
  1507. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
  1508. >::make(
  1509. fp_type(f)
  1510. , obj
  1511. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
  1512. );
  1513. }
  1514. template <
  1515. typename RT
  1516. , typename ClassT
  1517. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
  1518. , typename ClassA
  1519. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
  1520. >
  1521. inline
  1522. typename detail::expression::function_eval<
  1523. detail::member_function_ptr<
  1524. 14
  1525. , RT
  1526. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1527. >
  1528. , ClassA
  1529. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1530. >::type const
  1531. bind(
  1532. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1533. , ClassA const & obj
  1534. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
  1535. )
  1536. {
  1537. typedef detail::member_function_ptr<
  1538. 14
  1539. , RT
  1540. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1541. > fp_type;
  1542. return
  1543. detail::expression::function_eval<
  1544. fp_type
  1545. , ClassA
  1546. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1547. >::make(
  1548. fp_type(f)
  1549. , obj
  1550. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
  1551. );
  1552. }
  1553. template <
  1554. typename RT
  1555. , typename ClassT
  1556. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
  1557. , typename ClassA
  1558. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
  1559. >
  1560. inline
  1561. typename detail::expression::function_eval<
  1562. detail::member_function_ptr<
  1563. 14
  1564. , RT
  1565. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
  1566. >
  1567. , ClassA
  1568. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1569. >::type const
  1570. bind(
  1571. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
  1572. , ClassA const & obj
  1573. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
  1574. )
  1575. {
  1576. typedef detail::member_function_ptr<
  1577. 14
  1578. , RT
  1579. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const
  1580. > fp_type;
  1581. return
  1582. detail::expression::function_eval<
  1583. fp_type
  1584. , ClassA
  1585. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1586. >::make(
  1587. fp_type(f)
  1588. , obj
  1589. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
  1590. );
  1591. }
  1592. template <
  1593. typename RT
  1594. , typename ClassT
  1595. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
  1596. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
  1597. >
  1598. inline
  1599. typename detail::expression::function_eval<
  1600. detail::member_function_ptr<
  1601. 14
  1602. , RT
  1603. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1604. >
  1605. , ClassT
  1606. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1607. >::type const
  1608. bind(
  1609. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1610. , ClassT & obj
  1611. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
  1612. )
  1613. {
  1614. typedef detail::member_function_ptr<
  1615. 14
  1616. , RT
  1617. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
  1618. > fp_type;
  1619. return
  1620. detail::expression::function_eval<
  1621. fp_type
  1622. , ClassT
  1623. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
  1624. >::make(
  1625. fp_type(f)
  1626. , obj
  1627. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
  1628. );
  1629. }
  1630. template <
  1631. typename RT
  1632. , typename ClassT
  1633. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
  1634. , typename ClassA
  1635. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
  1636. >
  1637. inline
  1638. typename detail::expression::function_eval<
  1639. detail::member_function_ptr<
  1640. 15
  1641. , RT
  1642. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1643. >
  1644. , ClassA
  1645. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1646. >::type const
  1647. bind(
  1648. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1649. , ClassA const & obj
  1650. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
  1651. )
  1652. {
  1653. typedef detail::member_function_ptr<
  1654. 15
  1655. , RT
  1656. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1657. > fp_type;
  1658. return
  1659. detail::expression::function_eval<
  1660. fp_type
  1661. , ClassA
  1662. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1663. >::make(
  1664. fp_type(f)
  1665. , obj
  1666. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
  1667. );
  1668. }
  1669. template <
  1670. typename RT
  1671. , typename ClassT
  1672. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
  1673. , typename ClassA
  1674. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
  1675. >
  1676. inline
  1677. typename detail::expression::function_eval<
  1678. detail::member_function_ptr<
  1679. 15
  1680. , RT
  1681. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
  1682. >
  1683. , ClassA
  1684. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1685. >::type const
  1686. bind(
  1687. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
  1688. , ClassA const & obj
  1689. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
  1690. )
  1691. {
  1692. typedef detail::member_function_ptr<
  1693. 15
  1694. , RT
  1695. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const
  1696. > fp_type;
  1697. return
  1698. detail::expression::function_eval<
  1699. fp_type
  1700. , ClassA
  1701. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1702. >::make(
  1703. fp_type(f)
  1704. , obj
  1705. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
  1706. );
  1707. }
  1708. template <
  1709. typename RT
  1710. , typename ClassT
  1711. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
  1712. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
  1713. >
  1714. inline
  1715. typename detail::expression::function_eval<
  1716. detail::member_function_ptr<
  1717. 15
  1718. , RT
  1719. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1720. >
  1721. , ClassT
  1722. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1723. >::type const
  1724. bind(
  1725. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1726. , ClassT & obj
  1727. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
  1728. )
  1729. {
  1730. typedef detail::member_function_ptr<
  1731. 15
  1732. , RT
  1733. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
  1734. > fp_type;
  1735. return
  1736. detail::expression::function_eval<
  1737. fp_type
  1738. , ClassT
  1739. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
  1740. >::make(
  1741. fp_type(f)
  1742. , obj
  1743. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
  1744. );
  1745. }
  1746. template <
  1747. typename RT
  1748. , typename ClassT
  1749. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
  1750. , typename ClassA
  1751. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
  1752. >
  1753. inline
  1754. typename detail::expression::function_eval<
  1755. detail::member_function_ptr<
  1756. 16
  1757. , RT
  1758. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1759. >
  1760. , ClassA
  1761. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1762. >::type const
  1763. bind(
  1764. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1765. , ClassA const & obj
  1766. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
  1767. )
  1768. {
  1769. typedef detail::member_function_ptr<
  1770. 16
  1771. , RT
  1772. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1773. > fp_type;
  1774. return
  1775. detail::expression::function_eval<
  1776. fp_type
  1777. , ClassA
  1778. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1779. >::make(
  1780. fp_type(f)
  1781. , obj
  1782. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
  1783. );
  1784. }
  1785. template <
  1786. typename RT
  1787. , typename ClassT
  1788. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
  1789. , typename ClassA
  1790. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
  1791. >
  1792. inline
  1793. typename detail::expression::function_eval<
  1794. detail::member_function_ptr<
  1795. 16
  1796. , RT
  1797. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
  1798. >
  1799. , ClassA
  1800. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1801. >::type const
  1802. bind(
  1803. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
  1804. , ClassA const & obj
  1805. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
  1806. )
  1807. {
  1808. typedef detail::member_function_ptr<
  1809. 16
  1810. , RT
  1811. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const
  1812. > fp_type;
  1813. return
  1814. detail::expression::function_eval<
  1815. fp_type
  1816. , ClassA
  1817. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1818. >::make(
  1819. fp_type(f)
  1820. , obj
  1821. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
  1822. );
  1823. }
  1824. template <
  1825. typename RT
  1826. , typename ClassT
  1827. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
  1828. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
  1829. >
  1830. inline
  1831. typename detail::expression::function_eval<
  1832. detail::member_function_ptr<
  1833. 16
  1834. , RT
  1835. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1836. >
  1837. , ClassT
  1838. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1839. >::type const
  1840. bind(
  1841. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1842. , ClassT & obj
  1843. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
  1844. )
  1845. {
  1846. typedef detail::member_function_ptr<
  1847. 16
  1848. , RT
  1849. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
  1850. > fp_type;
  1851. return
  1852. detail::expression::function_eval<
  1853. fp_type
  1854. , ClassT
  1855. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
  1856. >::make(
  1857. fp_type(f)
  1858. , obj
  1859. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
  1860. );
  1861. }
  1862. template <
  1863. typename RT
  1864. , typename ClassT
  1865. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
  1866. , typename ClassA
  1867. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
  1868. >
  1869. inline
  1870. typename detail::expression::function_eval<
  1871. detail::member_function_ptr<
  1872. 17
  1873. , RT
  1874. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1875. >
  1876. , ClassA
  1877. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1878. >::type const
  1879. bind(
  1880. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1881. , ClassA const & obj
  1882. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
  1883. )
  1884. {
  1885. typedef detail::member_function_ptr<
  1886. 17
  1887. , RT
  1888. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1889. > fp_type;
  1890. return
  1891. detail::expression::function_eval<
  1892. fp_type
  1893. , ClassA
  1894. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1895. >::make(
  1896. fp_type(f)
  1897. , obj
  1898. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
  1899. );
  1900. }
  1901. template <
  1902. typename RT
  1903. , typename ClassT
  1904. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
  1905. , typename ClassA
  1906. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
  1907. >
  1908. inline
  1909. typename detail::expression::function_eval<
  1910. detail::member_function_ptr<
  1911. 17
  1912. , RT
  1913. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
  1914. >
  1915. , ClassA
  1916. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1917. >::type const
  1918. bind(
  1919. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
  1920. , ClassA const & obj
  1921. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
  1922. )
  1923. {
  1924. typedef detail::member_function_ptr<
  1925. 17
  1926. , RT
  1927. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const
  1928. > fp_type;
  1929. return
  1930. detail::expression::function_eval<
  1931. fp_type
  1932. , ClassA
  1933. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1934. >::make(
  1935. fp_type(f)
  1936. , obj
  1937. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
  1938. );
  1939. }
  1940. template <
  1941. typename RT
  1942. , typename ClassT
  1943. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
  1944. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
  1945. >
  1946. inline
  1947. typename detail::expression::function_eval<
  1948. detail::member_function_ptr<
  1949. 17
  1950. , RT
  1951. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1952. >
  1953. , ClassT
  1954. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1955. >::type const
  1956. bind(
  1957. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1958. , ClassT & obj
  1959. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
  1960. )
  1961. {
  1962. typedef detail::member_function_ptr<
  1963. 17
  1964. , RT
  1965. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
  1966. > fp_type;
  1967. return
  1968. detail::expression::function_eval<
  1969. fp_type
  1970. , ClassT
  1971. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
  1972. >::make(
  1973. fp_type(f)
  1974. , obj
  1975. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
  1976. );
  1977. }
  1978. template <
  1979. typename RT
  1980. , typename ClassT
  1981. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
  1982. , typename ClassA
  1983. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
  1984. >
  1985. inline
  1986. typename detail::expression::function_eval<
  1987. detail::member_function_ptr<
  1988. 18
  1989. , RT
  1990. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  1991. >
  1992. , ClassA
  1993. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  1994. >::type const
  1995. bind(
  1996. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  1997. , ClassA const & obj
  1998. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
  1999. )
  2000. {
  2001. typedef detail::member_function_ptr<
  2002. 18
  2003. , RT
  2004. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  2005. > fp_type;
  2006. return
  2007. detail::expression::function_eval<
  2008. fp_type
  2009. , ClassA
  2010. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  2011. >::make(
  2012. fp_type(f)
  2013. , obj
  2014. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
  2015. );
  2016. }
  2017. template <
  2018. typename RT
  2019. , typename ClassT
  2020. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
  2021. , typename ClassA
  2022. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
  2023. >
  2024. inline
  2025. typename detail::expression::function_eval<
  2026. detail::member_function_ptr<
  2027. 18
  2028. , RT
  2029. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
  2030. >
  2031. , ClassA
  2032. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  2033. >::type const
  2034. bind(
  2035. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
  2036. , ClassA const & obj
  2037. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
  2038. )
  2039. {
  2040. typedef detail::member_function_ptr<
  2041. 18
  2042. , RT
  2043. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const
  2044. > fp_type;
  2045. return
  2046. detail::expression::function_eval<
  2047. fp_type
  2048. , ClassA
  2049. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  2050. >::make(
  2051. fp_type(f)
  2052. , obj
  2053. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
  2054. );
  2055. }
  2056. template <
  2057. typename RT
  2058. , typename ClassT
  2059. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
  2060. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
  2061. >
  2062. inline
  2063. typename detail::expression::function_eval<
  2064. detail::member_function_ptr<
  2065. 18
  2066. , RT
  2067. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  2068. >
  2069. , ClassT
  2070. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  2071. >::type const
  2072. bind(
  2073. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  2074. , ClassT & obj
  2075. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
  2076. )
  2077. {
  2078. typedef detail::member_function_ptr<
  2079. 18
  2080. , RT
  2081. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
  2082. > fp_type;
  2083. return
  2084. detail::expression::function_eval<
  2085. fp_type
  2086. , ClassT
  2087. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
  2088. >::make(
  2089. fp_type(f)
  2090. , obj
  2091. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
  2092. );
  2093. }
  2094. template <
  2095. typename RT
  2096. , typename ClassT
  2097. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
  2098. , typename ClassA
  2099. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
  2100. >
  2101. inline
  2102. typename detail::expression::function_eval<
  2103. detail::member_function_ptr<
  2104. 19
  2105. , RT
  2106. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2107. >
  2108. , ClassA
  2109. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2110. >::type const
  2111. bind(
  2112. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2113. , ClassA const & obj
  2114. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
  2115. )
  2116. {
  2117. typedef detail::member_function_ptr<
  2118. 19
  2119. , RT
  2120. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2121. > fp_type;
  2122. return
  2123. detail::expression::function_eval<
  2124. fp_type
  2125. , ClassA
  2126. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2127. >::make(
  2128. fp_type(f)
  2129. , obj
  2130. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
  2131. );
  2132. }
  2133. template <
  2134. typename RT
  2135. , typename ClassT
  2136. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
  2137. , typename ClassA
  2138. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
  2139. >
  2140. inline
  2141. typename detail::expression::function_eval<
  2142. detail::member_function_ptr<
  2143. 19
  2144. , RT
  2145. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
  2146. >
  2147. , ClassA
  2148. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2149. >::type const
  2150. bind(
  2151. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
  2152. , ClassA const & obj
  2153. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
  2154. )
  2155. {
  2156. typedef detail::member_function_ptr<
  2157. 19
  2158. , RT
  2159. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const
  2160. > fp_type;
  2161. return
  2162. detail::expression::function_eval<
  2163. fp_type
  2164. , ClassA
  2165. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2166. >::make(
  2167. fp_type(f)
  2168. , obj
  2169. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
  2170. );
  2171. }
  2172. template <
  2173. typename RT
  2174. , typename ClassT
  2175. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
  2176. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
  2177. >
  2178. inline
  2179. typename detail::expression::function_eval<
  2180. detail::member_function_ptr<
  2181. 19
  2182. , RT
  2183. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2184. >
  2185. , ClassT
  2186. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2187. >::type const
  2188. bind(
  2189. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2190. , ClassT & obj
  2191. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
  2192. )
  2193. {
  2194. typedef detail::member_function_ptr<
  2195. 19
  2196. , RT
  2197. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
  2198. > fp_type;
  2199. return
  2200. detail::expression::function_eval<
  2201. fp_type
  2202. , ClassT
  2203. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
  2204. >::make(
  2205. fp_type(f)
  2206. , obj
  2207. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
  2208. );
  2209. }
  2210. template <
  2211. typename RT
  2212. , typename ClassT
  2213. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
  2214. , typename ClassA
  2215. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
  2216. >
  2217. inline
  2218. typename detail::expression::function_eval<
  2219. detail::member_function_ptr<
  2220. 20
  2221. , RT
  2222. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2223. >
  2224. , ClassA
  2225. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2226. >::type const
  2227. bind(
  2228. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2229. , ClassA const & obj
  2230. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
  2231. )
  2232. {
  2233. typedef detail::member_function_ptr<
  2234. 20
  2235. , RT
  2236. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2237. > fp_type;
  2238. return
  2239. detail::expression::function_eval<
  2240. fp_type
  2241. , ClassA
  2242. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2243. >::make(
  2244. fp_type(f)
  2245. , obj
  2246. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
  2247. );
  2248. }
  2249. template <
  2250. typename RT
  2251. , typename ClassT
  2252. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
  2253. , typename ClassA
  2254. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
  2255. >
  2256. inline
  2257. typename detail::expression::function_eval<
  2258. detail::member_function_ptr<
  2259. 20
  2260. , RT
  2261. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
  2262. >
  2263. , ClassA
  2264. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2265. >::type const
  2266. bind(
  2267. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
  2268. , ClassA const & obj
  2269. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
  2270. )
  2271. {
  2272. typedef detail::member_function_ptr<
  2273. 20
  2274. , RT
  2275. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const
  2276. > fp_type;
  2277. return
  2278. detail::expression::function_eval<
  2279. fp_type
  2280. , ClassA
  2281. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2282. >::make(
  2283. fp_type(f)
  2284. , obj
  2285. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
  2286. );
  2287. }
  2288. template <
  2289. typename RT
  2290. , typename ClassT
  2291. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
  2292. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
  2293. >
  2294. inline
  2295. typename detail::expression::function_eval<
  2296. detail::member_function_ptr<
  2297. 20
  2298. , RT
  2299. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2300. >
  2301. , ClassT
  2302. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2303. >::type const
  2304. bind(
  2305. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2306. , ClassT & obj
  2307. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
  2308. )
  2309. {
  2310. typedef detail::member_function_ptr<
  2311. 20
  2312. , RT
  2313. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
  2314. > fp_type;
  2315. return
  2316. detail::expression::function_eval<
  2317. fp_type
  2318. , ClassT
  2319. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
  2320. >::make(
  2321. fp_type(f)
  2322. , obj
  2323. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
  2324. );
  2325. }
  2326. template <
  2327. typename RT
  2328. , typename ClassT
  2329. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
  2330. , typename ClassA
  2331. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
  2332. >
  2333. inline
  2334. typename detail::expression::function_eval<
  2335. detail::member_function_ptr<
  2336. 21
  2337. , RT
  2338. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2339. >
  2340. , ClassA
  2341. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2342. >::type const
  2343. bind(
  2344. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2345. , ClassA const & obj
  2346. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
  2347. )
  2348. {
  2349. typedef detail::member_function_ptr<
  2350. 21
  2351. , RT
  2352. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2353. > fp_type;
  2354. return
  2355. detail::expression::function_eval<
  2356. fp_type
  2357. , ClassA
  2358. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2359. >::make(
  2360. fp_type(f)
  2361. , obj
  2362. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
  2363. );
  2364. }
  2365. template <
  2366. typename RT
  2367. , typename ClassT
  2368. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
  2369. , typename ClassA
  2370. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
  2371. >
  2372. inline
  2373. typename detail::expression::function_eval<
  2374. detail::member_function_ptr<
  2375. 21
  2376. , RT
  2377. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
  2378. >
  2379. , ClassA
  2380. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2381. >::type const
  2382. bind(
  2383. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
  2384. , ClassA const & obj
  2385. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
  2386. )
  2387. {
  2388. typedef detail::member_function_ptr<
  2389. 21
  2390. , RT
  2391. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const
  2392. > fp_type;
  2393. return
  2394. detail::expression::function_eval<
  2395. fp_type
  2396. , ClassA
  2397. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2398. >::make(
  2399. fp_type(f)
  2400. , obj
  2401. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
  2402. );
  2403. }
  2404. template <
  2405. typename RT
  2406. , typename ClassT
  2407. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
  2408. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
  2409. >
  2410. inline
  2411. typename detail::expression::function_eval<
  2412. detail::member_function_ptr<
  2413. 21
  2414. , RT
  2415. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2416. >
  2417. , ClassT
  2418. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2419. >::type const
  2420. bind(
  2421. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2422. , ClassT & obj
  2423. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
  2424. )
  2425. {
  2426. typedef detail::member_function_ptr<
  2427. 21
  2428. , RT
  2429. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
  2430. > fp_type;
  2431. return
  2432. detail::expression::function_eval<
  2433. fp_type
  2434. , ClassT
  2435. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
  2436. >::make(
  2437. fp_type(f)
  2438. , obj
  2439. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
  2440. );
  2441. }
  2442. template <
  2443. typename RT
  2444. , typename ClassT
  2445. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
  2446. , typename ClassA
  2447. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
  2448. >
  2449. inline
  2450. typename detail::expression::function_eval<
  2451. detail::member_function_ptr<
  2452. 22
  2453. , RT
  2454. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2455. >
  2456. , ClassA
  2457. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2458. >::type const
  2459. bind(
  2460. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2461. , ClassA const & obj
  2462. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
  2463. )
  2464. {
  2465. typedef detail::member_function_ptr<
  2466. 22
  2467. , RT
  2468. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2469. > fp_type;
  2470. return
  2471. detail::expression::function_eval<
  2472. fp_type
  2473. , ClassA
  2474. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2475. >::make(
  2476. fp_type(f)
  2477. , obj
  2478. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
  2479. );
  2480. }
  2481. template <
  2482. typename RT
  2483. , typename ClassT
  2484. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
  2485. , typename ClassA
  2486. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
  2487. >
  2488. inline
  2489. typename detail::expression::function_eval<
  2490. detail::member_function_ptr<
  2491. 22
  2492. , RT
  2493. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
  2494. >
  2495. , ClassA
  2496. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2497. >::type const
  2498. bind(
  2499. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
  2500. , ClassA const & obj
  2501. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
  2502. )
  2503. {
  2504. typedef detail::member_function_ptr<
  2505. 22
  2506. , RT
  2507. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const
  2508. > fp_type;
  2509. return
  2510. detail::expression::function_eval<
  2511. fp_type
  2512. , ClassA
  2513. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2514. >::make(
  2515. fp_type(f)
  2516. , obj
  2517. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
  2518. );
  2519. }
  2520. template <
  2521. typename RT
  2522. , typename ClassT
  2523. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
  2524. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
  2525. >
  2526. inline
  2527. typename detail::expression::function_eval<
  2528. detail::member_function_ptr<
  2529. 22
  2530. , RT
  2531. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2532. >
  2533. , ClassT
  2534. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2535. >::type const
  2536. bind(
  2537. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2538. , ClassT & obj
  2539. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
  2540. )
  2541. {
  2542. typedef detail::member_function_ptr<
  2543. 22
  2544. , RT
  2545. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
  2546. > fp_type;
  2547. return
  2548. detail::expression::function_eval<
  2549. fp_type
  2550. , ClassT
  2551. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
  2552. >::make(
  2553. fp_type(f)
  2554. , obj
  2555. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
  2556. );
  2557. }
  2558. template <
  2559. typename RT
  2560. , typename ClassT
  2561. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
  2562. , typename ClassA
  2563. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
  2564. >
  2565. inline
  2566. typename detail::expression::function_eval<
  2567. detail::member_function_ptr<
  2568. 23
  2569. , RT
  2570. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2571. >
  2572. , ClassA
  2573. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2574. >::type const
  2575. bind(
  2576. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2577. , ClassA const & obj
  2578. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
  2579. )
  2580. {
  2581. typedef detail::member_function_ptr<
  2582. 23
  2583. , RT
  2584. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2585. > fp_type;
  2586. return
  2587. detail::expression::function_eval<
  2588. fp_type
  2589. , ClassA
  2590. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2591. >::make(
  2592. fp_type(f)
  2593. , obj
  2594. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
  2595. );
  2596. }
  2597. template <
  2598. typename RT
  2599. , typename ClassT
  2600. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
  2601. , typename ClassA
  2602. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
  2603. >
  2604. inline
  2605. typename detail::expression::function_eval<
  2606. detail::member_function_ptr<
  2607. 23
  2608. , RT
  2609. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
  2610. >
  2611. , ClassA
  2612. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2613. >::type const
  2614. bind(
  2615. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
  2616. , ClassA const & obj
  2617. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
  2618. )
  2619. {
  2620. typedef detail::member_function_ptr<
  2621. 23
  2622. , RT
  2623. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const
  2624. > fp_type;
  2625. return
  2626. detail::expression::function_eval<
  2627. fp_type
  2628. , ClassA
  2629. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2630. >::make(
  2631. fp_type(f)
  2632. , obj
  2633. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
  2634. );
  2635. }
  2636. template <
  2637. typename RT
  2638. , typename ClassT
  2639. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
  2640. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
  2641. >
  2642. inline
  2643. typename detail::expression::function_eval<
  2644. detail::member_function_ptr<
  2645. 23
  2646. , RT
  2647. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2648. >
  2649. , ClassT
  2650. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2651. >::type const
  2652. bind(
  2653. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2654. , ClassT & obj
  2655. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
  2656. )
  2657. {
  2658. typedef detail::member_function_ptr<
  2659. 23
  2660. , RT
  2661. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
  2662. > fp_type;
  2663. return
  2664. detail::expression::function_eval<
  2665. fp_type
  2666. , ClassT
  2667. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
  2668. >::make(
  2669. fp_type(f)
  2670. , obj
  2671. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
  2672. );
  2673. }
  2674. template <
  2675. typename RT
  2676. , typename ClassT
  2677. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
  2678. , typename ClassA
  2679. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
  2680. >
  2681. inline
  2682. typename detail::expression::function_eval<
  2683. detail::member_function_ptr<
  2684. 24
  2685. , RT
  2686. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2687. >
  2688. , ClassA
  2689. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2690. >::type const
  2691. bind(
  2692. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2693. , ClassA const & obj
  2694. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
  2695. )
  2696. {
  2697. typedef detail::member_function_ptr<
  2698. 24
  2699. , RT
  2700. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2701. > fp_type;
  2702. return
  2703. detail::expression::function_eval<
  2704. fp_type
  2705. , ClassA
  2706. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2707. >::make(
  2708. fp_type(f)
  2709. , obj
  2710. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
  2711. );
  2712. }
  2713. template <
  2714. typename RT
  2715. , typename ClassT
  2716. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
  2717. , typename ClassA
  2718. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
  2719. >
  2720. inline
  2721. typename detail::expression::function_eval<
  2722. detail::member_function_ptr<
  2723. 24
  2724. , RT
  2725. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
  2726. >
  2727. , ClassA
  2728. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2729. >::type const
  2730. bind(
  2731. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
  2732. , ClassA const & obj
  2733. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
  2734. )
  2735. {
  2736. typedef detail::member_function_ptr<
  2737. 24
  2738. , RT
  2739. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const
  2740. > fp_type;
  2741. return
  2742. detail::expression::function_eval<
  2743. fp_type
  2744. , ClassA
  2745. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2746. >::make(
  2747. fp_type(f)
  2748. , obj
  2749. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
  2750. );
  2751. }
  2752. template <
  2753. typename RT
  2754. , typename ClassT
  2755. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
  2756. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
  2757. >
  2758. inline
  2759. typename detail::expression::function_eval<
  2760. detail::member_function_ptr<
  2761. 24
  2762. , RT
  2763. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2764. >
  2765. , ClassT
  2766. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2767. >::type const
  2768. bind(
  2769. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2770. , ClassT & obj
  2771. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
  2772. )
  2773. {
  2774. typedef detail::member_function_ptr<
  2775. 24
  2776. , RT
  2777. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
  2778. > fp_type;
  2779. return
  2780. detail::expression::function_eval<
  2781. fp_type
  2782. , ClassT
  2783. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
  2784. >::make(
  2785. fp_type(f)
  2786. , obj
  2787. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
  2788. );
  2789. }
  2790. template <
  2791. typename RT
  2792. , typename ClassT
  2793. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
  2794. , typename ClassA
  2795. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
  2796. >
  2797. inline
  2798. typename detail::expression::function_eval<
  2799. detail::member_function_ptr<
  2800. 25
  2801. , RT
  2802. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2803. >
  2804. , ClassA
  2805. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2806. >::type const
  2807. bind(
  2808. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2809. , ClassA const & obj
  2810. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
  2811. )
  2812. {
  2813. typedef detail::member_function_ptr<
  2814. 25
  2815. , RT
  2816. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2817. > fp_type;
  2818. return
  2819. detail::expression::function_eval<
  2820. fp_type
  2821. , ClassA
  2822. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2823. >::make(
  2824. fp_type(f)
  2825. , obj
  2826. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
  2827. );
  2828. }
  2829. template <
  2830. typename RT
  2831. , typename ClassT
  2832. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
  2833. , typename ClassA
  2834. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
  2835. >
  2836. inline
  2837. typename detail::expression::function_eval<
  2838. detail::member_function_ptr<
  2839. 25
  2840. , RT
  2841. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
  2842. >
  2843. , ClassA
  2844. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2845. >::type const
  2846. bind(
  2847. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
  2848. , ClassA const & obj
  2849. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
  2850. )
  2851. {
  2852. typedef detail::member_function_ptr<
  2853. 25
  2854. , RT
  2855. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const
  2856. > fp_type;
  2857. return
  2858. detail::expression::function_eval<
  2859. fp_type
  2860. , ClassA
  2861. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2862. >::make(
  2863. fp_type(f)
  2864. , obj
  2865. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
  2866. );
  2867. }
  2868. template <
  2869. typename RT
  2870. , typename ClassT
  2871. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
  2872. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
  2873. >
  2874. inline
  2875. typename detail::expression::function_eval<
  2876. detail::member_function_ptr<
  2877. 25
  2878. , RT
  2879. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2880. >
  2881. , ClassT
  2882. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2883. >::type const
  2884. bind(
  2885. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2886. , ClassT & obj
  2887. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
  2888. )
  2889. {
  2890. typedef detail::member_function_ptr<
  2891. 25
  2892. , RT
  2893. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
  2894. > fp_type;
  2895. return
  2896. detail::expression::function_eval<
  2897. fp_type
  2898. , ClassT
  2899. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
  2900. >::make(
  2901. fp_type(f)
  2902. , obj
  2903. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
  2904. );
  2905. }
  2906. template <
  2907. typename RT
  2908. , typename ClassT
  2909. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
  2910. , typename ClassA
  2911. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
  2912. >
  2913. inline
  2914. typename detail::expression::function_eval<
  2915. detail::member_function_ptr<
  2916. 26
  2917. , RT
  2918. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  2919. >
  2920. , ClassA
  2921. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  2922. >::type const
  2923. bind(
  2924. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  2925. , ClassA const & obj
  2926. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
  2927. )
  2928. {
  2929. typedef detail::member_function_ptr<
  2930. 26
  2931. , RT
  2932. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  2933. > fp_type;
  2934. return
  2935. detail::expression::function_eval<
  2936. fp_type
  2937. , ClassA
  2938. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  2939. >::make(
  2940. fp_type(f)
  2941. , obj
  2942. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
  2943. );
  2944. }
  2945. template <
  2946. typename RT
  2947. , typename ClassT
  2948. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
  2949. , typename ClassA
  2950. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
  2951. >
  2952. inline
  2953. typename detail::expression::function_eval<
  2954. detail::member_function_ptr<
  2955. 26
  2956. , RT
  2957. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
  2958. >
  2959. , ClassA
  2960. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  2961. >::type const
  2962. bind(
  2963. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
  2964. , ClassA const & obj
  2965. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
  2966. )
  2967. {
  2968. typedef detail::member_function_ptr<
  2969. 26
  2970. , RT
  2971. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25) const
  2972. > fp_type;
  2973. return
  2974. detail::expression::function_eval<
  2975. fp_type
  2976. , ClassA
  2977. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  2978. >::make(
  2979. fp_type(f)
  2980. , obj
  2981. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
  2982. );
  2983. }
  2984. template <
  2985. typename RT
  2986. , typename ClassT
  2987. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
  2988. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
  2989. >
  2990. inline
  2991. typename detail::expression::function_eval<
  2992. detail::member_function_ptr<
  2993. 26
  2994. , RT
  2995. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  2996. >
  2997. , ClassT
  2998. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  2999. >::type const
  3000. bind(
  3001. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  3002. , ClassT & obj
  3003. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
  3004. )
  3005. {
  3006. typedef detail::member_function_ptr<
  3007. 26
  3008. , RT
  3009. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
  3010. > fp_type;
  3011. return
  3012. detail::expression::function_eval<
  3013. fp_type
  3014. , ClassT
  3015. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
  3016. >::make(
  3017. fp_type(f)
  3018. , obj
  3019. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
  3020. );
  3021. }
  3022. template <
  3023. typename RT
  3024. , typename ClassT
  3025. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
  3026. , typename ClassA
  3027. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
  3028. >
  3029. inline
  3030. typename detail::expression::function_eval<
  3031. detail::member_function_ptr<
  3032. 27
  3033. , RT
  3034. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3035. >
  3036. , ClassA
  3037. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3038. >::type const
  3039. bind(
  3040. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3041. , ClassA const & obj
  3042. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
  3043. )
  3044. {
  3045. typedef detail::member_function_ptr<
  3046. 27
  3047. , RT
  3048. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3049. > fp_type;
  3050. return
  3051. detail::expression::function_eval<
  3052. fp_type
  3053. , ClassA
  3054. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3055. >::make(
  3056. fp_type(f)
  3057. , obj
  3058. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
  3059. );
  3060. }
  3061. template <
  3062. typename RT
  3063. , typename ClassT
  3064. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
  3065. , typename ClassA
  3066. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
  3067. >
  3068. inline
  3069. typename detail::expression::function_eval<
  3070. detail::member_function_ptr<
  3071. 27
  3072. , RT
  3073. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
  3074. >
  3075. , ClassA
  3076. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3077. >::type const
  3078. bind(
  3079. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
  3080. , ClassA const & obj
  3081. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
  3082. )
  3083. {
  3084. typedef detail::member_function_ptr<
  3085. 27
  3086. , RT
  3087. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26) const
  3088. > fp_type;
  3089. return
  3090. detail::expression::function_eval<
  3091. fp_type
  3092. , ClassA
  3093. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3094. >::make(
  3095. fp_type(f)
  3096. , obj
  3097. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
  3098. );
  3099. }
  3100. template <
  3101. typename RT
  3102. , typename ClassT
  3103. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
  3104. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
  3105. >
  3106. inline
  3107. typename detail::expression::function_eval<
  3108. detail::member_function_ptr<
  3109. 27
  3110. , RT
  3111. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3112. >
  3113. , ClassT
  3114. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3115. >::type const
  3116. bind(
  3117. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3118. , ClassT & obj
  3119. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
  3120. )
  3121. {
  3122. typedef detail::member_function_ptr<
  3123. 27
  3124. , RT
  3125. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
  3126. > fp_type;
  3127. return
  3128. detail::expression::function_eval<
  3129. fp_type
  3130. , ClassT
  3131. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
  3132. >::make(
  3133. fp_type(f)
  3134. , obj
  3135. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
  3136. );
  3137. }
  3138. template <
  3139. typename RT
  3140. , typename ClassT
  3141. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
  3142. , typename ClassA
  3143. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
  3144. >
  3145. inline
  3146. typename detail::expression::function_eval<
  3147. detail::member_function_ptr<
  3148. 28
  3149. , RT
  3150. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3151. >
  3152. , ClassA
  3153. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3154. >::type const
  3155. bind(
  3156. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3157. , ClassA const & obj
  3158. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
  3159. )
  3160. {
  3161. typedef detail::member_function_ptr<
  3162. 28
  3163. , RT
  3164. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3165. > fp_type;
  3166. return
  3167. detail::expression::function_eval<
  3168. fp_type
  3169. , ClassA
  3170. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3171. >::make(
  3172. fp_type(f)
  3173. , obj
  3174. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
  3175. );
  3176. }
  3177. template <
  3178. typename RT
  3179. , typename ClassT
  3180. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
  3181. , typename ClassA
  3182. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
  3183. >
  3184. inline
  3185. typename detail::expression::function_eval<
  3186. detail::member_function_ptr<
  3187. 28
  3188. , RT
  3189. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
  3190. >
  3191. , ClassA
  3192. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3193. >::type const
  3194. bind(
  3195. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
  3196. , ClassA const & obj
  3197. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
  3198. )
  3199. {
  3200. typedef detail::member_function_ptr<
  3201. 28
  3202. , RT
  3203. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27) const
  3204. > fp_type;
  3205. return
  3206. detail::expression::function_eval<
  3207. fp_type
  3208. , ClassA
  3209. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3210. >::make(
  3211. fp_type(f)
  3212. , obj
  3213. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
  3214. );
  3215. }
  3216. template <
  3217. typename RT
  3218. , typename ClassT
  3219. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
  3220. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
  3221. >
  3222. inline
  3223. typename detail::expression::function_eval<
  3224. detail::member_function_ptr<
  3225. 28
  3226. , RT
  3227. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3228. >
  3229. , ClassT
  3230. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3231. >::type const
  3232. bind(
  3233. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3234. , ClassT & obj
  3235. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
  3236. )
  3237. {
  3238. typedef detail::member_function_ptr<
  3239. 28
  3240. , RT
  3241. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
  3242. > fp_type;
  3243. return
  3244. detail::expression::function_eval<
  3245. fp_type
  3246. , ClassT
  3247. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
  3248. >::make(
  3249. fp_type(f)
  3250. , obj
  3251. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
  3252. );
  3253. }
  3254. template <
  3255. typename RT
  3256. , typename ClassT
  3257. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
  3258. , typename ClassA
  3259. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
  3260. >
  3261. inline
  3262. typename detail::expression::function_eval<
  3263. detail::member_function_ptr<
  3264. 29
  3265. , RT
  3266. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3267. >
  3268. , ClassA
  3269. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3270. >::type const
  3271. bind(
  3272. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3273. , ClassA const & obj
  3274. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
  3275. )
  3276. {
  3277. typedef detail::member_function_ptr<
  3278. 29
  3279. , RT
  3280. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3281. > fp_type;
  3282. return
  3283. detail::expression::function_eval<
  3284. fp_type
  3285. , ClassA
  3286. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3287. >::make(
  3288. fp_type(f)
  3289. , obj
  3290. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
  3291. );
  3292. }
  3293. template <
  3294. typename RT
  3295. , typename ClassT
  3296. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
  3297. , typename ClassA
  3298. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
  3299. >
  3300. inline
  3301. typename detail::expression::function_eval<
  3302. detail::member_function_ptr<
  3303. 29
  3304. , RT
  3305. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
  3306. >
  3307. , ClassA
  3308. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3309. >::type const
  3310. bind(
  3311. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
  3312. , ClassA const & obj
  3313. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
  3314. )
  3315. {
  3316. typedef detail::member_function_ptr<
  3317. 29
  3318. , RT
  3319. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28) const
  3320. > fp_type;
  3321. return
  3322. detail::expression::function_eval<
  3323. fp_type
  3324. , ClassA
  3325. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3326. >::make(
  3327. fp_type(f)
  3328. , obj
  3329. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
  3330. );
  3331. }
  3332. template <
  3333. typename RT
  3334. , typename ClassT
  3335. , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
  3336. , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
  3337. >
  3338. inline
  3339. typename detail::expression::function_eval<
  3340. detail::member_function_ptr<
  3341. 29
  3342. , RT
  3343. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3344. >
  3345. , ClassT
  3346. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3347. >::type const
  3348. bind(
  3349. RT(ClassT::*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3350. , ClassT & obj
  3351. , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
  3352. )
  3353. {
  3354. typedef detail::member_function_ptr<
  3355. 29
  3356. , RT
  3357. , RT(ClassT::*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
  3358. > fp_type;
  3359. return
  3360. detail::expression::function_eval<
  3361. fp_type
  3362. , ClassT
  3363. , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
  3364. >::make(
  3365. fp_type(f)
  3366. , obj
  3367. , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
  3368. );
  3369. }