BVB Source Codes

mars Show na_spec.hpp Source code

Return Download mars: download na_spec.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #ifndef BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
  3. #define BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
  4.  
  5. // Copyright Aleksey Gurtovoy 2001-2004
  6. //
  7. // Distributed under the Boost Software License, Version 1.0.
  8. // (See accompanying file LICENSE_1_0.txt or copy at
  9. // http://www.boost.org/LICENSE_1_0.txt)
  10. //
  11. // See http://www.boost.org/libs/mpl for documentation.
  12.  
  13. // $Id$
  14. // $Date$
  15. // $Revision$
  16.  
  17. #if !defined(BOOST_MPL_PREPROCESSING_MODE)
  18. #   include <boost/mpl/lambda_fwd.hpp>
  19. #   include <boost/mpl/int.hpp>
  20. #   include <boost/mpl/bool.hpp>
  21. #   include <boost/mpl/aux_/na.hpp>
  22. #   include <boost/mpl/aux_/arity.hpp>
  23. #   include <boost/mpl/aux_/template_arity_fwd.hpp>
  24. #endif
  25.  
  26. #include <boost/mpl/aux_/preprocessor/params.hpp>
  27. #include <boost/mpl/aux_/preprocessor/enum.hpp>
  28. #include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
  29. #include <boost/mpl/aux_/lambda_arity_param.hpp>
  30. #include <boost/mpl/aux_/config/dtp.hpp>
  31. #include <boost/mpl/aux_/config/eti.hpp>
  32. #include <boost/mpl/aux_/nttp_decl.hpp>
  33. #include <boost/mpl/aux_/config/ttp.hpp>
  34. #include <boost/mpl/aux_/config/lambda.hpp>
  35. #include <boost/mpl/aux_/config/overload_resolution.hpp>
  36.  
  37.  
  38. #define BOOST_MPL_AUX_NA_PARAMS(i) \
  39.     BOOST_MPL_PP_ENUM(i, na) \
  40. /**/
  41.  
  42. #if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
  43. #   define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
  44. namespace aux { \
  45. template< BOOST_MPL_AUX_NTTP_DECL(int, N) > \
  46. struct arity< \
  47.           name< BOOST_MPL_AUX_NA_PARAMS(i) > \
  48.         , N \
  49.         > \
  50.     : int_< BOOST_MPL_LIMIT_METAFUNCTION_ARITY > \
  51. { \
  52. }; \
  53. } \
  54. /**/
  55. #else
  56. #   define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) /**/
  57. #endif
  58.  
  59. #define BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
  60. template<> \
  61. struct name< BOOST_MPL_AUX_NA_PARAMS(i) > \
  62. { \
  63.     template< \
  64.           BOOST_MPL_PP_PARAMS(i, typename T) \
  65.         BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
  66.         > \
  67.     struct apply \
  68.         : name< BOOST_MPL_PP_PARAMS(i, T) > \
  69.     { \
  70.     }; \
  71. }; \
  72. /**/
  73.  
  74. #if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
  75. #   define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
  76. template<> \
  77. struct lambda< \
  78.       name< BOOST_MPL_AUX_NA_PARAMS(i) > \
  79.     , void_ \
  80.     , true_ \
  81.     > \
  82. { \
  83.     typedef false_ is_le; \
  84.     typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
  85. }; \
  86. template<> \
  87. struct lambda< \
  88.       name< BOOST_MPL_AUX_NA_PARAMS(i) > \
  89.     , void_ \
  90.     , false_ \
  91.     > \
  92. { \
  93.     typedef false_ is_le; \
  94.     typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
  95. }; \
  96. /**/
  97. #else
  98. #   define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
  99. template< typename Tag > \
  100. struct lambda< \
  101.       name< BOOST_MPL_AUX_NA_PARAMS(i) > \
  102.     , Tag \
  103.     BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
  104.     > \
  105. { \
  106.     typedef false_ is_le; \
  107.     typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > result_; \
  108.     typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
  109. }; \
  110. /**/
  111. #endif
  112.  
  113. #if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
  114.     || defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
  115.         && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
  116. #   define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
  117. namespace aux { \
  118. template< BOOST_MPL_PP_PARAMS(j, typename T) > \
  119. struct template_arity< \
  120.           name< BOOST_MPL_PP_PARAMS(j, T) > \
  121.         > \
  122.     : int_<j> \
  123. { \
  124. }; \
  125. \
  126. template<> \
  127. struct template_arity< \
  128.           name< BOOST_MPL_PP_ENUM(i, na) > \
  129.         > \
  130.     : int_<-1> \
  131. { \
  132. }; \
  133. } \
  134. /**/
  135. #else
  136. #   define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/
  137. #endif
  138.  
  139. #if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
  140. #   define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
  141. template<> \
  142. struct name< BOOST_MPL_PP_ENUM(i, int) > \
  143. { \
  144.     typedef int type; \
  145.     enum { value = 0 }; \
  146. }; \
  147. /**/
  148. #else
  149. #   define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/
  150. #endif
  151.  
  152. #define BOOST_MPL_AUX_NA_PARAM(param) param = na
  153.  
  154. #define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
  155. BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
  156. BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
  157. BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
  158. BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name) \
  159. /**/
  160.  
  161. #define BOOST_MPL_AUX_NA_SPEC(i, name) \
  162. BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
  163. BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
  164. /**/
  165.  
  166. #define BOOST_MPL_AUX_NA_SPEC2(i, j, name) \
  167. BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
  168. BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
  169. BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
  170. BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
  171. BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
  172. /**/
  173.  
  174.  
  175. #endif // BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
  176.  
downloadna_spec.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