BVB Source Codes

mars Show negate.hpp Source code

Return Download mars: download negate.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. #ifndef BOOST_MPL_NEGATE_HPP_INCLUDED
  3. #define BOOST_MPL_NEGATE_HPP_INCLUDED
  4.  
  5. // Copyright Aleksey Gurtovoy 2000-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. #include <boost/mpl/integral_c.hpp>
  18. #include <boost/mpl/aux_/msvc_eti_base.hpp>
  19. #include <boost/mpl/aux_/na_spec.hpp>
  20. #include <boost/mpl/aux_/lambda_support.hpp>
  21. #include <boost/mpl/aux_/config/eti.hpp>
  22. #include <boost/mpl/aux_/config/integral.hpp>
  23. #include <boost/mpl/aux_/config/static_constant.hpp>
  24.  
  25. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl {
  26.  
  27. template< typename Tag > struct negate_impl;
  28.  
  29. template< typename T > struct negate_tag
  30. {
  31.     typedef typename T::tag type;
  32. };
  33.  
  34. template<
  35.       typename BOOST_MPL_AUX_NA_PARAM(N)
  36.     >
  37. struct negate
  38. #if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
  39.     : negate_impl<
  40.           typename negate_tag<N>::type
  41.         >::template apply<N>::type
  42. #else
  43.     : aux::msvc_eti_base< typename apply_wrap1<
  44.           negate_impl< typename negate_tag<N>::type >
  45.         , N
  46.         >::type >::type
  47. #endif
  48. {
  49.     BOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N))
  50. };
  51.  
  52. BOOST_MPL_AUX_NA_SPEC(1, negate)
  53.  
  54.  
  55. #if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
  56. namespace aux {
  57. template< typename T, T n > struct negate_wknd
  58. {
  59.     BOOST_STATIC_CONSTANT(T, value = -n);
  60.     typedef integral_c<T,value> type;
  61. };
  62. }
  63. #endif
  64.  
  65. template<>
  66. struct negate_impl<integral_c_tag>
  67. {
  68. #if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
  69.     template< typename N > struct apply
  70.         : aux::negate_wknd< typename N::value_type, N::value >
  71. #else
  72.     template< typename N > struct apply
  73.         : integral_c< typename N::value_type, (-N::value) >
  74. #endif    
  75.     {
  76.     };
  77. };
  78.  
  79. }}
  80.  
  81. #endif // BOOST_MPL_NEGATE_HPP_INCLUDED
  82.  
downloadnegate.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