iterator/detail/enable_if.hpp
Go to the documentation of this file.
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 
11 #include <boost/mpl/identity.hpp>
12 
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 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 boost
80 
82 
83 #endif // BOOST_ENABLE_IF_23022003THW_HPP
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
GLfloat value


librealsense2
Author(s): Sergey Dorodnicov , Doron Hirshberg , Mark Horn , Reagan Lopez , Itay Carpis
autogenerated on Mon May 3 2021 02:47:14