/usr/include/boost/core
NameSizeModeActions
addressof.hpp61530644editdlrm
allocator_access.hpp159440644editdlrm
alloc_construct.hpp34360644editdlrm
checked_delete.hpp16770644editdlrm
default_allocator.hpp33330644editdlrm
demangle.hpp30340644editdlrm
empty_value.hpp33240644editdlrm
enable_if.hpp33150644editdlrm
exchange.hpp9110644editdlrm
explicit_operator_bool.hpp53540644editdlrm
first_scalar.hpp8130644editdlrm
ignore_unused.hpp19760644editdlrm
is_same.hpp7930644editdlrm
lightweight_test.hpp184430644editdlrm
lightweight_test_trait.hpp39730644editdlrm
noinit_adaptor.hpp17910644editdlrm
noncopyable.hpp19110644editdlrm
no_exceptions_support.hpp18720644editdlrm
null_deleter.hpp12320644editdlrm
nvp.hpp10000644editdlrm
pointer_traits.hpp50720644editdlrm
quick_exit.hpp10980644editdlrm
ref.hpp59760644editdlrm
scoped_enum.hpp78800644editdlrm
swap.hpp21230644editdlrm
typeinfo.hpp31510644editdlrm
uncaught_exceptions.hpp68190644editdlrm
underlying_type.hpp22050644editdlrm
use_default.hpp3000644editdlrm
Edit: /usr/include/boost/core/addressof.hpp (6153B)
/* Copyright (C) 2002 Brad King (brad.king@kitware.com) Copyright (C) 2002 Douglas Gregor (gregod@cs.rpi.edu) Copyright (C) 2002, 2008, 2013 Peter Dimov Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_CORE_ADDRESSOF_HPP #define BOOST_CORE_ADDRESSOF_HPP #include #if defined(BOOST_MSVC_FULL_VER) && BOOST_MSVC_FULL_VER >= 190024215 #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF #elif defined(BOOST_GCC) && BOOST_GCC >= 70000 #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF #elif defined(__has_builtin) #if __has_builtin(__builtin_addressof) #define BOOST_CORE_HAS_BUILTIN_ADDRESSOF #endif #endif #if defined(BOOST_CORE_HAS_BUILTIN_ADDRESSOF) #if defined(BOOST_NO_CXX11_CONSTEXPR) #define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF #endif namespace boost { template BOOST_CONSTEXPR inline T* addressof(T& o) BOOST_NOEXCEPT { return __builtin_addressof(o); } } /* boost */ #else #include #include namespace boost { namespace detail { template class addrof_ref { public: BOOST_FORCEINLINE addrof_ref(T& o) BOOST_NOEXCEPT : o_(o) { } BOOST_FORCEINLINE operator T&() const BOOST_NOEXCEPT { return o_; } private: addrof_ref& operator=(const addrof_ref&); T& o_; }; template struct addrof { static BOOST_FORCEINLINE T* get(T& o, long) BOOST_NOEXCEPT { return reinterpret_cast(& const_cast(reinterpret_cast(o))); } static BOOST_FORCEINLINE T* get(T* p, int) BOOST_NOEXCEPT { return p; } }; #if !defined(BOOST_NO_CXX11_NULLPTR) #if !defined(BOOST_NO_CXX11_DECLTYPE) && \ (defined(__INTEL_COMPILER) || \ (defined(__clang__) && !defined(_LIBCPP_VERSION))) typedef decltype(nullptr) addrof_null_t; #else typedef std::nullptr_t addrof_null_t; #endif template<> struct addrof { typedef addrof_null_t type; static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT { return &o; } }; template<> struct addrof { typedef const addrof_null_t type; static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT { return &o; } }; template<> struct addrof { typedef volatile addrof_null_t type; static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT { return &o; } }; template<> struct addrof { typedef const volatile addrof_null_t type; static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT { return &o; } }; #endif } /* detail */ #if defined(BOOST_NO_CXX11_SFINAE_EXPR) || \ defined(BOOST_NO_CXX11_CONSTEXPR) || \ defined(BOOST_NO_CXX11_DECLTYPE) #define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF template BOOST_FORCEINLINE T* addressof(T& o) BOOST_NOEXCEPT { #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) || \ BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5120) return boost::detail::addrof::get(o, 0); #else return boost::detail::addrof::get(boost::detail::addrof_ref(o), 0); #endif } #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)) namespace detail { template struct addrof_result { typedef T* type; }; } /* detail */ template BOOST_FORCEINLINE typename boost::detail::addrof_result::type addressof(T (&o)[N]) BOOST_NOEXCEPT { return &o; } #endif #if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564)) template BOOST_FORCEINLINE T (*addressof(T (&o)[N]) BOOST_NOEXCEPT)[N] { return reinterpret_cast(&o); } template BOOST_FORCEINLINE const T (*addressof(const T (&o)[N]) BOOST_NOEXCEPT)[N] { return reinterpret_cast(&o); } #endif #else namespace detail { template T addrof_declval() BOOST_NOEXCEPT; template struct addrof_void { typedef void type; }; template struct addrof_member_operator { static constexpr bool value = false; }; template struct addrof_member_operator().operator&())>::type> { static constexpr bool value = true; }; #if BOOST_WORKAROUND(BOOST_INTEL, < 1600) struct addrof_addressable { }; addrof_addressable* operator&(addrof_addressable&) BOOST_NOEXCEPT; #endif template struct addrof_non_member_operator { static constexpr bool value = false; }; template struct addrof_non_member_operator()))>::type> { static constexpr bool value = true; }; template struct addrof_expression { static constexpr bool value = false; }; template struct addrof_expression())>::type> { static constexpr bool value = true; }; template struct addrof_is_constexpr { static constexpr bool value = addrof_expression::value && !addrof_member_operator::value && !addrof_non_member_operator::value; }; template struct addrof_if { }; template struct addrof_if { typedef T* type; }; template BOOST_FORCEINLINE typename addrof_if::value, T>::type addressof(T& o) BOOST_NOEXCEPT { return addrof::get(addrof_ref(o), 0); } template constexpr BOOST_FORCEINLINE typename addrof_if::value, T>::type addressof(T& o) BOOST_NOEXCEPT { return &o; } } /* detail */ template constexpr BOOST_FORCEINLINE T* addressof(T& o) BOOST_NOEXCEPT { return boost::detail::addressof(o); } #endif } /* boost */ #endif #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) namespace boost { template const T* addressof(const T&&) = delete; } /* boost */ #endif #endif