has_nothrow_constructor.hpp
Go to the documentation of this file.
1 
2 // (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
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_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
10 #define BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
11 
12 #include <cstddef> // size_t
15 
16 #ifdef BOOST_HAS_NOTHROW_CONSTRUCTOR
17 
18 #if defined(BOOST_MSVC) || defined(BOOST_INTEL)
20 #endif
21 #if defined(__GNUC__ ) || defined(__SUNPRO_CC) || defined(__clang__)
23 #endif
24 
25 namespace boost {
26 
27 template <class T> struct has_nothrow_constructor : public integral_constant<bool, BOOST_HAS_NOTHROW_CONSTRUCTOR(T)>{};
28 
29 #elif !defined(BOOST_NO_CXX11_NOEXCEPT)
30 
33 
34 #ifdef BOOST_MSVC
35 #pragma warning(push)
36 #pragma warning(disable:4197) // top-level volatile in cast is ignored
37 #endif
38 
39 namespace boost { namespace detail{
40 
41  template <class T, bool b> struct has_nothrow_constructor_imp : public boost::integral_constant<bool, false>{};
42  template <class T> struct has_nothrow_constructor_imp<T, true> : public boost::integral_constant<bool, noexcept(T())>{};
43  template <class T, std::size_t N> struct has_nothrow_constructor_imp<T[N], true> : public has_nothrow_constructor_imp<T, true> {};
44 }
45 
46 template <class T> struct has_nothrow_constructor : public detail::has_nothrow_constructor_imp<T, is_default_constructible<T>::value>{};
47 
48 #ifdef BOOST_MSVC
49 #pragma warning(pop)
50 #endif
51 
52 #else
53 
55 
56 namespace boost {
57 
58 template <class T> struct has_nothrow_constructor : public ::boost::has_trivial_constructor<T> {};
59 
60 #endif
61 
62 template<> struct has_nothrow_constructor<void> : public false_type {};
63 #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
64 template<> struct has_nothrow_constructor<void const> : public false_type{};
65 template<> struct has_nothrow_constructor<void const volatile> : public false_type{};
66 template<> struct has_nothrow_constructor<void volatile> : public false_type{};
67 #endif
68 
69 template <class T> struct has_nothrow_default_constructor : public has_nothrow_constructor<T>{};
70 
71 } // namespace boost
72 
73 #endif // BOOST_TT_HAS_NOTHROW_CONSTRUCTOR_HPP_INCLUDED
typedef void(APIENTRY *GLDEBUGPROC)(GLenum source
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
const char * detail


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