BVB Source Codes

mars Show enable_if.hpp Source code

Return Download mars: download enable_if.hpp Source code - Download mars Source code - Type:.hpp
  1. // (C) Copyright David Abrahams 2002.
  2. // (C) Copyright Jeremy Siek    2002.
  3. // (C) Copyright Thomas Witt    2002.
  4. // Distributed under the Boost Software License, Version 1.0. (See
  5. // accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. #ifndef BOOST_ENABLE_IF_23022003THW_HPP
  8. #define BOOST_ENABLE_IF_23022003THW_HPP
  9.  
  10. #include <boost/detail/workaround.hpp>
  11. #include <boost/mpl/identity.hpp>
  12.  
  13. #include <boost/iterator/detail/config_def.hpp>
  14.  
  15. //
  16. // Boost iterators uses its own enable_if cause we need
  17. // special semantics for deficient compilers.
  18. // 23/02/03 thw
  19. //
  20.  
  21. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost
  22. {
  23.  
  24.   namespace iterators
  25.   {
  26.     //
  27.     // Base machinery for all kinds of enable if
  28.     //
  29.     template<bool>
  30.     struct enabled
  31.     {
  32.       template<typename T>
  33.       struct base
  34.       {
  35.         typedef T type;
  36.       };
  37.     };
  38.  
  39.     //
  40.     // For compilers that don't support "Substitution Failure Is Not An Error"
  41.     // enable_if falls back to always enabled. See comments
  42.     // on operator implementation for consequences.
  43.     //
  44.     template<>
  45.     struct enabled<false>
  46.     {
  47.       template<typename T>
  48.       struct base
  49.       {
  50. #ifdef BOOST_NO_SFINAE
  51.  
  52.         typedef T type;
  53.  
  54.         // This way to do it would give a nice error message containing
  55.         // invalid overload, but has the big disadvantage that
  56.         // there is no reference to user code in the error message.
  57.         //
  58.         // struct invalid_overload;
  59.         // typedef invalid_overload type;
  60.         //
  61. #endif
  62.       };
  63.     };
  64.  
  65.  
  66.     template <class Cond,
  67.               class Return>
  68.     struct enable_if
  69. # if !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_IS_CONVERTIBLE)
  70.       : enabled<(Cond::value)>::template base<Return>
  71. # else
  72.       : mpl::identity<Return>
  73. # endif
  74.     {
  75.     };
  76.  
  77.   } // namespace iterators
  78.  
  79. } // namespace mars_boost
  80.  
  81. #include <boost/iterator/detail/config_undef.hpp>
  82.  
  83. #endif // BOOST_ENABLE_IF_23022003THW_HPP
  84.  
downloadenable_if.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