BVB Source Codes

mars Show bind.hpp Source code

Return Download mars: download bind.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #if !defined(BOOST_PP_IS_ITERATING)
  3.  
  4. ///// header body
  5.  
  6. #ifndef BOOST_MPL_BIND_HPP_INCLUDED
  7. #define BOOST_MPL_BIND_HPP_INCLUDED
  8.  
  9. // Copyright Peter Dimov 2001
  10. // Copyright Aleksey Gurtovoy 2001-2004
  11. //
  12. // Distributed under the Boost Software License, Version 1.0.
  13. // (See accompanying file LICENSE_1_0.txt or copy at
  14. // http://www.boost.org/LICENSE_1_0.txt)
  15. //
  16. // See http://www.boost.org/libs/mpl for documentation.
  17.  
  18. // $Id$
  19. // $Date$
  20. // $Revision$
  21.  
  22. #if !defined(BOOST_MPL_PREPROCESSING_MODE)
  23. #   include <boost/mpl/bind_fwd.hpp>
  24. #   include <boost/mpl/placeholders.hpp>
  25. #   include <boost/mpl/next.hpp>
  26. #   include <boost/mpl/protect.hpp>
  27. #   include <boost/mpl/apply_wrap.hpp>
  28. #   include <boost/mpl/limits/arity.hpp>
  29. #   include <boost/mpl/aux_/na.hpp>
  30. #   include <boost/mpl/aux_/arity_spec.hpp>
  31. #   include <boost/mpl/aux_/type_wrapper.hpp>
  32. #   include <boost/mpl/aux_/yes_no.hpp>
  33. #   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  34. #       include <boost/type_traits/is_reference.hpp>
  35. #   endif
  36. #endif
  37.  
  38. #include <boost/mpl/aux_/config/bind.hpp>
  39. #include <boost/mpl/aux_/config/static_constant.hpp>
  40. #include <boost/mpl/aux_/config/use_preprocessed.hpp>
  41.  
  42. #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
  43.     && !defined(BOOST_MPL_PREPROCESSING_MODE)
  44.  
  45. #   if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  46. #       define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
  47. #   else
  48. #       define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
  49. #   endif
  50. #   include <boost/mpl/aux_/include_preprocessed.hpp>
  51.  
  52. #else
  53.  
  54. #   include <boost/mpl/aux_/preprocessor/params.hpp>
  55. #   include <boost/mpl/aux_/preprocessor/default_params.hpp>
  56. #   include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
  57. #   include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
  58. #   include <boost/mpl/aux_/preprocessor/ext_params.hpp>
  59. #   include <boost/mpl/aux_/preprocessor/repeat.hpp>
  60. #   include <boost/mpl/aux_/preprocessor/enum.hpp>
  61. #   include <boost/mpl/aux_/preprocessor/add.hpp>
  62. #   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
  63. #   include <boost/mpl/aux_/config/ctps.hpp>
  64. #   include <boost/mpl/aux_/config/ttp.hpp>
  65. #   include <boost/mpl/aux_/config/dtp.hpp>
  66. #   include <boost/mpl/aux_/nttp_decl.hpp>
  67.  
  68. #   include <boost/preprocessor/iterate.hpp>
  69. #   include <boost/preprocessor/comma_if.hpp>
  70. #   include <boost/preprocessor/cat.hpp>
  71. #   include <boost/preprocessor/inc.hpp>
  72.  
  73. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl {
  74.  
  75. // local macros, #undef-ined at the end of the header
  76. #   define AUX778076_APPLY \
  77.     BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
  78.     /**/
  79.  
  80. #   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
  81. #       define AUX778076_DMC_PARAM() , int dummy_
  82. #   else
  83. #       define AUX778076_DMC_PARAM()
  84. #   endif
  85.  
  86. #   define AUX778076_BIND_PARAMS(param) \
  87.     BOOST_MPL_PP_PARAMS( \
  88.           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  89.         , param \
  90.         ) \
  91.     /**/
  92.  
  93. #   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
  94.     BOOST_MPL_PP_DEFAULT_PARAMS( \
  95.           BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  96.         , param \
  97.         , value \
  98.         ) \
  99.     /**/
  100.  
  101. #   define AUX778076_BIND_N_PARAMS(n, param) \
  102.     BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
  103.     /**/
  104.  
  105. #   define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
  106.     BOOST_PP_COMMA_IF(n) \
  107.     BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
  108.     /**/
  109.  
  110. #if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
  111. #   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
  112.     AUX778076_BIND_DEFAULT_PARAMS(param, value) \
  113.     /**/
  114. #else
  115. #   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
  116.     AUX778076_BIND_PARAMS(param) \
  117.     /**/
  118. #endif
  119.  
  120. namespace aux {
  121.  
  122. #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  123.  
  124. template<
  125.       typename T, AUX778076_BIND_PARAMS(typename U)
  126.     >
  127. struct resolve_bind_arg
  128. {
  129.     typedef T type;
  130. };
  131.  
  132. #   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  133.  
  134. template<
  135.       typename T
  136.     , typename Arg
  137.     >
  138. struct replace_unnamed_arg
  139. {
  140.     typedef Arg next;
  141.     typedef T type;
  142. };
  143.  
  144. template<
  145.       typename Arg
  146.     >
  147. struct replace_unnamed_arg< arg<-1>,Arg >
  148. {
  149.     typedef typename Arg::next next;
  150.     typedef Arg type;
  151. };
  152.  
  153. #   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
  154.  
  155. template<
  156.       BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
  157.     >
  158. struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
  159. {
  160.     typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
  161. };
  162.  
  163. #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
  164. template<
  165.       typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
  166.     >
  167. struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
  168. {
  169.     typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
  170.     typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
  171. };
  172. #endif
  173.  
  174. #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  175.  
  176. // agurt, 15/jan/02: it's not a intended to be used as a function class, and
  177. // MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
  178. // work), so I went with the 'result_' here, and in all other similar cases
  179. template< bool >
  180. struct resolve_arg_impl
  181. {
  182.     template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
  183.     {
  184.         typedef T type;
  185.     };
  186. };
  187.  
  188. template<>
  189. struct resolve_arg_impl<true>
  190. {
  191.     template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
  192.     {
  193.         typedef typename AUX778076_APPLY<
  194.               T
  195.             , AUX778076_BIND_PARAMS(U)
  196.             >::type type;
  197.     };
  198. };
  199.  
  200. // for 'resolve_bind_arg'
  201. template< typename T > struct is_bind_template;
  202.  
  203. template<
  204.       typename T, AUX778076_BIND_PARAMS(typename U)
  205.     >
  206. struct resolve_bind_arg
  207.     : resolve_arg_impl< is_bind_template<T>::value >
  208.             ::template result_< T,AUX778076_BIND_PARAMS(U) >
  209. {
  210. };
  211.  
  212. #   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  213.  
  214. template< typename T >
  215. struct replace_unnamed_arg_impl
  216. {
  217.     template< typename Arg > struct result_
  218.     {
  219.         typedef Arg next;
  220.         typedef T type;
  221.     };
  222. };
  223.  
  224. template<>
  225. struct replace_unnamed_arg_impl< arg<-1> >
  226. {
  227.     template< typename Arg > struct result_
  228.     {
  229.         typedef typename next<Arg>::type next;
  230.         typedef Arg type;
  231.     };
  232. };
  233.  
  234. template< typename T, typename Arg >
  235. struct replace_unnamed_arg
  236.     : replace_unnamed_arg_impl<T>::template result_<Arg>
  237. {
  238. };
  239.  
  240. #   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
  241.  
  242. // agurt, 10/mar/02: the forward declaration has to appear before any of
  243. // 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
  244. template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
  245.  
  246. aux::no_tag is_bind_helper(...);
  247. template< typename T > aux::no_tag is_bind_helper(protect<T>*);
  248.  
  249. // overload for "main" form
  250. // agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload
  251. // in case if we use 'aux::type_wrapper< bind<...> >' here, and all
  252. // 'bind' instantiations form a complete type anyway
  253. #if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
  254. template<
  255.       typename F, AUX778076_BIND_PARAMS(typename T)
  256.     >
  257. aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
  258. #endif
  259.  
  260. template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
  261. aux::yes_tag is_bind_helper(arg<N>*);
  262.  
  263. template< bool is_ref_ = true >
  264. struct is_bind_template_impl
  265. {
  266.     template< typename T > struct result_
  267.     {
  268.         BOOST_STATIC_CONSTANT(bool, value = false);
  269.     };
  270. };
  271.  
  272. template<>
  273. struct is_bind_template_impl<false>
  274. {
  275.     template< typename T > struct result_
  276.     {
  277.         BOOST_STATIC_CONSTANT(bool, value =
  278.               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
  279.                 == sizeof(aux::yes_tag)
  280.             );
  281.     };
  282. };
  283.  
  284. template< typename T > struct is_bind_template
  285.     : is_bind_template_impl< ::mars_boost::detail::is_reference_impl<T>::value >
  286.         ::template result_<T>
  287. {
  288. };
  289.  
  290. #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  291.  
  292. } // namespace aux
  293.  
  294.  
  295. #define BOOST_PP_ITERATION_PARAMS_1 \
  296.     (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind.hpp>))
  297. #include BOOST_PP_ITERATE()
  298.  
  299. #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
  300.     && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
  301. /// if_/eval_if specializations
  302. #   define AUX778076_SPEC_NAME if_
  303. #   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
  304. #   include BOOST_PP_ITERATE()
  305.  
  306. #if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
  307. #   define AUX778076_SPEC_NAME eval_if
  308. #   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
  309. #   include BOOST_PP_ITERATE()
  310. #endif
  311. #endif
  312.  
  313. // real C++ version is already taken care of
  314. #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
  315.     && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
  316.  
  317. namespace aux {
  318. // apply_count_args
  319. #define AUX778076_COUNT_ARGS_PREFIX bind
  320. #define AUX778076_COUNT_ARGS_DEFAULT na
  321. #define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
  322. #include <boost/mpl/aux_/count_args.hpp>
  323. }
  324.  
  325. // bind
  326. template<
  327.       typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
  328.     >
  329. struct bind
  330.     : aux::bind_chooser<
  331.           aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
  332.         >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
  333. {
  334. };
  335.  
  336. BOOST_MPL_AUX_ARITY_SPEC(
  337.       BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
  338.     , bind
  339.     )
  340.  
  341. BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
  342.       BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
  343.     , bind
  344.     )
  345.  
  346.  
  347. #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  348.  
  349. #   undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
  350. #   undef AUX778076_BIND_N_SPEC_PARAMS
  351. #   undef AUX778076_BIND_N_PARAMS
  352. #   undef AUX778076_BIND_DEFAULT_PARAMS
  353. #   undef AUX778076_BIND_PARAMS
  354. #   undef AUX778076_DMC_PARAM
  355. #   undef AUX778076_APPLY
  356.  
  357. }}
  358.  
  359. #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
  360. #endif // BOOST_MPL_BIND_HPP_INCLUDED
  361.  
  362. ///// iteration, depth == 1
  363.  
  364. // For gcc 4.4 compatability, we must include the
  365. // BOOST_PP_ITERATION_DEPTH test inside an #else clause.
  366. #else // BOOST_PP_IS_ITERATING
  367. #if BOOST_PP_ITERATION_DEPTH() == 1
  368.  
  369. #   define i_ BOOST_PP_FRAME_ITERATION(1)
  370.  
  371. #if defined(AUX778076_SPEC_NAME)
  372.  
  373. // lazy metafunction specialization
  374. template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
  375. struct BOOST_PP_CAT(quote,i_);
  376.  
  377. template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
  378.  
  379. template<
  380.       typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
  381.     >
  382. struct BOOST_PP_CAT(bind,i_)<
  383.       BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
  384.     AUX778076_BIND_N_PARAMS(i_,T)
  385.     >
  386. {
  387.     template<
  388.           AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
  389.         >
  390.     struct apply
  391.     {
  392.      private:
  393.         typedef mpl::arg<1> n1;
  394. #       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
  395. #       include BOOST_PP_ITERATE()
  396.  
  397.         typedef typename AUX778076_SPEC_NAME<
  398.               typename t1::type
  399.             , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
  400.             >::type f_;
  401.  
  402.      public:
  403.         typedef typename f_::type type;
  404.     };
  405. };
  406.  
  407. #undef AUX778076_SPEC_NAME
  408.  
  409. #else // AUX778076_SPEC_NAME
  410.  
  411. template<
  412.       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
  413.     >
  414. struct BOOST_PP_CAT(bind,i_)
  415. {
  416.     template<
  417.           AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
  418.         >
  419.     struct apply
  420.     {
  421.      private:
  422. #   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  423.  
  424.         typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
  425.         typedef typename r0::type a0;
  426.         typedef typename r0::next n1;
  427.         typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
  428.         ///
  429. #   else
  430.         typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
  431.  
  432. #   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
  433.  
  434. #   if i_ > 0
  435. #       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
  436. #       include BOOST_PP_ITERATE()
  437. #   endif
  438.  
  439.      public:
  440.  
  441. #   define AUX778076_ARG(unused, i_, t) \
  442.     BOOST_PP_COMMA_IF(i_) \
  443.     typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
  444. /**/
  445.  
  446.         typedef typename BOOST_PP_CAT(apply_wrap,i_)<
  447.               f_
  448.             BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
  449.             >::type type;
  450.  
  451. #   undef AUX778076_ARG
  452.     };
  453. };
  454.  
  455. namespace aux {
  456.  
  457. #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  458.  
  459. template<
  460.       typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
  461.     >
  462. struct resolve_bind_arg<
  463.       BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
  464.     >
  465. {
  466.     typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
  467.     typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
  468. };
  469.  
  470. #else
  471.  
  472. template<
  473.       typename F AUX778076_BIND_N_PARAMS(i_, typename T)
  474.     >
  475. aux::yes_tag
  476. is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
  477.  
  478. #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  479.  
  480. } // namespace aux
  481.  
  482. BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
  483. BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
  484.  
  485. #   if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
  486. #   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  487.    
  488. #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
  489. /// primary template (not a specialization!)
  490. template<
  491.       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
  492.     >
  493. struct bind
  494.     : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
  495. {
  496. };
  497. #else
  498. template<
  499.       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
  500.     >
  501. struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
  502.     : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
  503. {
  504. };
  505. #endif
  506.  
  507. #   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  508.  
  509. namespace aux {
  510.  
  511. template<>
  512. struct bind_chooser<i_>
  513. {
  514.     template<
  515.           typename F, AUX778076_BIND_PARAMS(typename T)
  516.         >
  517.     struct result_
  518.     {
  519.         typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
  520.     };
  521. };
  522.  
  523. } // namespace aux
  524.  
  525. #   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  526. #   endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
  527.  
  528. #endif // AUX778076_SPEC_NAME
  529.  
  530. #   undef i_
  531.  
  532. ///// iteration, depth == 2
  533.  
  534. #elif BOOST_PP_ITERATION_DEPTH() == 2
  535.  
  536. #   define j_ BOOST_PP_FRAME_ITERATION(2)
  537. #   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  538.  
  539.         typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
  540.         typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
  541.         typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
  542.         typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
  543.         ///
  544. #   else
  545.         typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
  546.  
  547. #   endif
  548. #   undef j_
  549.  
  550. #endif // BOOST_PP_ITERATION_DEPTH()
  551. #endif // BOOST_PP_IS_ITERATING
  552.  
downloadbind.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top