#include <__iterator/iterator_traits.h>
#include <__memory/construct_at.h>
#include <__memory/pointer_traits.h>
-#include <type_traits>
+#include <__type_traits/conditional.h>
+#include <__utility/swap.h>
+#include <cstring>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__chrono/duration.h>
#include <__chrono/time_point.h>
#include <__config>
+#include <__type_traits/common_type.h>
#include <ratio>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <iosfwd>
#include <new>
#include <system_error>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__fwd/hash.h>
#include <__iterator/back_insert_iterator.h>
#include <__iterator/iterator_traits.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_pointer.h>
+#include <__type_traits/remove_const.h>
+#include <__type_traits/remove_pointer.h>
#include <cstddef>
#include <string>
#include <string_view>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
# include <iomanip> // for quoted
#include <__config>
#include <__filesystem/path.h>
#include <string>
-#include <type_traits>
// Only required on Windows for __widen_from_utf8, and included conservatively
// because it requires support for localization.
#include <__iterator/incrementable_traits.h>
#include <__iterator/iterator_traits.h>
#include <__iterator/wrap_iter.h>
+#include <__type_traits/add_pointer.h>
#include <__utility/move.h>
#include <cstddef>
#include <string_view>
#include <__format/format_parse_context.h>
#include <__functional/invoke.h>
#include <__memory/addressof.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/unreachable.h>
#include <__variant/monostate.h>
#include <__config>
#include <__format/concepts.h>
#include <__format/format_arg.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/extent.h>
+#include <__type_traits/is_same.h>
#include <__utility/forward.h>
#include <string>
#include <string_view>
#include <__config>
#include <__format/format_error.h>
+#include <__type_traits/is_constant_evaluated.h>
#include <string_view>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#include <__format/formatter_output.h>
#include <__format/parser_std_format_spec.h>
#include <__memory/allocator.h>
+#include <__type_traits/conditional.h>
#include <__utility/move.h>
#include <__utility/unreachable.h>
#include <charconv>
#include <__format/unicode.h>
#include <__iterator/concepts.h>
#include <__iterator/readable_traits.h> // iter_value_t
+#include <__type_traits/common_type.h>
+#include <__type_traits/is_trivially_copyable.h>
#include <__variant/monostate.h>
#include <cstdint>
#include <string_view>
#include <__functional/weak_result_type.h>
#include <cstddef>
#include <tuple>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__utility/forward.h>
#include <__utility/integer_sequence.h>
#include <tuple>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__functional/invoke.h>
#include <__functional/perfect_forward.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__functional/invoke.h>
#include <__functional/perfect_forward.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/builtin_new_allocator.h>
#include <__memory/compressed_pair.h>
#include <__memory/unique_ptr.h>
+#include <__type_traits/aligned_storage.h>
+#include <__type_traits/is_trivially_copy_constructible.h>
+#include <__type_traits/is_trivially_destructible.h>
#include <__type_traits/strip_signature.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <exception>
#include <new>
#include <tuple>
-#include <type_traits>
#include <typeinfo>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#define _LIBCPP___FUNCTIONAL_IS_TRANSPARENT
#include <__config>
-#include <type_traits>
+#include <__type_traits/integral_constant.h>
+#include <__type_traits/void_t.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__functional/invoke.h>
#include <__functional/weak_result_type.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__functional/invoke.h>
#include <__functional/perfect_forward.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__utility/forward.h>
#include <__utility/move.h>
#include <tuple>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__config>
#include <__debug>
#include <__functional/hash.h>
+#include <__functional/invoke.h>
#include <__iterator/iterator_traits.h>
#include <__memory/addressof.h>
#include <__memory/allocator_traits.h>
#include <__memory/swap_allocator.h>
#include <__memory/unique_ptr.h>
#include <__type_traits/can_extract_key.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_const.h>
+#include <__type_traits/is_copy_constructible.h>
+#include <__type_traits/is_nothrow_constructible.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_pointer.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/remove_const.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/pair.h>
#include <cmath>
#include <cstring>
#include <initializer_list>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/pointer_traits.h>
#include <__memory/uninitialized_algorithms.h>
#include <__memory/unique_ptr.h>
+#include <__type_traits/add_lvalue_reference.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/conjunction.h>
+#include <__type_traits/disjunction.h>
+#include <__type_traits/is_array.h>
+#include <__type_traits/is_bounded_array.h>
+#include <__type_traits/is_move_constructible.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/is_unbounded_array.h>
+#include <__type_traits/nat.h>
+#include <__type_traits/negation.h>
+#include <__type_traits/remove_extent.h>
+#include <__type_traits/remove_reference.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/swap.h>
#include <__chrono/time_point.h>
#include <__config>
#include <__threading_support>
+#include <__type_traits/is_floating_point.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
#include <ratio>
#include <system_error>
#include <time.h>
#include <__config>
#include <cmath>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__config>
#include <__random/is_seed_sequence.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/is_convertible.h>
#include <__utility/move.h>
+#include <cstddef>
#include <iosfwd>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__config>
#include <__random/is_seed_sequence.h>
#include <__random/log2.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/is_convertible.h>
#include <__utility/move.h>
+#include <cstddef>
#include <iosfwd>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#define _LIBCPP___RANDOM_IS_SEED_SEQUENCE_H
#include <__config>
-#include <type_traits>
+#include <__type_traits/is_convertible.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/remove_cv.h>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__config>
#include <__random/is_seed_sequence.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/integral_constant.h>
+#include <__type_traits/is_unsigned.h>
#include <cstdint>
#include <iosfwd>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <cstdint>
#include <iosfwd>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__algorithm/fill.h>
#include <__algorithm/max.h>
#include <__config>
+#include <cstdint>
#include <initializer_list>
#include <vector>
#include <__algorithm/equal.h>
#include <__config>
#include <__random/is_seed_sequence.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/integral_constant.h>
+#include <__type_traits/is_convertible.h>
#include <__utility/move.h>
+#include <cstddef>
#include <cstdint>
#include <iosfwd>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <cstdint>
#include <iosfwd>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__random/is_valid.h>
#include <iosfwd>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/owning_view.h>
#include <__ranges/range_adaptor.h>
#include <__ranges/ref_view.h>
+#include <__type_traits/decay.h>
#include <__utility/auto_cast.h>
#include <__utility/declval.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/view_interface.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/construct_at.h>
#include <__utility/move.h>
#include <optional>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__iterator/iterator_traits.h>
#include <__memory/pointer_traits.h>
#include <__ranges/subrange.h>
+#include <__type_traits/decay.h>
#include <__utility/forward.h>
#include <__utility/move.h>
+#include <cstddef>
#include <span>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/size.h>
#include <__ranges/subrange.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_nothrow_constructible.h>
+#include <__type_traits/make_unsigned.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/auto_cast.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__config>
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/view_interface.h>
-#include <type_traits>
+#include <__type_traits/is_object.h>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/copyable_box.h>
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_nothrow_copy_constructible.h>
+#include <__type_traits/make_unsigned.h>
+#include <__type_traits/type_identity.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__type_traits/maybe_const.h>
#include <__utility/forward.h>
#include <optional>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__algorithm/ranges_find.h>
#include <__algorithm/ranges_mismatch.h>
+#include <__assert>
#include <__concepts/constructible.h>
#include <__concepts/convertible_to.h>
#include <__concepts/derived_from.h>
#include <__ranges/single_view.h>
#include <__ranges/subrange.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_nothrow_constructible.h>
#include <__type_traits/maybe_const.h>
+#include <__type_traits/remove_reference.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/addressof.h>
#include <__utility/forward.h>
#include <optional>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/size.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/concepts.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__iterator/readable_traits.h>
#include <__iterator/reverse_iterator.h>
#include <__ranges/access.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/remove_cvref.h>
+#include <__type_traits/remove_reference.h>
#include <__utility/auto_cast.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/size.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/is_object.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__iterator/reverse_iterator.h>
#include <__ranges/access.h>
#include <__ranges/rbegin.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/remove_cvref.h>
+#include <__type_traits/remove_reference.h>
#include <__utility/auto_cast.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/size.h>
#include <__ranges/subrange.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/copyable_box.h>
#include <__ranges/range_adaptor.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_object.h>
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
-#include <type_traits>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/size.h>
#include <__ranges/subrange.h>
#include <__ranges/view_interface.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/is_nothrow_constructible.h>
#include <__type_traits/maybe_const.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/auto_cast.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/size.h>
#include <__ranges/view_interface.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/integer_sequence.h>
#include <__utility/move.h>
#include <tuple>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/compressed_pair.h>
#include <__memory/pointer_traits.h>
#include <__memory/swap_allocator.h>
+#include <__type_traits/add_lvalue_reference.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/integral_constant.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_swappable.h>
+#include <__type_traits/is_trivially_destructible.h>
+#include <__type_traits/remove_reference.h>
#include <__utility/forward.h>
#include <__utility/move.h>
-#include <type_traits>
+#include <cstddef>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__memory/allocator_destructor.h>
#include <__memory/allocator_traits.h>
#include <__memory/unique_ptr.h>
+#include <__type_traits/add_const.h>
+#include <__type_traits/add_pointer.h>
+#include <__type_traits/aligned_storage.h>
+#include <__type_traits/alignment_of.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_function.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/remove_cv.h>
+#include <__type_traits/remove_cvref.h>
+#include <__type_traits/remove_reference.h>
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
#include <__utility/unreachable.h>
#include <cstdlib>
#include <initializer_list>
-#include <type_traits>
#include <typeinfo>
#include <version>
# include <iosfwd>
# include <iterator>
# include <memory>
+# include <type_traits>
# include <variant>
#endif
#include <__config>
#include <__iterator/reverse_iterator.h>
#include <__tuple_dir/sfinae_helpers.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_array.h>
+#include <__type_traits/is_const.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_move_constructible.h>
+#include <__type_traits/is_nothrow_constructible.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_swappable.h>
+#include <__type_traits/remove_cv.h>
#include <__utility/integer_sequence.h>
#include <__utility/move.h>
#include <__utility/unreachable.h>
#include <stdexcept>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <algorithm>
# include <concepts>
# include <iterator>
+# include <type_traits>
# include <utility>
#endif
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
+# include <type_traits>
#endif
#endif // _LIBCPP_BITSET
#include <__debug>
#include <__errc>
#include <__memory/addressof.h>
+#include <__type_traits/is_unsigned.h>
#include <__type_traits/make_32_64_or_128_bit.h>
+#include <__type_traits/make_unsigned.h>
#include <__utility/unreachable.h>
#include <cmath> // for log2f
#include <cstdint>
#include <cstdlib>
#include <limits>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
# include <concepts>
# include <cstring>
# include <iosfwd>
+# include <type_traits>
#endif
#endif // _LIBCPP_CHARCONV
#include <cmath>
#include <iosfwd>
#include <stdexcept>
-#include <type_traits>
#include <version>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
_LIBCPP_END_NAMESPACE_STD
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // _LIBCPP_COMPLEX
#include <__memory_resource/polymorphic_allocator.h>
#include <__split_buffer>
#include <__type_traits/is_allocator.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/type_identity.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/swap.h>
#include <limits>
#include <stdexcept>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <functional>
# include <iosfwd>
# include <iterator>
+# include <type_traits>
# include <typeinfo>
#endif
#include <__memory/allocator_arg_t.h>
#include <__memory/uses_allocator.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_convertible.h>
+#include <__type_traits/is_same.h>
#include <experimental/__config>
#include <experimental/utility> // for erased_type
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#include <__assert> // all public C++ headers provide the assertion handler
#include <__memory/allocator_traits.h>
+#include <__type_traits/aligned_storage.h>
#include <__utility/move.h>
#include <cstddef>
#include <cstdlib>
#include <new>
#include <stdexcept>
#include <tuple>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
# include <iterator>
# include <memory>
# include <ratio>
+# include <type_traits>
# include <variant>
#endif
#include <__assert> // all public C++ headers provide the assertion handler
#include <__functional/operations.h>
#include <__fwd/hash.h>
+#include <__type_traits/conditional.h>
+#include <__type_traits/decay.h>
+#include <__type_traits/enable_if.h>
+#include <__type_traits/is_array.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_convertible.h>
+#include <__type_traits/is_function.h>
+#include <__type_traits/is_pointer.h>
+#include <__type_traits/is_reference.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_swappable.h>
+#include <__type_traits/remove_cv.h>
+#include <__type_traits/remove_pointer.h>
+#include <__type_traits/remove_reference.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/swap.h>
+#include <cstddef>
#include <experimental/__config>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
_LIBCPP_END_NAMESPACE_STD
#endif // _LIBCPP_STD_VER >= 14
+
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // _LIBCPP_EXPERIMENTAL_PROPAGATE_CONST
#include <ext/__hash>
#include <functional>
#include <stdexcept>
-#include <type_traits>
#if defined(__DEPRECATED) && __DEPRECATED
#if defined(_LIBCPP_WARNING)
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_HASH_MAP
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_HASH_SET
#include <__memory/swap_allocator.h>
#include <__memory/unique_ptr.h>
#include <__memory_resource/polymorphic_allocator.h>
+#include <__type_traits/conditional.h>
#include <__type_traits/is_allocator.h>
+#include <__type_traits/is_const.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_pointer.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/type_identity.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <limits>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <functional>
# include <iosfwd>
# include <iterator>
+# include <type_traits>
# include <typeinfo>
#endif
#include <__utility/forward.h>
#include <exception>
#include <memory> // TODO: find out why removing this breaks the modules build
-#include <type_traits>
#include <typeinfo>
#include <version>
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <tuple>
+# include <type_traits>
# include <utility>
#endif
#include <__config>
#include <__memory/allocator_arg_t.h>
#include <__memory/allocator_destructor.h>
+#include <__memory/shared_ptr.h>
+#include <__memory/unique_ptr.h>
#include <__memory/uses_allocator.h>
+#include <__type_traits/aligned_storage.h>
+#include <__type_traits/alignment_of.h>
#include <__type_traits/strip_signature.h>
#include <__utility/auto_cast.h>
#include <__utility/forward.h>
#include <__assert> // all public C++ headers provide the assertion handler
#include <__config>
#include <__iterator/istreambuf_iterator.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <ostream>
#include <version>
#include <__memory/swap_allocator.h>
#include <__memory/unique_ptr.h>
#include <__memory_resource/polymorphic_allocator.h>
+#include <__type_traits/conditional.h>
#include <__type_traits/is_allocator.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_nothrow_move_constructible.h>
+#include <__type_traits/is_pointer.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/type_identity.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <__utility/swap.h>
#include <cstring>
#include <limits>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <functional>
# include <iosfwd>
# include <iterator>
+# include <type_traits>
# include <typeinfo>
#endif
#include <__iterator/ostreambuf_iterator.h>
#include <__locale>
#include <__memory/unique_ptr.h>
+#include <__type_traits/make_unsigned.h>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <__utility/piecewise_construct.h>
#include <__utility/swap.h>
#include <tuple>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <concepts>
# include <functional>
# include <iterator>
+# include <type_traits>
# include <utility>
#endif
#include <__functional/unary_function.h>
#include <__memory/construct_at.h>
#include <__tuple_dir/sfinae_helpers.h>
+#include <__type_traits/is_trivially_copy_assignable.h>
+#include <__type_traits/is_trivially_copy_constructible.h>
+#include <__type_traits/is_trivially_destructible.h>
+#include <__type_traits/is_trivially_move_assignable.h>
+#include <__type_traits/is_trivially_move_constructible.h>
+#include <__type_traits/negation.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
#include <initializer_list>
#include <new>
#include <stdexcept>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <memory>
# include <ratio>
# include <tuple>
+# include <type_traits>
# include <typeinfo>
# include <utility>
# include <variant>
#include <__config>
#include <__memory/shared_ptr.h>
#include <__memory/unique_ptr.h>
+#include <__type_traits/conjunction.h>
+#include <__type_traits/void_t.h>
+#include <__utility/declval.h>
#include <bitset>
#include <ios>
#include <locale>
#include <__memory/uses_allocator.h>
#include <__utility/forward.h>
#include <deque>
-#include <type_traits>
#include <vector>
#include <version>
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <functional>
+# include <type_traits>
#endif
#endif // _LIBCPP_QUEUE
#include <__ranges/view_interface.h>
#include <__ranges/views.h>
#include <__ranges/zip_view.h>
-#include <type_traits>
#include <version>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
# pragma GCC system_header
#endif
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // _LIBCPP_RANGES
# include <concepts>
# include <functional>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_SET
#include <__ranges/enable_borrowed_range.h>
#include <__ranges/enable_view.h>
#include <__ranges/size.h>
+#include <__type_traits/remove_cvref.h>
+#include <__type_traits/remove_reference.h>
+#include <__type_traits/type_identity.h>
#include <__utility/forward.h>
#include <array> // for array
#include <cstddef> // for byte
#include <limits>
-#include <type_traits> // for remove_cv, etc
#include <version>
// standard-mandated includes
# include <concepts>
# include <functional>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_SPAN
#include <__config>
#include <__iterator/iterator_traits.h>
#include <__memory/uses_allocator.h>
+#include <__type_traits/is_same.h>
#include <__utility/forward.h>
#include <deque>
-#include <type_traits>
#include <version>
// standard-mandated includes
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <concepts>
# include <functional>
+# include <type_traits>
#endif
#endif // _LIBCPP_STACK
#include <__string/char_traits.h>
#include <__string/extern_template_lists.h>
#include <__type_traits/is_allocator.h>
+#include <__type_traits/is_array.h>
+#include <__type_traits/is_nothrow_default_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_standard_layout.h>
+#include <__type_traits/is_trivial.h>
#include <__type_traits/noexcept_move_assign_container.h>
+#include <__type_traits/remove_cvref.h>
#include <__utility/auto_cast.h>
#include <__utility/move.h>
#include <__utility/swap.h>
#include <limits>
#include <stdexcept>
#include <string_view>
-#include <type_traits>
#include <version>
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
# include <functional>
# include <iterator>
# include <new>
+# include <type_traits>
# include <typeinfo>
# include <utility>
# include <vector>
#include <__ranges/enable_view.h>
#include <__ranges/size.h>
#include <__string/char_traits.h>
+#include <__type_traits/is_array.h>
+#include <__type_traits/is_same.h>
+#include <__type_traits/is_standard_layout.h>
+#include <__type_traits/is_trivial.h>
+#include <__type_traits/remove_cvref.h>
+#include <__type_traits/remove_reference.h>
+#include <__type_traits/type_identity.h>
#include <iosfwd>
#include <limits>
#include <stdexcept>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <concepts>
# include <functional>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_STRING_VIEW
#include <__memory/addressof.h>
#include <stdexcept>
#include <string>
-#include <type_traits>
#include <version>
// standard-mandated includes
_LIBCPP_END_NAMESPACE_STD
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // _LIBCPP_SYSTEM_ERROR
#include <iosfwd>
#include <system_error>
#include <tuple>
-#include <type_traits>
#include <version>
// standard-mandated includes
#include <cstdint>
#include <cstdlib>
#include <exception>
-#include <type_traits>
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
}
_LIBCPP_END_NAMESPACE_STD
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
+# include <type_traits>
+#endif
+
#endif // __LIBCPP_TYPEINFO
# include <bit>
# include <concepts>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_UNORDERED_MAP
# include <concepts>
# include <functional>
# include <iterator>
+# include <type_traits>
#endif
#endif // _LIBCPP_UNORDERED_SET
#include <__type_traits/remove_const.h>
#include <__type_traits/type_identity.h>
#include <__type_traits/void_t.h>
+#include <__utility/declval.h>
#include <__utility/forward.h>
#include <__utility/in_place.h>
#include <__utility/move.h>
#include <__memory_resource/polymorphic_allocator.h>
#include <__split_buffer>
#include <__type_traits/is_allocator.h>
+#include <__type_traits/is_constructible.h>
+#include <__type_traits/is_nothrow_move_assignable.h>
#include <__type_traits/noexcept_move_assign_container.h>
+#include <__type_traits/type_identity.h>
#include <__utility/exception_guard.h>
#include <__utility/forward.h>
#include <__utility/move.h>
#include <iosfwd> // for forward declaration of vector
#include <limits>
#include <stdexcept>
-#include <type_traits>
#include <version>
// standard-mandated includes
# include <algorithm>
# include <atomic>
# include <concepts>
+# include <type_traits>
# include <typeinfo>
# include <utility>
#endif
// UNSUPPORTED: c++03
-#include <vector>
#include <cassert>
-
-#include "test_macros.h"
+#include <type_traits>
+#include <vector>
template <class T>
using IsTrivialForCall = std::integral_constant<bool,
// REQUIRES: -faligned-allocation
// ADDITIONAL_COMPILE_FLAGS: -faligned-allocation
+#include <cassert>
#include <new>
-#include <typeinfo>
#include <string>
-#include <cassert>
+#include <type_traits>
+#include <typeinfo>
#include "test_macros.h"
// UNSUPPORTED: !c++experimental
#include <ranges>
+#include <utility>
#include <vector>
using JoinView = decltype(std::views::join(std::declval<std::vector<std::vector<int>>&>()));
functional utility
functional vector
functional version
+future atomic
future chrono
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
future type_traits
+future typeinfo
future version
initializer_list cstddef
iomanip istream
functional utility
functional vector
functional version
+future atomic
future chrono
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
future type_traits
+future typeinfo
future version
initializer_list cstddef
iomanip istream
functional utility
functional vector
functional version
+future atomic
future chrono
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
future type_traits
+future typeinfo
future version
initializer_list cstddef
iomanip istream
functional utility
functional vector
functional version
+future atomic
future chrono
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
future type_traits
+future typeinfo
future version
initializer_list cstddef
iomanip istream
functional utility
functional vector
functional version
+future atomic
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
future type_traits
+future typeinfo
future version
initializer_list cstddef
iomanip istream
any limits
any new
any stdexcept
-any type_traits
any typeinfo
any version
array compare
array initializer_list
array limits
array stdexcept
-array type_traits
array version
atomic cstddef
atomic cstdint
bitset new
bitset stdexcept
bitset string
-bitset type_traits
bitset version
ccomplex complex
charconv cerrno
charconv cstdlib
charconv initializer_list
charconv limits
-charconv type_traits
chrono array
chrono charconv
chrono cmath
chrono string
chrono string_view
chrono tuple
-chrono type_traits
chrono vector
chrono version
cinttypes cstdint
complex iosfwd
complex sstream
complex stdexcept
-complex type_traits
complex version
concepts cstddef
concepts version
deque new
deque stdexcept
deque tuple
-deque type_traits
deque version
exception cstddef
exception cstdlib
experimental/memory_resource new
experimental/memory_resource stdexcept
experimental/memory_resource tuple
-experimental/memory_resource type_traits
experimental/propagate_const cstddef
-experimental/propagate_const type_traits
experimental/regex experimental/memory_resource
experimental/regex experimental/string
experimental/regex regex
ext/hash_map new
ext/hash_map stdexcept
ext/hash_map string
-ext/hash_map type_traits
ext/hash_set algorithm
ext/hash_set cmath
ext/hash_set cstddef
ext/hash_set limits
ext/hash_set new
ext/hash_set string
-ext/hash_set type_traits
filesystem cerrno
filesystem compare
filesystem cstddef
filesystem string
filesystem string_view
filesystem system_error
-filesystem type_traits
filesystem version
format array
format charconv
forward_list new
forward_list stdexcept
forward_list tuple
-forward_list type_traits
forward_list version
fstream cctype
fstream cstddef
functional new
functional stdexcept
functional tuple
-functional type_traits
functional typeinfo
functional unordered_map
functional vector
functional version
+future atomic
future cstddef
+future cstdint
+future cstdlib
+future cstring
future exception
+future initializer_list
+future iosfwd
future limits
future mutex
future new
future ratio
+future stdexcept
future system_error
future thread
+future typeinfo
future version
initializer_list cstddef
iomanip istream
list new
list stdexcept
list tuple
-list type_traits
list version
locale cctype
locale cstddef
map optional
map stdexcept
map tuple
-map type_traits
map version
memory atomic
memory compare
optional limits
optional new
optional stdexcept
-optional type_traits
optional version
ostream atomic
ostream bitset
queue deque
queue initializer_list
queue limits
-queue type_traits
queue vector
queue version
random cmath
random limits
random numeric
random string
-random type_traits
random vector
random version
ranges compare
ranges optional
ranges span
ranges tuple
-ranges type_traits
ranges variant
ranges version
ratio climits
set optional
set stdexcept
set tuple
-set type_traits
set version
shared_mutex cstddef
shared_mutex ctime
span cstddef
span initializer_list
span limits
-span type_traits
span version
sstream cstddef
sstream istream
stack cstddef
stack deque
stack initializer_list
-stack type_traits
stack version
stdexcept cstdlib
stdexcept exception
string stdexcept
string string_view
string tuple
-string type_traits
string version
string_view compare
string_view cstddef
string_view iosfwd
string_view limits
string_view stdexcept
-string_view type_traits
string_view version
strstream istream
strstream ostream
system_error limits
system_error stdexcept
system_error string
-system_error type_traits
system_error version
thread compare
thread cstddef
thread ratio
thread system_error
thread tuple
-thread type_traits
thread version
tuple compare
tuple cstddef
typeinfo cstdint
typeinfo cstdlib
typeinfo exception
-typeinfo type_traits
unordered_map cmath
unordered_map compare
unordered_map cstddef
unordered_map optional
unordered_map stdexcept
unordered_map tuple
-unordered_map type_traits
unordered_map version
unordered_set cmath
unordered_set compare
unordered_set optional
unordered_set stdexcept
unordered_set tuple
-unordered_set type_traits
unordered_set version
utility compare
utility cstddef
vector new
vector stdexcept
vector tuple
-vector type_traits
vector version
#include <array>
#include <cassert>
+#include <utility>
#include "test_macros.h"
// -> common_type_t<ptrdiff_t, make_signed_t<decltype(c.size())>>; // C++20
// template <class T, ptrdiff_t> constexpr ptrdiff_t ssize(const T (&array)[N]) noexcept; // C++20
-#include <iterator>
-#include <cassert>
-#include <vector>
#include <array>
-#include <list>
+#include <cassert>
+#include <cstdint>
#include <initializer_list>
-#include <string_view>
+#include <iterator>
#include <limits>
+#include <list>
+#include <string_view>
+#include <type_traits>
+#include <vector>
#include "test_macros.h"
// template<class I>
// unspecified iter_move;
-#include <iterator>
-
-#include <array>
#include <algorithm>
+#include <array>
#include <cassert>
+#include <iterator>
+#include <type_traits>
#include <utility>
#include "../unqualified_lookup_wrapper.h"
// C++17 says: If is_trivially_default_constructible_v<T> is true, then this
// constructor is a constexpr constructor.
-#include <iterator>
#include <cassert>
+#include <iterator>
#include <string>
+#include <type_traits>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
-#include <random>
+#include <cassert>
+#include <cstdint>
#include <numeric>
+#include <random>
+#include <type_traits>
#include <vector>
-#include <cassert>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
-#include <random>
+#include <cassert>
+#include <cstdint>
#include <numeric>
+#include <random>
#include <vector>
-#include <cassert>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
-#include <random>
-
#include <cassert>
#include <cmath>
+#include <cstdint>
#include <limits>
-#include <vector>
#include <numeric>
+#include <random>
+#include <vector>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
+#include <cassert>
+#include <cstdint>
#include <random>
#include <vector>
-#include <cassert>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
-#include <random>
#include <cassert>
#include <climits>
#include <cstddef>
+#include <cstdint>
#include <limits>
#include <numeric>
+#include <random>
#include <vector>
#include "test_macros.h"
// template<class _URNG> result_type operator()(_URNG& g);
-#include <random>
#include <cassert>
+#include <cstdint>
#include <limits>
+#include <random>
#include "test_macros.h"
#include <cassert>
#include <ranges>
+#include <type_traits>
#include <vector>
struct DefaultConstructibleView : std::ranges::view_base {
// take_view() requires default_initializable<V> = default;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
int buff[8] = {1, 2, 3, 4, 5, 6, 7, 8};
// constexpr explicit iota_view(W value);
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "types.h"
// constexpr explicit iterator(W value);
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// constexpr iterator& operator--() requires decrementable<W>;
// constexpr iterator operator--(int) requires decrementable<W>;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// constexpr void operator++(int);
// constexpr iterator operator++(int) requires incrementable<W>;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
#include <cassert>
#include <cstdint>
#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
#include <cassert>
#include <cstdint>
#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// constexpr iterator& operator-=(difference_type n)
// requires advanceable<W>;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// friend constexpr iterator operator+(difference_type n, iterator i)
// requires advanceable<W>;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// constexpr iterator& operator+=(difference_type n)
// requires advanceable<W>;
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// constexpr explicit sentinel(Bound bound);
-#include <ranges>
#include <cassert>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "../types.h"
// views::iota
-#include <ranges>
#include <cassert>
#include <concepts>
+#include <ranges>
+#include <type_traits>
#include "test_macros.h"
#include "types.h"
// UNSUPPORTED: c++03, c++11
#include <string>
+#include <utility>
#include "test_macros.h"
// operator<<(basic_ostream<charT, traits>& os,
// const basic_string_view<charT,traits> str);
-#include <string_view>
#include <iosfwd>
+#include <string_view>
+#include <utility>
template <class SV, class = void>
struct HasDecl : std::false_type {};
// general = fixed | scientific
// };
-#include <charconv>
#include <cassert>
+#include <charconv>
+#include <type_traits>
#include "test_macros.h"
// bitset(string, pos, n, zero, one); // constexpr since C++23
-#include <bitset>
#include <algorithm> // for 'min' and 'max'
+#include <bitset>
#include <cassert>
#include <stdexcept> // for 'invalid_argument'
#include <string>
+#include <type_traits>
#include "test_macros.h"
#include <cstdio> // for printf
#include <string>
#include <system_error>
+#include <type_traits>
#include <vector>
#include "assert_macros.h"
#include <cstring>
#include <limits>
#include <new>
+#include <type_traits>
#include <utility>
DEMANGLE_NAMESPACE_BEGIN