sick_visionary_cpp_shared
3pp
boost
type_traits
is_destructible.hpp
Go to the documentation of this file.
1
2
// (C) Copyright John Maddock 2015.
3
// Use, modification and distribution are subject to the Boost Software License,
4
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
5
// http://www.boost.org/LICENSE_1_0.txt).
6
//
7
// See http://www.boost.org/libs/type_traits for most recent version including documentation.
8
9
#ifndef BOOST_TT_IS_DESTRUCTIBLE_HPP_INCLUDED
10
#define BOOST_TT_IS_DESTRUCTIBLE_HPP_INCLUDED
11
12
#include <cstddef>
// size_t
13
#include <
boost/type_traits/integral_constant.hpp
>
14
#include <
boost/detail/workaround.hpp
>
15
16
#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800)
17
18
#include <
boost/type_traits/detail/yes_no_type.hpp
>
19
#include <
boost/type_traits/declval.hpp
>
20
21
namespace
boost
{
22
23
namespace
detail{
24
25
struct
is_destructible_imp
26
{
27
template<typename T, typename = decltype(boost::declval<T&>().~T())>
28
static
boost::type_traits::yes_type
test
(
int
);
29
template
<
typename
>
30
static
boost::type_traits::no_type
test
(...);
31
};
32
33
}
34
35
template
<
class
T>
struct
is_destructible
:
public
integral_constant
<bool, sizeof(detail::is_destructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>{};
36
37
#else
38
39
#include <
boost/type_traits/is_pod.hpp
>
40
#include <
boost/type_traits/is_class.hpp
>
41
42
namespace
boost
{
43
44
// We don't know how to implement this:
45
template
<
class
T>
struct
is_destructible
:
public
integral_constant
<bool, is_pod<T>::value || is_class<T>::value>{};
46
#endif
47
48
template
<>
struct
is_destructible
<void> :
public
false_type
{};
49
template
<>
struct
is_destructible
<void const> :
public
false_type
{};
50
template
<>
struct
is_destructible
<void volatile> :
public
false_type
{};
51
template
<>
struct
is_destructible
<void const volatile> :
public
false_type
{};
52
template
<
class
T>
struct
is_destructible
<
T
&> :
public
is_destructible<T>
{};
53
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
54
template
<
class
T>
struct
is_destructible
<
T
&&> :
public
is_destructible<T>
{};
55
#endif
56
template
<
class
T, std::
size_t
N>
struct
is_destructible
<
T
[N]> :
public
is_destructible
<T>{};
57
template
<
class
T>
struct
is_destructible
<
T
[]> :
public
is_destructible
<T>{};
58
59
}
// namespace boost
60
61
#endif // BOOST_TT_IS_DESTRUCTIBLE_HPP_INCLUDED
boost::detail::is_destructible_imp::test
static boost::type_traits::yes_type test(int)
T
T
Definition:
mem_fn_cc.hpp:25
integral_constant.hpp
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
is_pod.hpp
is_class.hpp
declval.hpp
yes_no_type.hpp
boost::is_destructible
Definition:
is_destructible.hpp:35
boost::type_traits::yes_type
char yes_type
Definition:
yes_no_type.hpp:17
workaround.hpp
boost::integral_constant
Definition:
integral_constant.hpp:52
boost::detail::is_destructible_imp
Definition:
is_destructible.hpp:25
boost::type_traits::no_type
Definition:
yes_no_type.hpp:18
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:40:00