apply.hpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. // Copyright Aleksey Gurtovoy 2000-2004
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. //
  7. // Preprocessed version of "boost/mpl/apply.hpp" header
  8. // -- DO NOT modify by hand!
  9. namespace boost { namespace mpl {
  10. template<
  11. typename F
  12. >
  13. struct apply0
  14. {
  15. typedef typename apply_wrap0<
  16. typename lambda<F>::type
  17. >::type type;
  18. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  19. 1
  20. , apply0
  21. , (F )
  22. )
  23. };
  24. /// workaround for ETI bug
  25. template<>
  26. struct apply0<int>
  27. {
  28. typedef int type;
  29. };
  30. template<
  31. typename F, typename T1
  32. >
  33. struct apply1
  34. {
  35. typedef typename apply_wrap1<
  36. typename lambda<F>::type
  37. , T1
  38. >::type type;
  39. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  40. 2
  41. , apply1
  42. , (F, T1)
  43. )
  44. };
  45. /// workaround for ETI bug
  46. template<>
  47. struct apply1< int,int >
  48. {
  49. typedef int type;
  50. };
  51. template<
  52. typename F, typename T1, typename T2
  53. >
  54. struct apply2
  55. {
  56. typedef typename apply_wrap2<
  57. typename lambda<F>::type
  58. , T1, T2
  59. >::type type;
  60. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  61. 3
  62. , apply2
  63. , (F, T1, T2)
  64. )
  65. };
  66. /// workaround for ETI bug
  67. template<>
  68. struct apply2< int,int,int >
  69. {
  70. typedef int type;
  71. };
  72. template<
  73. typename F, typename T1, typename T2, typename T3
  74. >
  75. struct apply3
  76. {
  77. typedef typename apply_wrap3<
  78. typename lambda<F>::type
  79. , T1, T2, T3
  80. >::type type;
  81. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  82. 4
  83. , apply3
  84. , (F, T1, T2, T3)
  85. )
  86. };
  87. /// workaround for ETI bug
  88. template<>
  89. struct apply3< int,int,int,int >
  90. {
  91. typedef int type;
  92. };
  93. template<
  94. typename F, typename T1, typename T2, typename T3, typename T4
  95. >
  96. struct apply4
  97. {
  98. typedef typename apply_wrap4<
  99. typename lambda<F>::type
  100. , T1, T2, T3, T4
  101. >::type type;
  102. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  103. 5
  104. , apply4
  105. , (F, T1, T2, T3, T4)
  106. )
  107. };
  108. /// workaround for ETI bug
  109. template<>
  110. struct apply4< int,int,int,int,int >
  111. {
  112. typedef int type;
  113. };
  114. template<
  115. typename F, typename T1, typename T2, typename T3, typename T4
  116. , typename T5
  117. >
  118. struct apply5
  119. {
  120. typedef typename apply_wrap5<
  121. typename lambda<F>::type
  122. , T1, T2, T3, T4, T5
  123. >::type type;
  124. BOOST_MPL_AUX_LAMBDA_SUPPORT(
  125. 6
  126. , apply5
  127. , (F, T1, T2, T3, T4, T5)
  128. )
  129. };
  130. /// workaround for ETI bug
  131. template<>
  132. struct apply5< int,int,int,int,int,int >
  133. {
  134. typedef int type;
  135. };
  136. }}