diff --git a/src/small_unique_ptr.hpp b/src/small_unique_ptr.hpp index b957c53..3d1bab9 100644 --- a/src/small_unique_ptr.hpp +++ b/src/small_unique_ptr.hpp @@ -55,6 +55,16 @@ namespace detail inline constexpr bool is_proper_base_of_v = is_proper_base_of::value; + template + struct is_complete : std::false_type {}; + + template + struct is_complete> : std::true_type {}; + + template + inline constexpr bool is_complete_v = is_complete::value; + + inline constexpr std::size_t small_ptr_size = 64; @@ -203,7 +213,7 @@ template class small_unique_ptr : private detail::small_unique_ptr_base { public: - static_assert(!std::is_array_v && !std::is_void_v); + static_assert(detail::is_complete_v && !std::is_array_v); using element_type = T; using pointer = T*;