2 // Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8 #ifndef BEAST_DETAIL_EMPTY_BASE_OPTIMIZATION_HPP
9 #define BEAST_DETAIL_EMPTY_BASE_OPTIMIZATION_HPP
11 #include <type_traits>
18 struct empty_base_optimization_decide
19 : std::integral_constant <bool,
20 std::is_empty <T>::value
31 bool ShouldDeriveFrom =
32 empty_base_optimization_decide<T>::value
34 class empty_base_optimization : private T
37 empty_base_optimization() = default;
39 empty_base_optimization(T const& t)
43 empty_base_optimization(T&& t)
52 T const& member() const noexcept
58 //------------------------------------------------------------------------------
64 class empty_base_optimization <T, UniqueID, false>
67 empty_base_optimization() = default;
69 empty_base_optimization(T const& t)
73 empty_base_optimization(T&& t)
82 T const& member() const noexcept