bind_member_function_20.hpp 83 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343
  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. }