sick_visionary_cpp_shared
3pp
boost
iterator
detail
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
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
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
81
#include <
boost/iterator/detail/config_undef.hpp
>
82
83
#endif // BOOST_ENABLE_IF_23022003THW_HPP
boost::iterators::enable_if
Definition:
iterator/detail/enable_if.hpp:68
boost::iterators::enabled::base
Definition:
iterator/detail/enable_if.hpp:33
identity.hpp
T
T
Definition:
mem_fn_cc.hpp:25
template
string template
boost::iterators::enabled::base::type
T type
Definition:
iterator/detail/enable_if.hpp:35
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
config_def.hpp
BOOST_NO_SFINAE
#define BOOST_NO_SFINAE
Definition:
borland.hpp:99
boost::iterators::enabled
Definition:
iterator/detail/enable_if.hpp:30
config_undef.hpp
workaround.hpp
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:38:54