quote.hpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // Copyright Aleksey Gurtovoy 2000-2008
  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 the main "quote.hpp" header
  8. // -- DO NOT modify by hand!
  9. namespace boost { namespace mpl {
  10. template< typename T, bool has_type_ >
  11. struct quote_impl
  12. {
  13. typedef typename T::type type;
  14. };
  15. template< typename T >
  16. struct quote_impl< T,false >
  17. {
  18. typedef T type;
  19. };
  20. template<
  21. template< typename P1 > class F
  22. , typename Tag = void_
  23. >
  24. struct quote1
  25. {
  26. template< typename U1 > struct apply
  27. {
  28. typedef typename quote_impl<
  29. F<U1>
  30. , aux::has_type< F<U1> >::value
  31. >::type type;
  32. };
  33. };
  34. template<
  35. template< typename P1, typename P2 > class F
  36. , typename Tag = void_
  37. >
  38. struct quote2
  39. {
  40. template< typename U1, typename U2 > struct apply
  41. {
  42. typedef typename quote_impl<
  43. F< U1,U2 >
  44. , aux::has_type< F< U1,U2 > >::value
  45. >::type type;
  46. };
  47. };
  48. template<
  49. template< typename P1, typename P2, typename P3 > class F
  50. , typename Tag = void_
  51. >
  52. struct quote3
  53. {
  54. template< typename U1, typename U2, typename U3 > struct apply
  55. {
  56. typedef typename quote_impl<
  57. F< U1,U2,U3 >
  58. , aux::has_type< F< U1,U2,U3 > >::value
  59. >::type type;
  60. };
  61. };
  62. template<
  63. template< typename P1, typename P2, typename P3, typename P4 > class F
  64. , typename Tag = void_
  65. >
  66. struct quote4
  67. {
  68. template<
  69. typename U1, typename U2, typename U3, typename U4
  70. >
  71. struct apply
  72. {
  73. typedef typename quote_impl<
  74. F< U1,U2,U3,U4 >
  75. , aux::has_type< F< U1,U2,U3,U4 > >::value
  76. >::type type;
  77. };
  78. };
  79. template<
  80. template<
  81. typename P1, typename P2, typename P3, typename P4
  82. , typename P5
  83. >
  84. class F
  85. , typename Tag = void_
  86. >
  87. struct quote5
  88. {
  89. template<
  90. typename U1, typename U2, typename U3, typename U4
  91. , typename U5
  92. >
  93. struct apply
  94. {
  95. typedef typename quote_impl<
  96. F< U1,U2,U3,U4,U5 >
  97. , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
  98. >::type type;
  99. };
  100. };
  101. }}