// -*- C++ -*- [std.modules] module std

// Copyright The GNU Toolchain Authors.
//
// This file is part of the GNU ISO C++ Library.  This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3.

// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.

// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

module;

#include <bits/stdc++.h>

// stdc++.h doesn't include <execution> because of TBB issues;
// FIXME for now let's avoid the problem by suppressing TBB.
#ifdef _PSTL_PAR_BACKEND_TBB
#undef _PSTL_PAR_BACKEND_TBB
#define _PSTL_PAR_BACKEND_SERIAL
#endif
#include <execution>

// Module std does include deprecated library interfaces.
#undef __DEPRECATED
#include <strstream>

export module std;

// C library exports are appended from std-clib.cc.in.

// 27.4 <algorithm>
export namespace std
{
  namespace ranges
  {
    using std::ranges::in_found_result;
    using std::ranges::in_fun_result;
    using std::ranges::in_in_out_result;
    using std::ranges::in_in_result;
    using std::ranges::in_out_out_result;
    using std::ranges::in_out_result;
    using std::ranges::min_max_result;
  }
  using std::all_of;
  namespace ranges
  {
    using std::ranges::all_of;
  }
  using std::any_of;
  namespace ranges
  {
    using std::ranges::any_of;
  }
  using std::none_of;
  namespace ranges
  {
    using std::ranges::none_of;
  }
  using std::for_each;
  namespace ranges
  {
    using std::ranges::for_each;
    using std::ranges::for_each_result;
  }
  using std::for_each_n;
  namespace ranges
  {
    using std::ranges::for_each_n;
    using std::ranges::for_each_n_result;
  }
  using std::find;
  using std::find_if;
  using std::find_if_not;
  namespace ranges
  {
    using std::ranges::find;
    using std::ranges::find_if;
    using std::ranges::find_if_not;
  }
  using std::find_end;
  namespace ranges
  {
    using std::ranges::find_end;
  }
  using std::find_first_of;
  namespace ranges
  {
    using std::ranges::find_first_of;
  }
  using std::adjacent_find;
  namespace ranges
  {
    using std::ranges::adjacent_find;
  }
  using std::count;
  using std::count_if;
  namespace ranges
  {
    using std::ranges::count;
    using std::ranges::count_if;
  }
  using std::mismatch;
  namespace ranges
  {
    using std::ranges::mismatch;
    using std::ranges::mismatch_result;
  }
  using std::equal;
  namespace ranges
  {
    using std::ranges::equal;
  }
  using std::is_permutation;
  namespace ranges
  {
    using std::ranges::is_permutation;
  }
  using std::search;
  namespace ranges
  {
    using std::ranges::search;
  }
  using std::search_n;
  namespace ranges
  {
    using std::ranges::search_n;
  }
  namespace ranges
  {}
  using std::copy;
  namespace ranges
  {
    using std::ranges::copy;
    using std::ranges::copy_result;
  }
  using std::copy_n;
  namespace ranges
  {
    using std::ranges::copy_n;
    using std::ranges::copy_n_result;
  }
  using std::copy_if;
  namespace ranges
  {
    using std::ranges::copy_if;
    using std::ranges::copy_if_result;
  }
  using std::copy_backward;
  namespace ranges
  {
    using std::ranges::copy_backward;
    using std::ranges::copy_backward_result;
  }
  using std::move;
  namespace ranges
  {
    using std::ranges::move;
    using std::ranges::move_result;
  }
  using std::move_backward;
  namespace ranges
  {
    using std::ranges::move_backward;
    using std::ranges::move_backward_result;
  }
  using std::swap_ranges;
  namespace ranges
  {
    using std::ranges::swap_ranges;
    using std::ranges::swap_ranges_result;
  }
  using std::iter_swap;
  using std::transform;
  namespace ranges
  {
    using std::ranges::binary_transform_result;
    using std::ranges::transform;
    using std::ranges::unary_transform_result;
  }
  using std::replace;
  using std::replace_if;
  namespace ranges
  {
    using std::ranges::replace;
    using std::ranges::replace_if;
  }
  using std::replace_copy;
  using std::replace_copy_if;
  namespace ranges
  {
    using std::ranges::replace_copy;
    using std::ranges::replace_copy_if;
    using std::ranges::replace_copy_if_result;
    using std::ranges::replace_copy_result;
  }
  using std::fill;
  using std::fill_n;
  namespace ranges
  {
    using std::ranges::fill;
    using std::ranges::fill_n;
  }
  using std::generate;
  using std::generate_n;
  namespace ranges
  {
    using std::ranges::generate;
    using std::ranges::generate_n;
  }
  using std::remove;
  using std::remove_if;
  namespace ranges
  {
    using std::ranges::remove;
    using std::ranges::remove_if;
  }
  using std::remove_copy;
  using std::remove_copy_if;
  namespace ranges
  {
    using std::ranges::remove_copy;
    using std::ranges::remove_copy_if;
    using std::ranges::remove_copy_if_result;
    using std::ranges::remove_copy_result;
  }
  using std::unique;
  namespace ranges
  {
    using std::ranges::unique;
  }
  using std::unique_copy;
  namespace ranges
  {
    using std::ranges::unique_copy;
    using std::ranges::unique_copy_result;
  }
  using std::reverse;
  namespace ranges
  {
    using std::ranges::reverse;
  }
  using std::reverse_copy;
  namespace ranges
  {
    using std::ranges::reverse_copy;
    using std::ranges::reverse_copy_result;
  }
  using std::rotate;
  namespace ranges
  {
    using std::ranges::rotate;
  }
  using std::rotate_copy;
  namespace ranges
  {
    using std::ranges::rotate_copy;
    using std::ranges::rotate_copy_result;
  }
  using std::sample;
  namespace ranges
  {
    using std::ranges::sample;
  }
  using std::shuffle;
  namespace ranges
  {
    using std::ranges::shuffle;
  }
  using std::shift_left;
  using std::shift_right;
#if __cpp_lib_shift >= 202202L // >= C++23
  namespace ranges
  {
    using std::ranges::shift_left;
    using std::ranges::shift_right;
  }
#endif
  using std::sort;
  namespace ranges
  {
    using std::ranges::sort;
  }
  using std::stable_sort;
  namespace ranges
  {
    using std::ranges::stable_sort;
  }
  using std::partial_sort;
  namespace ranges
  {
    using std::ranges::partial_sort;
  }
  using std::partial_sort_copy;
  namespace ranges
  {
    using std::ranges::partial_sort_copy;
    using std::ranges::partial_sort_copy_result;
  }
  using std::is_sorted;
  using std::is_sorted_until;
  namespace ranges
  {
    using std::ranges::is_sorted;
    using std::ranges::is_sorted_until;
  }
  using std::nth_element;
  namespace ranges
  {
    using std::ranges::nth_element;
  }
  using std::lower_bound;
  namespace ranges
  {
    using std::ranges::lower_bound;
  }
  using std::upper_bound;
  namespace ranges
  {
    using std::ranges::upper_bound;
  }
  using std::equal_range;
  namespace ranges
  {
    using std::ranges::equal_range;
  }
  using std::binary_search;
  namespace ranges
  {
    using std::ranges::binary_search;
  }
  using std::is_partitioned;
  namespace ranges
  {
    using std::ranges::is_partitioned;
  }
  using std::partition;
  namespace ranges
  {
    using std::ranges::partition;
  }
  using std::stable_partition;
  namespace ranges
  {
    using std::ranges::stable_partition;
  }
  using std::partition_copy;
  namespace ranges
  {
    using std::ranges::partition_copy;
    using std::ranges::partition_copy_result;
  }
  using std::partition_point;
  namespace ranges
  {
    using std::ranges::partition_point;
  }
  using std::merge;
  namespace ranges
  {
    using std::ranges::merge;
    using std::ranges::merge_result;
  }
  using std::inplace_merge;
  namespace ranges
  {
    using std::ranges::inplace_merge;
  }
  using std::includes;
  namespace ranges
  {
    using std::ranges::includes;
  }
  using std::set_union;
  namespace ranges
  {
    using std::ranges::set_union;
    using std::ranges::set_union_result;
  }
  using std::set_intersection;
  namespace ranges
  {
    using std::ranges::set_intersection;
    using std::ranges::set_intersection_result;
  }
  using std::set_difference;
  namespace ranges
  {
    using std::ranges::set_difference;
    using std::ranges::set_difference_result;
  }
  using std::set_symmetric_difference;
  namespace ranges
  {
    using std::ranges::set_symmetric_difference;
    using std::ranges::set_symmetric_difference_result;
  }
  using std::push_heap;
  namespace ranges
  {
    using std::ranges::push_heap;
  }
  using std::pop_heap;
  namespace ranges
  {
    using std::ranges::pop_heap;
  }
  using std::make_heap;
  namespace ranges
  {
    using std::ranges::make_heap;
  }
  using std::sort_heap;
  namespace ranges
  {
    using std::ranges::sort_heap;
  }
  using std::is_heap;
  namespace ranges
  {
    using std::ranges::is_heap;
  }
  using std::is_heap_until;
  namespace ranges
  {
    using std::ranges::is_heap_until;
  }
  using std::min;
  namespace ranges
  {
    using std::ranges::min;
  }
  using std::max;
  namespace ranges
  {
    using std::ranges::max;
  }
  using std::minmax;
  namespace ranges
  {
    using std::ranges::minmax;
    using std::ranges::minmax_result;
  }
  using std::min_element;
  namespace ranges
  {
    using std::ranges::min_element;
  }
  using std::max_element;
  namespace ranges
  {
    using std::ranges::max_element;
  }
  using std::minmax_element;
  namespace ranges
  {
    using std::ranges::minmax_element;
    using std::ranges::minmax_element_result;
  }
  using std::clamp;
  namespace ranges
  {
    using std::ranges::clamp;
  }
  using std::lexicographical_compare;
  namespace ranges
  {
    using std::ranges::lexicographical_compare;
  }
  using std::lexicographical_compare_three_way;
  using std::next_permutation;
  namespace ranges
  {
    using std::ranges::next_permutation;
    using std::ranges::next_permutation_result;
  }
  using std::prev_permutation;
  namespace ranges
  {
    using std::ranges::prev_permutation;
    using std::ranges::prev_permutation_result;
  }
  namespace ranges
  {
#if __cpp_lib_ranges_contains
    using ranges::contains;
    using ranges::contains_subrange;
#endif
#if __cpp_lib_ranges_fold
    using ranges::fold_left;
    using ranges::fold_left_first;
    using ranges::fold_left_first_with_iter;
    using ranges::fold_left_first_with_iter_result;
    using ranges::fold_left_with_iter;
    using ranges::fold_left_with_iter_result;
    using ranges::fold_right;
    using ranges::fold_right_last;
    using ranges::in_value_result;
    using ranges::out_value_result;
#endif
#if __cpp_lib_ranges_find_last
    using ranges::find_last;
    using ranges::find_last_if;
    using ranges::find_last_if_not;
#endif
#if __cpp_lib_ranges_starts_ends_with
    using ranges::starts_with;
    using ranges::ends_with;
#endif
  }
}

// 22.7.2 <any>
export namespace std
{
  using std::any;
  using std::any_cast;
  using std::bad_any_cast;
  using std::make_any;
  using std::swap;
}

// 24.3.2 <array>
export namespace std
{
  using std::array;
  using std::operator==;
  using std::operator<=>;
  using std::get;
  using std::swap;
  using std::to_array;
  using std::tuple_element;
  using std::tuple_size;
}

// 33.5.2 <atomic>
export namespace std
{
  using std::atomic;
  using std::atomic_bool;
  using std::atomic_char;
  using std::atomic_char16_t;
  using std::atomic_char32_t;
  using std::atomic_char8_t;
  using std::atomic_compare_exchange_strong;
  using std::atomic_compare_exchange_strong_explicit;
  using std::atomic_compare_exchange_weak;
  using std::atomic_compare_exchange_weak_explicit;
  using std::atomic_exchange;
  using std::atomic_exchange_explicit;
  using std::atomic_fetch_add;
  using std::atomic_fetch_add_explicit;
  using std::atomic_fetch_and;
  using std::atomic_fetch_and_explicit;
  using std::atomic_fetch_or;
  using std::atomic_fetch_or_explicit;
  using std::atomic_fetch_sub;
  using std::atomic_fetch_sub_explicit;
  using std::atomic_fetch_xor;
  using std::atomic_fetch_xor_explicit;
#ifdef __cpp_lib_atomic_min_max
  using std::atomic_fetch_min;
  using std::atomic_fetch_min_explicit;
  using std::atomic_fetch_max;
  using std::atomic_fetch_max_explicit;
#endif
  using std::atomic_flag;
  using std::atomic_flag_clear;
  using std::atomic_flag_clear_explicit;
#if __cpp_lib_atomic_wait
  using std::atomic_flag_notify_all;
  using std::atomic_flag_notify_one;
#endif
#if __cpp_lib_atomic_flag_test
  using std::atomic_flag_test;
  using std::atomic_flag_test_and_set;
  using std::atomic_flag_test_and_set_explicit;
  using std::atomic_flag_test_explicit;
#endif
#if __cpp_lib_atomic_wait
  using std::atomic_flag_wait;
  using std::atomic_flag_wait_explicit;
#endif
  using std::atomic_init;
  using std::atomic_int;
  using std::atomic_int16_t;
  using std::atomic_int32_t;
  using std::atomic_int64_t;
  using std::atomic_int8_t;
  using std::atomic_int_fast16_t;
  using std::atomic_int_fast32_t;
  using std::atomic_int_fast64_t;
  using std::atomic_int_fast8_t;
  using std::atomic_int_least16_t;
  using std::atomic_int_least32_t;
  using std::atomic_int_least64_t;
  using std::atomic_int_least8_t;
  using std::atomic_intmax_t;
  using std::atomic_intptr_t;
  using std::atomic_is_lock_free;
  using std::atomic_llong;
  using std::atomic_load;
  using std::atomic_load_explicit;
  using std::atomic_long;
#if __cpp_lib_atomic_wait
  using std::atomic_notify_all;
  using std::atomic_notify_one;
#endif
  using std::atomic_ptrdiff_t;
  using std::atomic_ref;
  using std::atomic_schar;
  using std::atomic_short;
  using std::atomic_signal_fence;
#ifdef __cpp_lib_atomic_lock_free_type_aliases
  using std::atomic_signed_lock_free;
#endif
  using std::atomic_size_t;
  using std::atomic_store;
  using std::atomic_store_explicit;
  using std::atomic_thread_fence;
  using std::atomic_uchar;
  using std::atomic_uint;
  using std::atomic_uint16_t;
  using std::atomic_uint32_t;
  using std::atomic_uint64_t;
  using std::atomic_uint8_t;
  using std::atomic_uint_fast16_t;
  using std::atomic_uint_fast32_t;
  using std::atomic_uint_fast64_t;
  using std::atomic_uint_fast8_t;
  using std::atomic_uint_least16_t;
  using std::atomic_uint_least32_t;
  using std::atomic_uint_least64_t;
  using std::atomic_uint_least8_t;
  using std::atomic_uintmax_t;
  using std::atomic_uintptr_t;
  using std::atomic_ullong;
  using std::atomic_ulong;
#ifdef __cpp_lib_atomic_lock_free_type_aliases
  using std::atomic_unsigned_lock_free;
#endif
  using std::atomic_ushort;
#if __cpp_lib_atomic_wait
  using std::atomic_wait;
  using std::atomic_wait_explicit;
#endif
  using std::atomic_wchar_t;
  using std::kill_dependency;
  using std::memory_order;
  using std::memory_order_acq_rel;
  using std::memory_order_acquire;
  using std::memory_order_consume;
  using std::memory_order_relaxed;
  using std::memory_order_release;
  using std::memory_order_seq_cst;
  // ATOMIC_*_LOCK_FREE not exported
}

// 33.9.3 <barrier>
#if __cpp_lib_barrier
export namespace std
{
  using std::barrier;
}
#endif

// 22.15 <bit>
export namespace std
{
  using std::bit_cast;
  using std::bit_ceil;
  using std::bit_floor;
  using std::bit_width;
  using std::countl_one;
  using std::countl_zero;
  using std::countr_one;
  using std::countr_zero;
  using std::endian;
  using std::has_single_bit;
  using std::popcount;
  using std::rotl;
  using std::rotr;
#if __cpp_lib_byteswap // >= C++23
  using std::byteswap;
#endif
}

// 22.9 <bitset>
export namespace std
{
  using std::bitset;
  using std::operator&;
  using std::operator|;
  using std::operator^;
  using std::operator>>;
  using std::operator<<;
  using std::hash;
}

// 22.13 <charconv>
export namespace std
{
  using std::chars_format;
  using std::operator&;
  using std::operator&=;
  using std::operator^;
  using std::operator^=;
  using std::operator|;
  using std::operator|=;
  using std::operator~;
  using std::from_chars;
  using std::from_chars_result;
  using std::to_chars;
  using std::to_chars_result;
}

// 29.2 <chrono>
export namespace std
{
  namespace chrono
  {
    using std::chrono::duration;
    using std::chrono::time_point;
  }
  using std::common_type;
  namespace chrono
  {
    using std::chrono::duration_values;
    using std::chrono::treat_as_floating_point;
    using std::chrono::treat_as_floating_point_v;
    using std::chrono::operator+;
    using std::chrono::operator-;
    using std::chrono::operator*;
    using std::chrono::operator/;
    using std::chrono::operator%;
    using std::chrono::operator==;
    using std::chrono::operator<;
    using std::chrono::operator>;
    using std::chrono::operator<=;
    using std::chrono::operator>=;
    using std::chrono::operator<=>;
    using std::chrono::ceil;
    using std::chrono::duration_cast;
    using std::chrono::floor;
    using std::chrono::round;
    using std::chrono::operator<<;
    using std::chrono::abs;
    using std::chrono::day;
    using std::chrono::days;
    using std::chrono::file_clock;
    using std::chrono::file_time;
    using std::chrono::hh_mm_ss;
    using std::chrono::high_resolution_clock;
    using std::chrono::hours;
    using std::chrono::is_am;
    using std::chrono::is_pm;
    using std::chrono::last_spec;
    using std::chrono::local_days;
    using std::chrono::local_seconds;
    using std::chrono::local_t;
    using std::chrono::local_time;
    using std::chrono::make12;
    using std::chrono::make24;
    using std::chrono::microseconds;
    using std::chrono::milliseconds;
    using std::chrono::minutes;
    using std::chrono::month;
    using std::chrono::month_day;
    using std::chrono::month_day_last;
    using std::chrono::month_weekday;
    using std::chrono::month_weekday_last;
    using std::chrono::months;
    using std::chrono::nanoseconds;
    using std::chrono::seconds;
    using std::chrono::steady_clock;
    using std::chrono::sys_days;
    using std::chrono::sys_seconds;
    using std::chrono::sys_time;
    using std::chrono::system_clock;
    using std::chrono::time_point_cast;
    using std::chrono::weekday;
    using std::chrono::weekday_indexed;
    using std::chrono::weekday_last;
    using std::chrono::weeks;
    using std::chrono::year;
    using std::chrono::year_month;
    using std::chrono::year_month_day;
    using std::chrono::year_month_day_last;
    using std::chrono::year_month_weekday;
    using std::chrono::year_month_weekday_last;
    using std::chrono::years;
  }
  using std::formatter;
  namespace chrono
  {
    using std::chrono::April;
    using std::chrono::August;
    using std::chrono::December;
    using std::chrono::February;
    using std::chrono::Friday;
    using std::chrono::January;
    using std::chrono::July;
    using std::chrono::June;
    using std::chrono::last;
    using std::chrono::March;
    using std::chrono::May;
    using std::chrono::Monday;
    using std::chrono::November;
    using std::chrono::October;
    using std::chrono::Saturday;
    using std::chrono::September;
    using std::chrono::Sunday;
    using std::chrono::Thursday;
    using std::chrono::Tuesday;
    using std::chrono::Wednesday;
    using chrono::utc_clock;
    using chrono::utc_time;
    using chrono::utc_seconds;
    using chrono::tai_clock;
    using chrono::tai_time;
    using chrono::tai_seconds;
    using chrono::gps_clock;
    using chrono::gps_time;
    using chrono::gps_seconds;
    using chrono::clock_cast;
    using chrono::parse;
    using chrono::from_stream;
    using chrono::clock_time_conversion;
#if __cpp_lib_chrono >= 201907L
    using chrono::tzdb;
    using chrono::tzdb_list;
    using chrono::get_tzdb;
    using chrono::get_tzdb_list;
    using chrono::locate_zone;
    using chrono::current_zone;
    using chrono::reload_tzdb;
    using chrono::remote_version;
    using chrono::nonexistent_local_time;
    using chrono::ambiguous_local_time;
    using chrono::sys_info;
    using chrono::local_info;
    using chrono::choose;
    using chrono::time_zone;
    using chrono::zoned_traits;
    using chrono::zoned_time;
    using chrono::zoned_seconds;
    using chrono::leap_second;
    using chrono::leap_second_info;
    using chrono::get_leap_second_info;
    using chrono::time_zone_link;
    using chrono::local_time_format;
#endif
    using chrono::is_clock;
    using chrono::is_clock_v;
  }
}
export namespace std::inline literals::inline chrono_literals
{
  using std::literals::chrono_literals::operator""h;
  using std::literals::chrono_literals::operator""min;
  using std::literals::chrono_literals::operator""s;
  using std::literals::chrono_literals::operator""ms;
  using std::literals::chrono_literals::operator""us;
  using std::literals::chrono_literals::operator""ns;
  using std::literals::chrono_literals::operator""d;
  using std::literals::chrono_literals::operator""y;
}
export namespace std::chrono {
  using namespace literals::chrono_literals;
}

// <codecvt>: deprecated C++17, removed C++26
export namespace std
{
  using std::codecvt_mode;
  using std::codecvt_utf16;
  using std::codecvt_utf8;
  using std::codecvt_utf8_utf16;
}

// 17.11.1 <compare>
export namespace std
{
  using std::common_comparison_category;
  using std::common_comparison_category_t;
  using std::compare_three_way;
  using std::compare_three_way_result;
  using std::compare_three_way_result_t;
  using std::is_eq;
  using std::is_gt;
  using std::is_gteq;
  using std::is_lt;
  using std::is_lteq;
  using std::is_neq;
  using std::partial_ordering;
  using std::strong_ordering;
  using std::three_way_comparable;
  using std::three_way_comparable_with;
  using std::weak_ordering;
  using std::compare_partial_order_fallback;
  using std::compare_strong_order_fallback;
  using std::compare_weak_order_fallback;
  using std::partial_order;
  using std::strong_order;
  using std::weak_order;
#if __glibcxx_type_order >= 202506L
  using std::type_order;
  using std::type_order_v;
#endif
}

// 28.4 <complex>
export namespace std
{
  using std::complex;
  using std::operator+;
  using std::operator-;
  using std::operator*;
  using std::operator/;
  using std::operator==;
  using std::operator>>;
  using std::operator<<;
  using std::abs;
  using std::acos;
  using std::acosh;
  using std::arg;
  using std::asin;
  using std::asinh;
  using std::atan;
  using std::atanh;
  using std::conj;
  using std::cos;
  using std::cosh;
  using std::exp;
  using std::imag;
  using std::log;
  using std::log10;
  using std::norm;
  using std::polar;
  using std::pow;
  using std::proj;
  using std::real;
  using std::sin;
  using std::sinh;
  using std::sqrt;
  using std::tan;
  using std::tanh;
#if __cpp_lib_tuple_like >= 202311L
  using std::tuple_element;
  using std::tuple_element_t;
  using std::tuple_size;
  using std::tuple_size_v;
  using std::get;
#endif
}
export namespace std::inline literals::inline complex_literals
{
  using std::operator""il;
  using std::operator""i;
  using std::operator""if;
}

// 18 <concepts>
export namespace std
{
  using std::assignable_from;
  using std::common_reference_with;
  using std::common_with;
  using std::convertible_to;
  using std::derived_from;
  using std::floating_point;
  using std::integral;
  using std::same_as;
  using std::signed_integral;
  using std::unsigned_integral;
  namespace ranges
  {
    using std::ranges::swap;
  }
  using std::constructible_from;
  using std::copy_constructible;
  using std::copyable;
  using std::default_initializable;
  using std::destructible;
  using std::equality_comparable;
  using std::equality_comparable_with;
  using std::equivalence_relation;
  using std::invocable;
  using std::movable;
  using std::move_constructible;
  using std::predicate;
  using std::regular;
  using std::regular_invocable;
  using std::relation;
  using std::semiregular;
  using std::strict_weak_order;
  using std::swappable;
  using std::swappable_with;
  using std::totally_ordered;
  using std::totally_ordered_with;
}

// 33.7 <condition_variable>
#if _GLIBCXX_HAS_GTHREADS
export namespace std
{
  using std::condition_variable;
  using std::condition_variable_any;
  using std::cv_status;
  using std::notify_all_at_thread_exit;
}
#endif

// 17.10.1 <contracts>
#if __cpp_lib_contracts
export namespace std::contracts
{
  using std::contracts::assertion_kind;
  using std::contracts::evaluation_semantic;
  using std::contracts::detection_mode;
  using std::contracts::contract_violation;
  using std::contracts::invoke_default_contract_violation_handler;
}
#endif // __cpp_lib_contracts

// 17.12.2 <coroutine>
#if __cpp_lib_coroutine
export namespace std
{
  using std::coroutine_handle;
  using std::coroutine_traits;
  using std::operator==;
  using std::operator<=>;
  using std::hash;
  using std::noop_coroutine;
  using std::noop_coroutine_handle;
  using std::noop_coroutine_promise;
  using std::suspend_always;
  using std::suspend_never;
}
#endif // __cpp_lib_coroutine

// 22.16 <debugging>
#if __cpp_lib_debugging
export namespace std
{
  using std::breakpoint;
  using std::breakpoint_if_debugging;
  using std::is_debugger_present;
}
#endif

// 24.3 <deque>
export namespace std
{
  using std::deque;
  using std::operator==;
  using std::operator<=>;
  using std::erase;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::deque;
  }
}

// 17.9.2 <exception>
export namespace std
{
  using std::bad_exception;
  using std::current_exception;
  using std::exception;
  using std::exception_ptr;
  using std::get_terminate;
  using std::make_exception_ptr;
  using std::nested_exception;
  using std::rethrow_exception;
  using std::rethrow_if_nested;
  using std::set_terminate;
  using std::terminate;
  using std::terminate_handler;
  using std::throw_with_nested;
  using std::uncaught_exception;
  using std::uncaught_exceptions;
#if __cpp_lib_exception_ptr_cast >= 202506L
  using std::exception_ptr_cast;
#endif
}

// 34.4 <execution>
#if __cpp_lib_execution
export namespace std
{
  using std::is_execution_policy;
  using std::is_execution_policy_v;
  namespace execution
  {
    using std::execution::sequenced_policy;
    using std::execution::parallel_policy;
    using std::execution::parallel_unsequenced_policy;
    using std::execution::unsequenced_policy;
    using std::execution::seq;
    using std::execution::par;
    using std::execution::par_unseq;
    using std::execution::unseq;
  }
#if __cpp_lib_senders
  using std::forwarding_query_t;
  using std::get_allocator_t;
  using std::get_stop_token_t;
  using std::forwarding_query;
  using std::get_allocator;
  using std::get_stop_token;
  using std::stop_token_of_t;
  namespace execution
  {
    using std::execution::get_domain_t;
    using std::execution::get_scheduler_t;
    using std::execution::get_delegation_scheduler_t;
    using std::execution::get_forward_progress_guarantee_t;
    using std::execution::get_completion_scheduler_t;
    using std::execution::get_domain;
    using std::execution::get_scheduler;
    using std::execution::get_delegation_scheduler;
    using std::execution::forward_progress_guarantee;
    using std::execution::get_forward_progress_guarantee;
    using std::execution::get_completion_scheduler;
    using std::execution::empty_env;
    using std::execution::get_env_t;
    using std::execution::get_env;
    using std::execution::env_of_t;
    using std::execution::default_domain;
    using std::execution::scheduler_t;
    using std::execution::scheduler;
    using std::execution::receiver_t;
    using std::execution::receiver;
    using std::execution::receiver_of;
    using std::execution::set_value_t;
    using std::execution::set_error_t;
    using std::execution::set_stopped_t;
    using std::execution::set_value;
    using std::execution::set_error;
    using std::execution::set_stopped;
    using std::execution::operation_state_t;
    using std::execution::operation_state;
    using std::execution::start_t;
    using std::execution::start;
    using std::execution::sender_t;
    using std::execution::sender;
    using std::execution::sender_in;
    using std::execution::sender_to;
    using std::execution::get_completion_signatures_t;
    using std::execution::get_completion_signatures;
    using std::execution::completion_signatures_of_t;
    using std::execution::value_types_of_t;
    using std::execution::error_types_of_t;
    using std::execution::sends_stopped;
    using std::execution::tag_of_t;
    using std::execution::transform_sender;
    using std::execution::transform_env;
    using std::execution::apply_sender;
    using std::execution::connect_t;
    using std::execution::connect;
    using std::execution::connect_result_t;
    using std::execution::just_t;
    using std::execution::just_error_t;
    using std::execution::just_stopped_t;
    using std::execution::schedule_t;
    using std::execution::just;
    using std::execution::just_error;
    using std::execution::just_stopped;
    using std::execution::schedule;
    using std::execution::read_env;
    using std::execution::schedule_result_t;
    using std::execution::sender_adaptor_closure;
    using std::execution::starts_on_t;
    using std::execution::continues_on_t;
    using std::execution::on_t;
    using std::execution::schedule_from_t;
    using std::execution::then_t;
    using std::execution::upon_error_t;
    using std::execution::upon_stopped_t;
    using std::execution::let_value_t;
    using std::execution::let_error_t;
    using std::execution::let_stopped_t;
    using std::execution::bulk_t;
    using std::execution::split_t;
    using std::execution::when_all_t;
    using std::execution::when_all_with_variant_t;
    using std::execution::into_variant_t;
    using std::execution::stopped_as_optional_t;
    using std::execution::stopped_as_error_t;
    using std::execution::starts_on;
    using std::execution::continues_on;
    using std::execution::on;
    using std::execution::schedule_from;
    using std::execution::then;
    using std::execution::upon_error;
    using std::execution::upon_stopped;
    using std::execution::let_value;
    using std::execution::let_error;
    using std::execution::let_stopped;
    using std::execution::bulk;
    using std::execution::split;
    using std::execution::when_all;
    using std::execution::when_all_with_variant;
    using std::execution::into_variant;
    using std::execution::stopped_as_optional;
    using std::execution::stopped_as_error;
    using std::execution::completion_signatures;
    using std::execution::transform_completion_signatures;
    using std::execution::transform_completion_signatures_of;
    using std::execution::run_loop;
  }
  namespace this_thread
  {
    using std::this_thread::sync_wait_t;
    using std::this_thread::sync_wait_with_variant_t;
    using std::this_thread::sync_wait;
    using std::this_thread::sync_wait_with_variant;
  }
#endif // __cpp_lib_senders
}
#endif // __cpp_lib_execution

// 22.8 <expected>
#if __cpp_lib_expected
export namespace std
{
  using std::unexpected;
  using std::bad_expected_access;
  using std::unexpect_t;
  using std::unexpect;
  using std::expected;
}
#endif

// <filesystem>
#if __cpp_lib_filesystem
export namespace std::filesystem
{
  using std::filesystem::begin;
  using std::filesystem::copy_options;
  using std::filesystem::directory_entry;
  using std::filesystem::directory_iterator;
  using std::filesystem::directory_options;
  using std::filesystem::end;
  using std::filesystem::file_status;
  using std::filesystem::file_time_type;
  using std::filesystem::file_type;
  using std::filesystem::filesystem_error;
  using std::filesystem::hash_value;
  using std::filesystem::path;
  using std::filesystem::perm_options;
  using std::filesystem::perms;
  using std::filesystem::recursive_directory_iterator;
  using std::filesystem::space_info;
  using std::filesystem::swap;
  using std::filesystem::operator&;
  using std::filesystem::operator&=;
  using std::filesystem::operator^;
  using std::filesystem::operator^=;
  using std::filesystem::operator|;
  using std::filesystem::operator|=;
  using std::filesystem::operator~;
  using std::filesystem::absolute;
  using std::filesystem::canonical;
  using std::filesystem::copy;
  using std::filesystem::copy_file;
  using std::filesystem::copy_symlink;
  using std::filesystem::create_directories;
  using std::filesystem::create_directory;
  using std::filesystem::create_directory_symlink;
  using std::filesystem::create_hard_link;
  using std::filesystem::create_symlink;
  using std::filesystem::current_path;
  using std::filesystem::equivalent;
  using std::filesystem::exists;
  using std::filesystem::file_size;
  using std::filesystem::hard_link_count;
  using std::filesystem::is_block_file;
  using std::filesystem::is_character_file;
  using std::filesystem::is_directory;
  using std::filesystem::is_empty;
  using std::filesystem::is_fifo;
  using std::filesystem::is_other;
  using std::filesystem::is_regular_file;
  using std::filesystem::is_socket;
  using std::filesystem::is_symlink;
  using std::filesystem::last_write_time;
  using std::filesystem::permissions;
  using std::filesystem::proximate;
  using std::filesystem::read_symlink;
  using std::filesystem::relative;
  using std::filesystem::remove;
  using std::filesystem::remove_all;
  using std::filesystem::rename;
  using std::filesystem::resize_file;
  using std::filesystem::space;
  using std::filesystem::status;
  using std::filesystem::status_known;
  using std::filesystem::symlink_status;
  using std::filesystem::temp_directory_path;
  using std::filesystem::u8path;
  using std::filesystem::weakly_canonical;
}
#endif // __cpp_lib_filesystem

// <flat_map>
#if __cpp_lib_flat_map
export namespace std
{
  using std::flat_map;
  using std::flat_multimap;
  using std::sorted_equivalent;
  using std::sorted_equivalent_t;
  using std::sorted_unique;
  using std::sorted_unique_t;
}
#endif

// <flat_set>
#if __cpp_lib_flat_set
export namespace std
{
  using std::flat_set;
  using std::flat_multiset;
  using std::sorted_equivalent;
  using std::sorted_equivalent_t;
  using std::sorted_unique;
  using std::sorted_unique_t;
}
#endif

// <format>
export namespace std
{
  using std::basic_format_arg;
  using std::basic_format_args;
  using std::basic_format_context;
  using std::basic_format_parse_context;
  using std::basic_format_string;
  using std::format;
  using std::format_args;
  using std::format_context;
  using std::format_error;
  using std::format_parse_context;
  using std::format_string;
  using std::format_to;
  using std::format_to_n;
  using std::format_to_n_result;
  using std::formatted_size;
#if __cpp_lib_format_ranges
  using std::formattable;
#endif
  using std::formatter;
  using std::make_format_args;
  using std::make_wformat_args;
#if __cpp_lib_format >= 202311L // >= C++26
  using std::runtime_format;
#endif
  using std::vformat;
  using std::vformat_to;
  using std::visit_format_arg;
  using std::wformat_args;
  using std::wformat_context;
  using std::wformat_parse_context;
  using std::wformat_string;
#ifdef __cpp_lib_format_ranges
  using std::format_kind;
  using std::range_format;
  using std::range_formatter;
#endif
}

// <forward_list>
export namespace std
{
  using std::forward_list;
  using std::operator==;
  using std::operator<=>;
  using std::erase;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::forward_list;
  }
}

// <fstream>
export namespace std
{
  using std::basic_filebuf;
  using std::basic_fstream;
  using std::basic_ifstream;
  using std::basic_ofstream;
  using std::filebuf;
  using std::fstream;
  using std::ifstream;
  using std::ofstream;
  using std::swap;
  using std::wfilebuf;
  using std::wfstream;
  using std::wifstream;
  using std::wofstream;
}

// <functional>
export namespace std
{
  using std::bind;
  using std::bind_front;
#if __cpp_lib_bind_back
  using std::bind_back;
#endif
  using std::bit_and;
  using std::bit_not;
  using std::bit_or;
  using std::bit_xor;
  using std::compare_three_way;
  using std::cref;
  using std::divides;
  using std::equal_to;
  using std::greater;
  using std::greater_equal;
  using std::identity;
  using std::invoke;
#if __cpp_lib_invoke_r
  using std::invoke_r;
#endif
  using std::is_bind_expression;
  using std::is_bind_expression_v;
  using std::is_placeholder;
  using std::is_placeholder_v;
  using std::less;
  using std::less_equal;
  using std::logical_and;
  using std::logical_not;
  using std::logical_or;
  using std::minus;
  using std::modulus;
#if __cpp_lib_move_only_function
  using std::move_only_function;
#endif
#if __cpp_lib_copyable_function
  using std::copyable_function;
#endif
#if __cpp_lib_function_ref
  using std::function_ref;
#endif
  using std::multiplies;
  using std::negate;
  using std::not_equal_to;
  using std::not_fn;
  using std::plus;
  using std::ref;
  using std::reference_wrapper;
  namespace placeholders
  {
    using std::placeholders::_1;
    using std::placeholders::_10;
    using std::placeholders::_2;
    using std::placeholders::_3;
    using std::placeholders::_4;
    using std::placeholders::_5;
    using std::placeholders::_6;
    using std::placeholders::_7;
    using std::placeholders::_8;
    using std::placeholders::_9;
  }
  using std::bad_function_call;
  using std::function;
  using std::mem_fn;
  using std::swap;
  using std::operator==;
  using std::boyer_moore_horspool_searcher;
  using std::boyer_moore_searcher;
  using std::default_searcher;
  using std::hash;
  namespace ranges
  {
    using std::ranges::equal_to;
    using std::ranges::greater;
    using std::ranges::greater_equal;
    using std::ranges::less;
    using std::ranges::less_equal;
    using std::ranges::not_equal_to;
  }
}

// <future>
export namespace std
{
  using std::future_errc;
  using std::future_status;
  using std::launch;
  using std::operator&;
  using std::operator&=;
  using std::operator^;
  using std::operator^=;
  using std::operator|;
  using std::operator|=;
  using std::operator~;
  using std::async;
  using std::future;
  using std::future_category;
  using std::future_error;
  using std::is_error_code_enum;
  using std::make_error_code;
  using std::make_error_condition;
  using std::packaged_task;
  using std::promise;
  using std::shared_future;
  using std::swap;
  using std::uses_allocator;
}

#if __cpp_lib_generator
export namespace std
{
  using std::generator;
  namespace pmr
  {
    using pmr::generator;
  }
}
#endif

// <hazard_pointer> FIXME

// 17.10.2 <initializer_list>
export namespace std
{
  using std::begin;
  using std::end;
  using std::initializer_list;
}

// <inplace_vector>
#if __cpp_lib_inplace_vector
export namespace std
{
  using std::inplace_vector;
  using std::erase;
  using std::erase_if;
}
#endif

// <iomanip>
export namespace std
{
  using std::get_money;
  using std::get_time;
  using std::put_money;
  using std::put_time;
  using std::quoted;
  using std::resetiosflags;
  using std::setbase;
  using std::setfill;
  using std::setiosflags;
  using std::setprecision;
  using std::setw;
}

// <ios>
export namespace std
{
  using std::fpos;
  using std::operator!=;
  using std::operator-;
  using std::operator==;
  using std::basic_ios;
  using std::boolalpha;
  using std::dec;
  using std::defaultfloat;
  using std::fixed;
  using std::hex;
  using std::hexfloat;
  using std::internal;
  using std::io_errc;
  using std::ios;
  using std::ios_base;
  using std::iostream_category;
  using std::is_error_code_enum;
  using std::left;
  using std::make_error_code;
  using std::make_error_condition;
  using std::noboolalpha;
  using std::noshowbase;
  using std::noshowpoint;
  using std::noshowpos;
  using std::noskipws;
  using std::nounitbuf;
  using std::nouppercase;
  using std::oct;
  using std::right;
  using std::scientific;
  using std::showbase;
  using std::showpoint;
  using std::showpos;
  using std::skipws;
  using std::streamoff;
  using std::streamsize;
  using std::unitbuf;
  using std::uppercase;
  using std::wios;
}

// <iosfwd>
export namespace std
{
  using std::streampos;
  using std::u16streampos;
  using std::u32streampos;
  using std::u8streampos;
  using std::wstreampos;
  using std::istreambuf_iterator;
  using std::ostreambuf_iterator;
  using std::fpos;
#ifdef __cpp_lib_syncbuf
  using std::basic_osyncstream;
  using std::basic_syncbuf;
  using std::osyncstream;
  using std::syncbuf;
  using std::wosyncstream;
  using std::wsyncbuf;
#endif
}

// <iostream>
export namespace std
{
  using std::cerr;
  using std::cin;
  using std::clog;
  using std::cout;
  using std::wcerr;
  using std::wcin;
  using std::wclog;
  using std::wcout;
}

// <istream>
export namespace std
{
  using std::basic_iostream;
  using std::basic_istream;
  using std::iostream;
  using std::istream;
  using std::wiostream;
  using std::wistream;
  using std::ws;
  using std::operator>>;
}

// <iterator>
export namespace std
{
  using std::incrementable_traits;
  using std::indirectly_readable_traits;
  using std::iter_difference_t;
  using std::iter_reference_t;
  using std::iter_value_t;
  using std::iterator_traits;
  // _Cpo is an implementation detail we can't avoid exposing; if we do the
  // using in ranges directly, it conflicts with any friend functions of the
  // same name, which is why the customization points are in an inline
  // namespace in the first place.
  namespace ranges::inline _Cpo
  {
    using _Cpo::iter_move;
    using _Cpo::iter_swap;
  }
  using std::advance;
  using std::bidirectional_iterator;
  using std::bidirectional_iterator_tag;
  using std::contiguous_iterator;
  using std::contiguous_iterator_tag;
  using std::disable_sized_sentinel_for;
  using std::distance;
  using std::forward_iterator;
  using std::forward_iterator_tag;
  using std::incrementable;
  using std::indirect_binary_predicate;
  using std::indirect_equivalence_relation;
  using std::indirect_result_t;
  using std::indirect_strict_weak_order;
  using std::indirect_unary_predicate;
  using std::indirectly_comparable;
  using std::indirectly_copyable;
  using std::indirectly_copyable_storable;
  using std::indirectly_movable;
  using std::indirectly_movable_storable;
  using std::indirectly_readable;
  using std::indirectly_regular_unary_invocable;
  using std::indirectly_swappable;
  using std::indirectly_unary_invocable;
  using std::indirectly_writable;
  using std::input_iterator;
  using std::input_iterator_tag;
  using std::input_or_output_iterator;
  using std::iter_common_reference_t;
  using std::iter_rvalue_reference_t;
  using std::mergeable;
  using std::next;
  using std::output_iterator;
  using std::output_iterator_tag;
  using std::permutable;
  using std::prev;
  using std::projected;
  using std::random_access_iterator;
  using std::random_access_iterator_tag;
  using std::sentinel_for;
  using std::sized_sentinel_for;
  using std::sortable;
  using std::weakly_incrementable;
  namespace ranges
  {
    using std::ranges::advance;
    using std::ranges::distance;
    using std::ranges::next;
    using std::ranges::prev;
  }
  using std::reverse_iterator;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::operator-;
  using std::operator+;
  using std::back_insert_iterator;
  using std::back_inserter;
  using std::begin;
  using std::cbegin;
  using std::cend;
  using std::common_iterator;
  using std::counted_iterator;
  using std::crbegin;
  using std::crend;
  using std::data;
  using std::default_sentinel;
  using std::default_sentinel_t;
  using std::empty;
  using std::end;
  using std::front_insert_iterator;
  using std::front_inserter;
  using std::insert_iterator;
  using std::inserter;
  using std::istream_iterator;
  using std::istreambuf_iterator;
  using std::iterator;
  using std::make_move_iterator;
  using std::make_reverse_iterator;
  using std::move_iterator;
  using std::move_sentinel;
  using std::ostream_iterator;
  using std::ostreambuf_iterator;
  using std::rbegin;
  using std::rend;
  using std::size;
  using std::ssize;
  using std::unreachable_sentinel;
  using std::unreachable_sentinel_t;
#if __glibcxx_ranges_as_const // >= C++23
  using std::iter_const_reference_t;
  using std::basic_const_iterator;
  using std::const_iterator;
  using std::const_sentinel;
  using std::make_const_iterator;
  using std::make_const_sentinel;
#endif
#if __glibcxx_algorithm_default_value_type // >= C++26
  using std::projected_value_t;
#endif
}

// <latch>
#if __cpp_lib_latch
export namespace std
{
  using std::latch;
}
#endif

// 17.3.3 <limits> [limits.syn]
export namespace std
{
  using std::float_denorm_style; // deprecated in C++23
  using std::float_round_style;
  using std::numeric_limits;
}

// FIXME <linalg>

// <list>
export namespace std
{
  using std::list;
  using std::operator==;
  using std::operator<=>;
  using std::erase;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::list;
  }
}

// <locale>
export namespace std
{
  using std::codecvt;
  using std::codecvt_base;
  using std::codecvt_byname;
  using std::collate;
  using std::collate_byname;
  using std::ctype;
  using std::ctype_base;
  using std::ctype_byname;
  using std::has_facet;
  using std::isalnum;
  using std::isalpha;
  using std::isblank;
  using std::iscntrl;
  using std::isdigit;
  using std::isgraph;
  using std::islower;
  using std::isprint;
  using std::ispunct;
  using std::isspace;
  using std::isupper;
  using std::isxdigit;
  using std::locale;
  using std::messages;
  using std::messages_base;
  using std::messages_byname;
  using std::money_base;
  using std::money_get;
  using std::money_put;
  using std::moneypunct;
  using std::moneypunct_byname;
  using std::num_get;
  using std::num_put;
  using std::numpunct;
  using std::numpunct_byname;
  using std::time_base;
  using std::time_get;
  using std::time_get_byname;
  using std::time_put;
  using std::time_put_byname;
  using std::tolower;
  using std::toupper;
  using std::use_facet;
  using std::wbuffer_convert;
  using std::wstring_convert;
}

// <map>
export namespace std
{
  using std::map;
  using std::operator==;
  using std::operator<=>;
  using std::erase_if;
  using std::multimap;
  using std::swap;
  namespace pmr
  {
    using std::pmr::map;
    using std::pmr::multimap;
  }
}

// <mdspan>
#if __glibcxx_mdspan
export namespace std
{
  using std::extents;
  using std::dextents;
#if __glibcxx_mdspan >= 202406L
  using std::dims;
#endif
  using std::layout_left;
  using std::layout_right;
  using std::layout_stride;
  using std::default_accessor;
#if __glibcxx_aligned_accessor
  using std::aligned_accessor;
#endif
  using std::mdspan;
#if __glibcxx_padded_layouts
  using std::layout_left_padded;
  using std::layout_right_padded;
#endif
#if __glibcxx_submdspan
  using std::strided_slice;
  using std::full_extent_t;
  using std::full_extent;
  using std::submdspan_mapping_result;
  using std::submdspan_canonicalize_slices;
  using std::submdspan_extents;
  using std::submdspan;
#endif
}
#endif

// 20.2 <memory>
export namespace std
{
  using std::align;
  using std::allocator;
  using std::allocator_arg;
  using std::allocator_arg_t;
  using std::allocator_traits;
  using std::assume_aligned;
#if __glibcxx_is_sufficiently_aligned
  using std::is_sufficiently_aligned;
#endif  
  using std::make_obj_using_allocator;
  using std::pointer_traits;
  using std::to_address;
  using std::uninitialized_construct_using_allocator;
  using std::uses_allocator;
  using std::uses_allocator_construction_args;
  using std::uses_allocator_v;
  using std::operator==;
  using std::addressof;
  using std::uninitialized_default_construct;
  using std::uninitialized_default_construct_n;
  namespace ranges
  {
    using std::ranges::uninitialized_default_construct;
    using std::ranges::uninitialized_default_construct_n;
  }
  using std::uninitialized_value_construct;
  using std::uninitialized_value_construct_n;
  namespace ranges
  {
    using std::ranges::uninitialized_value_construct;
    using std::ranges::uninitialized_value_construct_n;
  }
  using std::uninitialized_copy;
  using std::uninitialized_copy_n;
  namespace ranges
  {
    using std::ranges::uninitialized_copy;
    using std::ranges::uninitialized_copy_n;
    using std::ranges::uninitialized_copy_n_result;
    using std::ranges::uninitialized_copy_result;
  }
  using std::uninitialized_move;
  using std::uninitialized_move_n;
  namespace ranges
  {
    using std::ranges::uninitialized_move;
    using std::ranges::uninitialized_move_n;
    using std::ranges::uninitialized_move_n_result;
    using std::ranges::uninitialized_move_result;
  }
  using std::uninitialized_fill;
  using std::uninitialized_fill_n;
  namespace ranges
  {
    using std::ranges::uninitialized_fill;
    using std::ranges::uninitialized_fill_n;
  }
  using std::construct_at;
  namespace ranges
  {
    using std::ranges::construct_at;
  }
  using std::destroy;
  using std::destroy_at;
  using std::destroy_n;
  namespace ranges
  {
    using std::ranges::destroy;
    using std::ranges::destroy_at;
    using std::ranges::destroy_n;
  }
  using std::default_delete;
  using std::make_unique;
  using std::make_unique_for_overwrite;
  using std::unique_ptr;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::operator<<;
  using std::allocate_shared;
  using std::allocate_shared_for_overwrite;
  using std::bad_weak_ptr;
  using std::const_pointer_cast;
  using std::dynamic_pointer_cast;
  using std::make_shared;
  using std::make_shared_for_overwrite;
  using std::reinterpret_pointer_cast;
  using std::shared_ptr;
  using std::static_pointer_cast;
  using std::swap;
  using std::get_deleter;
  using std::atomic_compare_exchange_strong;
  using std::atomic_compare_exchange_strong_explicit;
  using std::atomic_compare_exchange_weak;
  using std::atomic_compare_exchange_weak_explicit;
  using std::atomic_exchange;
  using std::atomic_exchange_explicit;
  using std::atomic_is_lock_free;
  using std::atomic_load;
  using std::atomic_load_explicit;
  using std::atomic_store;
  using std::atomic_store_explicit;
  using std::enable_shared_from_this;
  using std::hash;
  using std::owner_less;
  using std::weak_ptr;
#if __cpp_lib_out_ptr
  using std::out_ptr;
  using std::inout_ptr;
  using std::out_ptr_t;
  using std::inout_ptr_t;
#endif
#if __cpp_lib_indirect
  using std::indirect;
  namespace pmr { using std::pmr::indirect; }
#endif
#if __cpp_lib_polymorphic
  using std::polymorphic;
  namespace pmr { using std::pmr::polymorphic; }
#endif
#if __cpp_lib_smart_ptr_owner_equality
  using std::owner_equal;
  using std::owner_hash;
#endif
#if __cpp_lib_start_lifetime_as
  using std::start_lifetime_as;
  using std::start_lifetime_as_array;
#endif
}

// 20.4 <memory_resource>
export namespace std::pmr
{
  using std::pmr::memory_resource;
  using std::pmr::operator==;
  using std::pmr::get_default_resource;
  using std::pmr::monotonic_buffer_resource;
  using std::pmr::new_delete_resource;
  using std::pmr::null_memory_resource;
  using std::pmr::polymorphic_allocator;
  using std::pmr::pool_options;
  using std::pmr::set_default_resource;
#if _GLIBCXX_HAS_GTHREADS
  using std::pmr::synchronized_pool_resource;
#endif
  using std::pmr::unsynchronized_pool_resource;
}

// <meta>
#if __glibcxx_reflection >= 202506L
export namespace std
{
#if __has_builtin(__builtin_is_string_literal)
  using std::is_string_literal;
#endif
  using std::define_static_string;
  using std::define_static_array;
  using std::define_static_object;
  namespace meta
  {
    using std::meta::info;
    using std::meta::exception;
    using std::meta::operators;
    using enum std::meta::operators;
    using std::meta::operator_of;
    using std::meta::symbol_of;
    using std::meta::u8symbol_of;
    using std::meta::has_identifier;
    using std::meta::identifier_of;
    using std::meta::u8identifier_of;
    using std::meta::display_string_of;
    using std::meta::u8display_string_of;
    using std::meta::source_location_of;
    using std::meta::type_of;
    using std::meta::object_of;
    using std::meta::constant_of;
    using std::meta::is_public;
    using std::meta::is_protected;
    using std::meta::is_private;
    using std::meta::is_virtual;
    using std::meta::is_pure_virtual;
    using std::meta::is_override;
    using std::meta::is_final;
    using std::meta::is_deleted;
    using std::meta::is_defaulted;
    using std::meta::is_user_provided;
    using std::meta::is_user_declared;
    using std::meta::is_explicit;
    using std::meta::is_noexcept;
    using std::meta::is_bit_field;
    using std::meta::is_enumerator;
    using std::meta::is_annotation;
    using std::meta::is_const;
    using std::meta::is_volatile;
    using std::meta::is_mutable_member;
    using std::meta::is_lvalue_reference_qualified;
    using std::meta::is_rvalue_reference_qualified;
    using std::meta::has_static_storage_duration;
    using std::meta::has_thread_storage_duration;
    using std::meta::has_automatic_storage_duration;
    using std::meta::has_internal_linkage;
    using std::meta::has_module_linkage;
    using std::meta::has_external_linkage;
    using std::meta::has_c_language_linkage;
    using std::meta::has_linkage;
    using std::meta::is_complete_type;
    using std::meta::is_enumerable_type;
    using std::meta::is_variable;
    using std::meta::is_type;
    using std::meta::is_namespace;
    using std::meta::is_type_alias;
    using std::meta::is_namespace_alias;
    using std::meta::is_function;
    using std::meta::is_conversion_function;
    using std::meta::is_operator_function;
    using std::meta::is_literal_operator;
    using std::meta::is_special_member_function;
    using std::meta::is_constructor;
    using std::meta::is_default_constructor;
    using std::meta::is_copy_constructor;
    using std::meta::is_move_constructor;
    using std::meta::is_assignment;
    using std::meta::is_copy_assignment;
    using std::meta::is_move_assignment;
    using std::meta::is_destructor;
    using std::meta::is_function_parameter;
    using std::meta::is_explicit_object_parameter;
    using std::meta::has_default_argument;
    using std::meta::has_ellipsis_parameter;
    using std::meta::is_template;
    using std::meta::is_function_template;
    using std::meta::is_variable_template;
    using std::meta::is_class_template;
    using std::meta::is_alias_template;
    using std::meta::is_conversion_function_template;
    using std::meta::is_operator_function_template;
    using std::meta::is_literal_operator_template;
    using std::meta::is_constructor_template;
    using std::meta::is_concept;
    using std::meta::is_value;
    using std::meta::is_object;
    using std::meta::is_structured_binding;
    using std::meta::is_class_member;
    using std::meta::is_namespace_member;
    using std::meta::is_nonstatic_data_member;
    using std::meta::is_static_member;
    using std::meta::is_base;
    using std::meta::has_default_member_initializer;
    using std::meta::has_parent;
    using std::meta::parent_of;
    using std::meta::dealias;
    using std::meta::has_template_arguments;
    using std::meta::template_of;
    using std::meta::template_arguments_of;
    using std::meta::parameters_of;
    using std::meta::variable_of;
    using std::meta::return_type_of;
    using std::meta::access_context;
    using std::meta::is_accessible;
    using std::meta::has_inaccessible_nonstatic_data_members;
    using std::meta::has_inaccessible_bases;
    using std::meta::has_inaccessible_subobjects;
    using std::meta::members_of;
    using std::meta::bases_of;
    using std::meta::static_data_members_of;
    using std::meta::nonstatic_data_members_of;
    using std::meta::subobjects_of;
    using std::meta::enumerators_of;
    using std::meta::member_offset;
    using std::meta::offset_of;
    using std::meta::size_of;
    using std::meta::alignment_of;
    using std::meta::bit_size_of;
    using std::meta::extract;
    using std::meta::reflection_range;
    using std::meta::can_substitute;
    using std::meta::substitute;
    using std::meta::reflect_constant;
    using std::meta::reflect_object;
    using std::meta::reflect_function;
    using std::meta::reflect_constant_string;
    using std::meta::reflect_constant_array;
    using std::meta::data_member_options;
    using std::meta::data_member_spec;
    using std::meta::is_data_member_spec;
    using std::meta::define_aggregate;
    using std::meta::is_void_type;
    using std::meta::is_null_pointer_type;
    using std::meta::is_integral_type;
    using std::meta::is_floating_point_type;
    using std::meta::is_array_type;
    using std::meta::is_pointer_type;
    using std::meta::is_lvalue_reference_type;
    using std::meta::is_rvalue_reference_type;
    using std::meta::is_member_object_pointer_type;
    using std::meta::is_member_function_pointer_type;
    using std::meta::is_enum_type;
    using std::meta::is_union_type;
    using std::meta::is_class_type;
    using std::meta::is_function_type;
    using std::meta::is_reflection_type;
    using std::meta::is_reference_type;
    using std::meta::is_arithmetic_type;
    using std::meta::is_fundamental_type;
    using std::meta::is_object_type;
    using std::meta::is_scalar_type;
    using std::meta::is_compound_type;
    using std::meta::is_member_pointer_type;
    using std::meta::is_const_type;
    using std::meta::is_volatile_type;
    using std::meta::is_trivially_copyable_type;
    using std::meta::is_standard_layout_type;
    using std::meta::is_empty_type;
    using std::meta::is_polymorphic_type;
    using std::meta::is_abstract_type;
    using std::meta::is_final_type;
    using std::meta::is_aggregate_type;
    using std::meta::is_consteval_only_type;
    using std::meta::is_signed_type;
    using std::meta::is_unsigned_type;
    using std::meta::is_bounded_array_type;
    using std::meta::is_unbounded_array_type;
    using std::meta::is_scoped_enum_type;
    using std::meta::is_constructible_type;
    using std::meta::is_default_constructible_type;
    using std::meta::is_copy_constructible_type;
    using std::meta::is_move_constructible_type;
    using std::meta::is_assignable_type;
    using std::meta::is_copy_assignable_type;
    using std::meta::is_move_assignable_type;
    using std::meta::is_swappable_with_type;
    using std::meta::is_swappable_type;
    using std::meta::is_destructible_type;
    using std::meta::is_trivially_constructible_type;
    using std::meta::is_trivially_default_constructible_type;
    using std::meta::is_trivially_copy_constructible_type;
    using std::meta::is_trivially_move_constructible_type;
    using std::meta::is_trivially_assignable_type;
    using std::meta::is_trivially_copy_assignable_type;
    using std::meta::is_trivially_move_assignable_type;
    using std::meta::is_trivially_destructible_type;
    using std::meta::is_nothrow_constructible_type;
    using std::meta::is_nothrow_default_constructible_type;
    using std::meta::is_nothrow_copy_constructible_type;
    using std::meta::is_nothrow_move_constructible_type;
    using std::meta::is_nothrow_assignable_type;
    using std::meta::is_nothrow_copy_assignable_type;
    using std::meta::is_nothrow_move_assignable_type;
    using std::meta::is_nothrow_swappable_with_type;
    using std::meta::is_nothrow_swappable_type;
    using std::meta::is_nothrow_destructible_type;
    using std::meta::is_implicit_lifetime_type;
    using std::meta::has_virtual_destructor;
    using std::meta::has_unique_object_representations;
    using std::meta::reference_constructs_from_temporary;
    using std::meta::reference_converts_from_temporary;
    using std::meta::rank;
    using std::meta::extent;
    using std::meta::is_same_type;
    using std::meta::is_base_of_type;
    using std::meta::is_virtual_base_of_type;
    using std::meta::is_convertible_type;
    using std::meta::is_nothrow_convertible_type;
    using std::meta::is_layout_compatible_type;
    using std::meta::is_pointer_interconvertible_base_of_type;
    using std::meta::is_invocable_type;
    using std::meta::is_invocable_r_type;
    using std::meta::is_nothrow_invocable_type;
    using std::meta::is_nothrow_invocable_r_type;
    using std::meta::remove_const;
    using std::meta::remove_volatile;
    using std::meta::remove_cv;
    using std::meta::add_const;
    using std::meta::add_volatile;
    using std::meta::add_cv;
    using std::meta::remove_reference;
    using std::meta::add_lvalue_reference;
    using std::meta::add_rvalue_reference;
    using std::meta::make_signed;
    using std::meta::make_unsigned;
    using std::meta::remove_extent;
    using std::meta::remove_all_extents;
    using std::meta::remove_pointer;
    using std::meta::add_pointer;
    using std::meta::remove_cvref;
    using std::meta::decay;
    using std::meta::common_type;
    using std::meta::common_reference;
    using std::meta::underlying_type;
    using std::meta::invoke_result;
    using std::meta::unwrap_reference;
    using std::meta::unwrap_ref_decay;
    using std::meta::tuple_size;
    using std::meta::tuple_element;
    using std::meta::variant_size;
    using std::meta::variant_alternative;
    using std::meta::type_order;
    using std::meta::annotations_of;
    using std::meta::annotations_of_with_type;
  }
}
#endif

// <mutex>
export namespace std
{
  using std::adopt_lock;
  using std::adopt_lock_t;
  using std::call_once;
  using std::defer_lock;
  using std::defer_lock_t;
  using std::lock;
  using std::lock_guard;
#if _GLIBCXX_HAS_GTHREADS
  using std::mutex;
#endif
  using std::once_flag;
#if _GLIBCXX_HAS_GTHREADS
  using std::recursive_mutex;
  using std::recursive_timed_mutex;
#endif
  using std::scoped_lock;
  using std::swap;
#if _GLIBCXX_HAS_GTHREADS
  using std::timed_mutex;
#endif
  using std::try_lock;
  using std::try_to_lock;
  using std::try_to_lock_t;
  using std::unique_lock;
}

// 17.6.2 <new> [new.syn]
export namespace std
{
  using std::align_val_t;
  using std::bad_alloc;
  using std::bad_array_new_length;
  using std::destroying_delete;
  using std::destroying_delete_t;
  using std::get_new_handler;
  using std::hardware_destructive_interference_size;
  using std::hardware_constructive_interference_size;
  using std::launder;
  using std::new_handler;
  using std::nothrow;
  using std::nothrow_t;
  using std::set_new_handler;
}
export
{
  using ::operator new;
  using ::operator delete;
  using ::operator new[];
  using ::operator delete[];
}

// <numbers>
export namespace std::numbers
{
  using std::numbers::e;
  using std::numbers::e_v;
  using std::numbers::egamma;
  using std::numbers::egamma_v;
  using std::numbers::inv_pi;
  using std::numbers::inv_pi_v;
  using std::numbers::inv_sqrt3;
  using std::numbers::inv_sqrt3_v;
  using std::numbers::inv_sqrtpi;
  using std::numbers::inv_sqrtpi_v;
  using std::numbers::ln10;
  using std::numbers::ln10_v;
  using std::numbers::ln2;
  using std::numbers::ln2_v;
  using std::numbers::log10e;
  using std::numbers::log10e_v;
  using std::numbers::log2e;
  using std::numbers::log2e_v;
  using std::numbers::phi;
  using std::numbers::phi_v;
  using std::numbers::pi;
  using std::numbers::pi_v;
  using std::numbers::sqrt2;
  using std::numbers::sqrt2_v;
  using std::numbers::sqrt3;
  using std::numbers::sqrt3_v;
}

// <numeric>
export namespace std
{
  using std::accumulate;
  using std::adjacent_difference;
  using std::exclusive_scan;
  using std::inclusive_scan;
  using std::inner_product;
  using std::iota;
  using std::partial_sum;
  using std::reduce;
  using std::transform_exclusive_scan;
  using std::transform_inclusive_scan;
  using std::transform_reduce;
  using std::gcd;
  using std::lcm;
  using std::midpoint;
#if __cpp_lib_ranges_iota
  namespace ranges
  {
    using ranges::iota;
    using ranges::iota_result;
  }
#endif
#if __cpp_lib_saturation_arithmetic
  using std::add_sat;
  using std::sub_sat;
  using std::mul_sat;
  using std::div_sat;
  using std::saturate_cast;
#endif
}

// <optional>
export namespace std
{
  using std::bad_optional_access;
  using std::nullopt;
  using std::nullopt_t;
  using std::optional;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::hash;
  using std::make_optional;
  using std::swap;
}

// <ostream>
export namespace std
{
  using std::basic_ostream;
  using std::endl;
  using std::ends;
  using std::flush;
  using std::ostream;
  using std::wostream;
  using std::operator<<;
#ifdef __cpp_lib_syncbuf
  using std::emit_on_flush;
  using std::noemit_on_flush;
  using std::flush_emit;
#endif
}

// <print>
#if __cpp_lib_print
export namespace std
{
  using std::print;
  using std::println;
  using std::vprint_unicode;
  using std::vprint_unicode_buffered;
  using std::vprint_nonunicode;
  using std::vprint_nonunicode_buffered;
}
#endif

// <queue>
export namespace std
{
  using std::queue;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::priority_queue;
  using std::swap;
  using std::uses_allocator;
}

// <random>
export namespace std
{
  using std::bernoulli_distribution;
  using std::binomial_distribution;
  using std::cauchy_distribution;
  using std::chi_squared_distribution;
  using std::default_random_engine;
  using std::discard_block_engine;
  using std::discrete_distribution;
  using std::exponential_distribution;
  using std::extreme_value_distribution;
  using std::fisher_f_distribution;
  using std::gamma_distribution;
  using std::generate_canonical;
  using std::geometric_distribution;
  using std::independent_bits_engine;
  using std::knuth_b;
  using std::linear_congruential_engine;
  using std::lognormal_distribution;
  using std::mersenne_twister_engine;
  using std::minstd_rand;
  using std::minstd_rand0;
  using std::mt19937;
  using std::mt19937_64;
  using std::negative_binomial_distribution;
  using std::normal_distribution;
  using std::piecewise_constant_distribution;
  using std::piecewise_linear_distribution;
  using std::poisson_distribution;
  using std::random_device;
  using std::ranlux24;
  using std::ranlux24_base;
  using std::ranlux48;
  using std::ranlux48_base;
  using std::seed_seq;
  using std::shuffle_order_engine;
  using std::student_t_distribution;
  using std::subtract_with_carry_engine;
  using std::uniform_int_distribution;
  using std::uniform_random_bit_generator;
  using std::uniform_real_distribution;
  using std::weibull_distribution;
}

// <ranges>
export namespace std
{
  namespace ranges
  {
    using std::ranges::begin;
    using std::ranges::cbegin;
    using std::ranges::cdata;
    using std::ranges::cend;
    using std::ranges::crbegin;
    using std::ranges::crend;
    using std::ranges::data;
    using std::ranges::empty;
    using std::ranges::end;
    using std::ranges::rbegin;
    using std::ranges::rend;
    using std::ranges::size;
    using std::ranges::ssize;
    using std::ranges::bidirectional_range;
    using std::ranges::borrowed_range;
    using std::ranges::common_range;
    using std::ranges::contiguous_range;
    using std::ranges::disable_sized_range;
    using std::ranges::enable_borrowed_range;
    using std::ranges::enable_view;
    using std::ranges::forward_range;
    using std::ranges::get;
    using std::ranges::input_range;
    using std::ranges::iterator_t;
    using std::ranges::output_range;
    using std::ranges::random_access_range;
    using std::ranges::range;
    using std::ranges::range_common_reference_t;
    using std::ranges::range_difference_t;
    using std::ranges::range_reference_t;
    using std::ranges::range_rvalue_reference_t;
    using std::ranges::range_size_t;
    using std::ranges::range_value_t;
    using std::ranges::sentinel_t;
    using std::ranges::sized_range;
    using std::ranges::subrange;
    using std::ranges::subrange_kind;
    using std::ranges::view;
    using std::ranges::view_base;
    using std::ranges::view_interface;
    using std::ranges::viewable_range;
  }
  using std::ranges::get;
  namespace ranges
  {
    using std::ranges::borrowed_iterator_t;
    using std::ranges::borrowed_subrange_t;
    using std::ranges::dangling;
    using std::ranges::empty_view;
    namespace views
    {
      using std::ranges::views::empty;
    }
    using std::ranges::single_view;
    namespace views
    {
      using std::ranges::views::single;
    }
    using std::ranges::iota_view;
    namespace views
    {
      using std::ranges::views::iota;
    }
    using std::ranges::basic_istream_view;
    using std::ranges::istream_view;
    using std::ranges::wistream_view;
    namespace views
    {
      using std::ranges::views::istream;
    }
    namespace views
    {
      using std::ranges::views::all;
      using std::ranges::views::all_t;
    }
    using std::ranges::filter_view;
    using std::ranges::owning_view;
    using std::ranges::ref_view;
    namespace views
    {
      using std::ranges::views::filter;
    }
    using std::ranges::transform_view;
    namespace views
    {
      using std::ranges::views::transform;
    }
    using std::ranges::take_view;
    namespace views
    {
      using std::ranges::views::take;
    }
    using std::ranges::take_while_view;
    namespace views
    {
      using std::ranges::views::take_while;
    }
    using std::ranges::drop_view;
    namespace views
    {
      using std::ranges::views::drop;
    }
    using std::ranges::drop_while_view;
    namespace views
    {
      using std::ranges::views::drop_while;
    }
    using std::ranges::join_view;
    namespace views
    {
      using std::ranges::views::join;
    }
    using std::ranges::lazy_split_view;
    using std::ranges::split_view;
    namespace views
    {
      using std::ranges::views::lazy_split;
      using std::ranges::views::split;
    }
    namespace views
    {
      using std::ranges::views::counted;
    }
    using std::ranges::common_view;
    namespace views
    {
      using std::ranges::views::common;
    }
    using std::ranges::reverse_view;
    namespace views
    {
      using std::ranges::views::reverse;
    }
    using std::ranges::elements_view;
    using std::ranges::keys_view;
    using std::ranges::values_view;
    namespace views
    {
      using std::ranges::views::elements;
      using std::ranges::views::keys;
      using std::ranges::views::values;
    }
#if __cpp_lib_ranges >= 202202L
    using ranges::range_adaptor_closure;
#endif
  }
  namespace views = ranges::views;
  using std::tuple_element;
  using std::tuple_size;
  namespace ranges
  {
#if __glibcxx_ranges_as_const // >= C++23
    using ranges::constant_range;
    using ranges::const_iterator_t;
    using ranges::const_sentinel_t;
    using ranges::range_const_reference_t;
    using ranges::as_const_view;
    namespace views { using views::as_const; }
#endif
#ifdef __glibcxx_generator  // C++ >= 23 && __glibcxx_coroutine
    using ranges::elements_of;
#endif
#ifdef __cpp_lib_ranges_as_rvalue // C++ >= 23
    using ranges::as_rvalue_view;
    namespace views { using views::as_rvalue; }
#endif
#ifdef __cpp_lib_ranges_chunk // C++ >= 23
    using ranges::chunk_view;
    namespace views { using views::chunk; }
#endif
#ifdef __cpp_lib_ranges_slide // C++ >= 23
    using ranges::slide_view;
    namespace views { using views::slide; }
#endif
#ifdef __cpp_lib_ranges_zip // C++ >= 23
    using ranges::zip_view;
    using ranges::zip_transform_view;
    using ranges::adjacent_view;
    using ranges::adjacent_transform_view;
    namespace views {
      using views::zip;
      using views::zip_transform;
      using views::adjacent;
      using views::adjacent_transform;
      using views::pairwise;
      using views::pairwise_transform;
    }
#endif
#ifdef __cpp_lib_ranges_chunk_by // C++ >= 23
    using ranges::chunk_by_view;
    namespace views { using views::chunk_by; }
#endif
#ifdef __cpp_lib_ranges_join_with // C++ >= 23
    using ranges::join_with_view;
    namespace views { using views::join_with; }
#endif
#ifdef __cpp_lib_ranges_repeat // C++ >= 23
    using ranges::repeat_view;
    namespace views { using views::repeat; }
#endif
#ifdef __cpp_lib_ranges_stride // C++ >= 23
    using ranges::stride_view;
    namespace views { using views::stride; }
#endif
#ifdef __cpp_lib_ranges_cartesian_product // C++ >= 23
    using ranges::cartesian_product_view;
    namespace views { using views::cartesian_product; }
#endif
#ifdef __cpp_lib_ranges_enumerate // C++ >= 23
    using ranges::enumerate_view;
    namespace views { using views::enumerate; }
#endif
#if __cpp_lib_ranges_concat // C++ >= C++26
    using ranges::concat_view;
    namespace views { using views::concat; }
#endif
#if __cpp_lib_ranges_cache_latest // C++ >= C++26
    using ranges::cache_latest_view;
    namespace views { using views::cache_latest; }
#endif
#if __glibcxx_ranges_to_input // C++ >= 26
    using ranges::to_input_view;
    namespace views { using views::to_input; }
#endif
  }
#if __glibcxx_ranges_to_container // C++ >= 23
  namespace ranges { using ranges::to; }
  using std::from_range_t;
  using std::from_range;
#endif
}

// <ratio>
export namespace std
{
  using std::atto;
  using std::centi;
  using std::deca;
  using std::deci;
  using std::exa;
  using std::femto;
  using std::giga;
  using std::hecto;
  using std::kilo;
  using std::mega;
  using std::micro;
  using std::milli;
  using std::nano;
  using std::peta;
  using std::pico;
  using std::ratio;
  using std::ratio_add;
  using std::ratio_divide;
  using std::ratio_equal;
  using std::ratio_equal_v;
  using std::ratio_greater;
  using std::ratio_greater_equal;
  using std::ratio_greater_equal_v;
  using std::ratio_greater_v;
  using std::ratio_less;
  using std::ratio_less_equal;
  using std::ratio_less_equal_v;
  using std::ratio_less_v;
  using std::ratio_multiply;
  using std::ratio_not_equal;
  using std::ratio_not_equal_v;
  using std::ratio_subtract;
  using std::tera;
}

// FIXME <rcu>

// <regex>
export namespace std
{
  namespace regex_constants
  {
    using std::regex_constants::error_type;
    using std::regex_constants::match_flag_type;
    using std::regex_constants::syntax_option_type;
    using std::regex_constants::operator&;
    using std::regex_constants::operator&=;
    using std::regex_constants::operator^;
    using std::regex_constants::operator^=;
    using std::regex_constants::operator|;
    using std::regex_constants::operator|=;
    using std::regex_constants::operator~;
    using std::regex_constants::awk;
    using std::regex_constants::basic;
    using std::regex_constants::collate;
    using std::regex_constants::ECMAScript;
    using std::regex_constants::egrep;
    using std::regex_constants::extended;
    using std::regex_constants::grep;
    using std::regex_constants::icase;
    using std::regex_constants::multiline;
    using std::regex_constants::nosubs;
    using std::regex_constants::optimize;
    using std::regex_constants::format_default;
    using std::regex_constants::format_first_only;
    using std::regex_constants::format_no_copy;
    using std::regex_constants::format_sed;
    using std::regex_constants::match_any;
    using std::regex_constants::match_continuous;
    using std::regex_constants::match_default;
    using std::regex_constants::match_not_bol;
    using std::regex_constants::match_not_bow;
    using std::regex_constants::match_not_eol;
    using std::regex_constants::match_not_eow;
    using std::regex_constants::match_not_null;
    using std::regex_constants::match_prev_avail;
    using std::regex_constants::error_backref;
    using std::regex_constants::error_badbrace;
    using std::regex_constants::error_badrepeat;
    using std::regex_constants::error_brace;
    using std::regex_constants::error_brack;
    using std::regex_constants::error_collate;
    using std::regex_constants::error_complexity;
    using std::regex_constants::error_ctype;
    using std::regex_constants::error_escape;
    using std::regex_constants::error_paren;
    using std::regex_constants::error_range;
    using std::regex_constants::error_space;
    using std::regex_constants::error_stack;
  }
  using std::basic_regex;
  using std::csub_match;
  using std::regex;
  using std::regex_error;
  using std::regex_traits;
  using std::ssub_match;
  using std::sub_match;
  using std::swap;
  using std::wcsub_match;
  using std::wregex;
  using std::wssub_match;
  using std::operator==;
  using std::operator<=>;
  using std::operator<<;
  using std::cmatch;
  using std::cregex_iterator;
  using std::cregex_token_iterator;
  using std::match_results;
  using std::regex_iterator;
  using std::regex_match;
  using std::regex_replace;
  using std::regex_search;
  using std::regex_token_iterator;
  using std::smatch;
  using std::sregex_iterator;
  using std::sregex_token_iterator;
  using std::wcmatch;
  using std::wcregex_iterator;
  using std::wcregex_token_iterator;
  using std::wsmatch;
  using std::wsregex_iterator;
  using std::wsregex_token_iterator;
  namespace pmr
  {
#if _GLIBCXX_USE_CXX11_ABI
    using std::pmr::cmatch;
    using std::pmr::match_results;
    using std::pmr::smatch;
    using std::pmr::wcmatch;
    using std::pmr::wsmatch;
#endif
  }
}

// 20.5 <scoped_allocator>
export namespace std
{
  using std::scoped_allocator_adaptor;
  using std::operator==;
}

// <semaphore>
#if __cpp_lib_semaphore
export namespace std
{
  using std::binary_semaphore;
  using std::counting_semaphore;
}
#endif

// <set>
export namespace std
{
  using std::set;
  using std::operator==;
  using std::operator<=>;
  using std::erase_if;
  using std::multiset;
  using std::swap;
  namespace pmr
  {
    using std::pmr::multiset;
    using std::pmr::set;
  }
}

// <shared_mutex>
export namespace std
{
  using std::shared_lock;
#if _GLIBCXX_HAS_GTHREADS
  using std::shared_mutex;
  using std::shared_timed_mutex;
#endif
  using std::swap;
}

// 17.8.1 <source_location>
export namespace std
{
  using std::source_location;
}

// <span>
export namespace std
{
  using std::dynamic_extent;
  using std::span;
  namespace ranges
  {
    using std::ranges::enable_borrowed_range;
    using std::ranges::enable_view;
  }
  using std::as_bytes;
  using std::as_writable_bytes;
}

#if __cpp_lib_spanstream
// <spanstream>
export namespace std
{
  using std::basic_spanbuf;
  using std::spanbuf;
  using std::wspanbuf;
  using std::basic_ispanstream;
  using std::ispanstream;
  using std::wispanstream;
  using std::basic_ospanstream;
  using std::ospanstream;
  using std::wospanstream;
  using std::basic_spanstream;
  using std::spanstream;
  using std::wspanstream;
}
#endif

// <sstream>
export namespace std
{
  using std::basic_istringstream;
  using std::basic_ostringstream;
  using std::basic_stringbuf;
  using std::basic_stringstream;
  using std::istringstream;
  using std::ostringstream;
  using std::stringbuf;
  using std::stringstream;
  using std::swap;
  using std::wistringstream;
  using std::wostringstream;
  using std::wstringbuf;
  using std::wstringstream;
}

// <stack>
export namespace std
{
  using std::stack;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::swap;
  using std::uses_allocator;
}

// 19.6 <stacktrace>
#if __cpp_lib_stacktrace
export namespace std
{
  using std::stacktrace_entry;
  using std::basic_stacktrace;
  using std::stacktrace;
  using std::swap;
  using std::to_string;
  using std::operator<<;
  using std::formatter;
  namespace pmr
  {
    using std::pmr::stacktrace;
  }
  using std::hash;
}
#endif

// 19.2 <stdexcept>
export namespace std
{
  using std::domain_error;
  using std::invalid_argument;
  using std::length_error;
  using std::logic_error;
  using std::out_of_range;
  using std::overflow_error;
  using std::range_error;
  using std::runtime_error;
  using std::underflow_error;
}

// 17.4.2 <stdfloat>
export namespace std
{
#ifdef __STDCPP_FLOAT16_T__
  using std::float16_t;
#endif
#ifdef __STDCPP_FLOAT32_T__
  using std::float32_t;
#endif
#ifdef __STDCPP_FLOAT64_T__
  using std::float64_t;
#endif
#ifdef __STDCPP_FLOAT128_T__
  using std::float128_t;
#endif
#ifdef __STDCPP_BFLOAT16_T__
  using std::bfloat16_t;
#endif
}

// <stop_token>
#if __cpp_lib_jthread
export namespace std
{
  using std::stop_token;
  using std::stop_source;
  using std::nostopstate_t;
  using std::nostopstate;
  using std::stop_callback;
#if __cpp_lib_senders
  using std::never_stop_token;
  using std::inplace_stop_token;
  using std::inplace_stop_source;
  using std::inplace_stop_callback;
  using std::stop_callback_for;
#endif
}
#endif

// <streambuf>
export namespace std
{
  using std::basic_streambuf;
  using std::streambuf;
  using std::wstreambuf;
}

// <string>
export namespace std
{
  using std::basic_string;
  using std::char_traits;
  using std::operator+;
  using std::operator==;
  using std::operator<=>;
  using std::swap;
  using std::operator>>;
  using std::operator<<;
  using std::erase;
  using std::erase_if;
  using std::getline;
  using std::stod;
  using std::stof;
  using std::stoi;
  using std::stol;
  using std::stold;
  using std::stoll;
  using std::stoul;
  using std::stoull;
  using std::string;
  using std::to_string;
  using std::to_wstring;
  using std::u16string;
  using std::u32string;
  using std::u8string;
  using std::wstring;
  namespace pmr
  {
#if _GLIBCXX_USE_CXX11_ABI
    using std::pmr::basic_string;
    using std::pmr::string;
    using std::pmr::u16string;
    using std::pmr::u32string;
    using std::pmr::u8string;
    using std::pmr::wstring;
#endif
  }
  using std::hash;
}
export namespace std::inline literals::inline string_literals
{
  using std::operator""s;
}

// <string_view>
export namespace std
{
  using std::basic_string_view;
  namespace ranges
  {
    using std::ranges::enable_borrowed_range;
    using std::ranges::enable_view;
  }
  using std::operator==;
  using std::operator<=>;
  using std::operator<<;
  using std::hash;
  using std::string_view;
  using std::u16string_view;
  using std::u32string_view;
  using std::u8string_view;
  using std::wstring_view;
}
export namespace std::inline literals::inline string_view_literals
{
  using string_view_literals::operator""sv;
}

// <strstream>: deprecated C++98, removed C++26
export namespace std
{
  using std::istrstream;
  using std::ostrstream;
  using std::strstream;
  using std::strstreambuf;
}

// <syncstream>
export namespace std
{
#ifdef __cpp_lib_syncbuf
  using std::basic_syncbuf;
  using std::swap;
  using std::basic_osyncstream;
  using std::osyncstream;
  using std::syncbuf;
  using std::wosyncstream;
  using std::wsyncbuf;
#endif
}

// 19.5 <system_error>
export namespace std
{
  using std::errc;
  using std::error_category;
  using std::error_code;
  using std::error_condition;
  using std::generic_category;
  using std::is_error_code_enum;
  using std::is_error_condition_enum;
  using std::make_error_code;
  using std::system_category;
  using std::system_error;
  using std::operator<<;
  using std::make_error_condition;
  using std::operator==;
  using std::operator<=>;
  using std::hash;
  using std::is_error_code_enum_v;
  using std::is_error_condition_enum_v;
}

// <text_encoding>
#if __cpp_lib_text_encoding
export namespace std
{
  using std::text_encoding;
}
#endif

// <thread>
export namespace std
{
  using std::swap;
  using std::thread;
#if __cpp_lib_jthread
  using std::jthread;
#endif
  namespace this_thread
  {
    using std::this_thread::get_id;
    using std::this_thread::sleep_for;
    using std::this_thread::sleep_until;
    using std::this_thread::yield;
  }
  using std::operator==;
  using std::operator<=>;
  using std::operator<<;
  using std::hash;
}

// <tuple>
export namespace std
{
  using std::apply;
  using std::forward_as_tuple;
  using std::get;
  using std::ignore;
  using std::make_from_tuple;
  using std::make_tuple;
  using std::tie;
  using std::tuple;
  using std::tuple_cat;
  using std::tuple_element;
  using std::tuple_element_t;
  using std::tuple_size;
  using std::operator==;
  using std::operator<=>;
  using std::swap;
  using std::tuple_size_v;
  using std::uses_allocator;
}

// <type_traits>
export namespace std
{
  using std::add_const;
  using std::add_const_t;
  using std::add_cv;
  using std::add_cv_t;
  using std::add_lvalue_reference;
  using std::add_lvalue_reference_t;
  using std::add_pointer;
  using std::add_pointer_t;
  using std::add_rvalue_reference;
  using std::add_rvalue_reference_t;
  using std::add_volatile;
  using std::add_volatile_t;
  using std::aligned_storage;
  using std::aligned_storage_t;
  using std::aligned_union;
  using std::aligned_union_t;
  using std::alignment_of;
  using std::alignment_of_v;
  using std::basic_common_reference;
  using std::bool_constant;
  using std::common_reference;
  using std::common_reference_t;
  using std::common_type;
  using std::common_type_t;
  using std::conditional;
  using std::conditional_t;
  using std::conjunction;
  using std::conjunction_v;
#if __cpp_lib_constant_wrapper
  using std::constant_wrapper;
  using std::cw;
#endif
  using std::decay;
  using std::decay_t;
  using std::disjunction;
  using std::disjunction_v;
  using std::enable_if;
  using std::enable_if_t;
  using std::extent;
  using std::extent_v;
  using std::false_type;
  using std::has_unique_object_representations;
  using std::has_unique_object_representations_v;
  using std::has_virtual_destructor;
  using std::has_virtual_destructor_v;
  using std::integral_constant;
  using std::invoke_result;
  using std::invoke_result_t;
  using std::is_abstract;
  using std::is_abstract_v;
  using std::is_aggregate;
  using std::is_aggregate_v;
  using std::is_arithmetic;
  using std::is_arithmetic_v;
  using std::is_array;
  using std::is_array_v;
  using std::is_assignable;
  using std::is_assignable_v;
  using std::is_base_of;
  using std::is_base_of_v;
  using std::is_bounded_array;
  using std::is_bounded_array_v;
  using std::is_class;
  using std::is_class_v;
  using std::is_compound;
  using std::is_compound_v;
  using std::is_const;
  using std::is_const_v;
  using std::is_constant_evaluated;
  using std::is_constructible;
  using std::is_constructible_v;
  using std::is_convertible;
  using std::is_convertible_v;
  using std::is_copy_assignable;
  using std::is_copy_assignable_v;
  using std::is_copy_constructible;
  using std::is_copy_constructible_v;
  using std::is_default_constructible;
  using std::is_default_constructible_v;
  using std::is_destructible;
  using std::is_destructible_v;
  using std::is_empty;
  using std::is_empty_v;
  using std::is_enum;
  using std::is_enum_v;
  using std::is_final;
  using std::is_final_v;
  using std::is_floating_point;
  using std::is_floating_point_v;
  using std::is_function;
  using std::is_function_v;
  using std::is_fundamental;
  using std::is_fundamental_v;
  using std::is_integral;
  using std::is_integral_v;
  using std::is_invocable;
  using std::is_invocable_r;
  using std::is_invocable_r_v;
  using std::is_invocable_v;
  using std::is_lvalue_reference;
  using std::is_lvalue_reference_v;
  using std::is_member_function_pointer;
  using std::is_member_function_pointer_v;
  using std::is_member_object_pointer;
  using std::is_member_object_pointer_v;
  using std::is_member_pointer;
  using std::is_member_pointer_v;
  using std::is_move_assignable;
  using std::is_move_assignable_v;
  using std::is_move_constructible;
  using std::is_move_constructible_v;
  using std::is_nothrow_assignable;
  using std::is_nothrow_assignable_v;
  using std::is_nothrow_constructible;
  using std::is_nothrow_constructible_v;
  using std::is_nothrow_convertible;
  using std::is_nothrow_convertible_v;
  using std::is_nothrow_copy_assignable;
  using std::is_nothrow_copy_assignable_v;
  using std::is_nothrow_copy_constructible;
  using std::is_nothrow_copy_constructible_v;
  using std::is_nothrow_default_constructible;
  using std::is_nothrow_default_constructible_v;
  using std::is_nothrow_destructible;
  using std::is_nothrow_destructible_v;
  using std::is_nothrow_invocable;
  using std::is_nothrow_invocable_r;
  using std::is_nothrow_invocable_r_v;
  using std::is_nothrow_invocable_v;
  using std::is_nothrow_move_assignable;
  using std::is_nothrow_move_assignable_v;
  using std::is_nothrow_move_constructible;
  using std::is_nothrow_move_constructible_v;
  using std::is_nothrow_swappable;
  using std::is_nothrow_swappable_v;
  using std::is_nothrow_swappable_with;
  using std::is_nothrow_swappable_with_v;
  using std::is_null_pointer;
  using std::is_null_pointer_v;
  using std::is_object;
  using std::is_object_v;
  using std::is_pod;
  using std::is_pod_v;
  using std::is_pointer;
  using std::is_pointer_v;
  using std::is_polymorphic;
  using std::is_polymorphic_v;
  using std::is_reference;
  using std::is_reference_v;
  using std::is_rvalue_reference;
  using std::is_rvalue_reference_v;
  using std::is_same;
  using std::is_same_v;
  using std::is_scalar;
  using std::is_scalar_v;
  using std::is_signed;
  using std::is_signed_v;
  using std::is_standard_layout;
  using std::is_standard_layout_v;
  using std::is_swappable;
  using std::is_swappable_v;
  using std::is_swappable_with;
  using std::is_swappable_with_v;
  using std::is_trivial;
  using std::is_trivial_v;
  using std::is_trivially_assignable;
  using std::is_trivially_assignable_v;
  using std::is_trivially_constructible;
  using std::is_trivially_constructible_v;
  using std::is_trivially_copy_assignable;
  using std::is_trivially_copy_assignable_v;
  using std::is_trivially_copy_constructible;
  using std::is_trivially_copy_constructible_v;
  using std::is_trivially_copyable;
  using std::is_trivially_copyable_v;
  using std::is_trivially_default_constructible;
  using std::is_trivially_default_constructible_v;
  using std::is_trivially_destructible;
  using std::is_trivially_destructible_v;
  using std::is_trivially_move_assignable;
  using std::is_trivially_move_assignable_v;
  using std::is_trivially_move_constructible;
  using std::is_trivially_move_constructible_v;
  using std::is_unbounded_array;
  using std::is_unbounded_array_v;
  using std::is_union;
  using std::is_union_v;
  using std::is_unsigned;
  using std::is_unsigned_v;
#if __cpp_lib_is_virtual_base_of
  using std::is_virtual_base_of;
  using std::is_virtual_base_of_v;
#endif
  using std::is_void;
  using std::is_void_v;
  using std::is_volatile;
  using std::is_volatile_v;
  using std::make_signed;
  using std::make_signed_t;
  using std::make_unsigned;
  using std::make_unsigned_t;
  using std::negation;
  using std::negation_v;
  using std::rank;
  using std::rank_v;
  using std::remove_all_extents;
  using std::remove_all_extents_t;
  using std::remove_const;
  using std::remove_const_t;
  using std::remove_cv;
  using std::remove_cv_t;
  using std::remove_cvref;
  using std::remove_cvref_t;
  using std::remove_extent;
  using std::remove_extent_t;
  using std::remove_pointer;
  using std::remove_pointer_t;
  using std::remove_reference;
  using std::remove_reference_t;
  using std::remove_volatile;
  using std::remove_volatile_t;
  using std::true_type;
  using std::type_identity;
  using std::type_identity_t;
  using std::underlying_type;
  using std::underlying_type_t;
  using std::unwrap_ref_decay;
  using std::unwrap_ref_decay_t;
  using std::unwrap_reference;
  using std::unwrap_reference_t;
  using std::void_t;
#if __cpp_lib_reference_from_temporary
  using std::reference_converts_from_temporary;
  using std::reference_converts_from_temporary_v;
  using std::reference_constructs_from_temporary;
  using std::reference_constructs_from_temporary_v;
#endif
#if __cpp_lib_is_layout_compatible
  using std::is_corresponding_member;
  using std::is_layout_compatible;
  using std::is_layout_compatible_v;
#endif
#if __cpp_lib_is_pointer_interconvertible
  using std::is_pointer_interconvertible_base_of;
  using std::is_pointer_interconvertible_base_of_v;
  using std::is_pointer_interconvertible_with_class;
#endif
#if __cpp_lib_is_scoped_enum
  using std::is_scoped_enum;
  using std::is_scoped_enum_v;
#endif
#if __cpp_lib_is_implicit_lifetime
  using std::is_implicit_lifetime;
  using std::is_implicit_lifetime_v;
#endif
}

// <typeindex>
export namespace std
{
  using std::hash;
  using std::type_index;
}

// 17.7.2 <typeinfo> [typeinfo.syn]
export namespace std
{
  using std::bad_cast;
  using std::bad_typeid;
  using std::type_info;
}

// <unordered_map>
export namespace std
{
  using std::unordered_map;
  using std::unordered_multimap;
  using std::operator==;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::unordered_map;
    using std::pmr::unordered_multimap;
  }
}

// <unordered_set>
export namespace std
{
  using std::unordered_multiset;
  using std::unordered_set;
  using std::operator==;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::unordered_multiset;
    using std::pmr::unordered_set;
  }
}

// <utility>
export namespace std
{
  using std::as_const;
  using std::cmp_equal;
  using std::cmp_greater;
  using std::cmp_greater_equal;
  using std::cmp_less;
  using std::cmp_less_equal;
  using std::cmp_not_equal;
  using std::declval;
  using std::exchange;
  using std::forward;
#if __cpp_lib_forward_like
  using std::forward_like;
#endif
  using std::in_range;
  using std::index_sequence;
  using std::index_sequence_for;
  using std::integer_sequence;
  using std::make_index_sequence;
  using std::make_integer_sequence;
  using std::move;
  using std::move_if_noexcept;
#if __cpp_lib_function_ref
  using std::nontype_t;
  using std::nontype;
#endif
  using std::pair;
  using std::swap;
  using std::operator==;
  using std::operator<=>;
  using std::get;
  using std::in_place;
  using std::in_place_index;
  using std::in_place_index_t;
  using std::in_place_t;
  using std::in_place_type;
  using std::in_place_type_t;
  using std::make_pair;
  using std::piecewise_construct;
  using std::piecewise_construct_t;
#if __cpp_lib_to_underlying
  using std::to_underlying;
#endif
  using std::tuple_element;
  using std::tuple_size;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
  namespace rel_ops
  {
    using std::rel_ops::operator!=;
    using std::rel_ops::operator>;
    using std::rel_ops::operator<=;
    using std::rel_ops::operator>=;
  }
#pragma GCC diagnostic pop
#if __cpp_lib_unreachable
  using std::unreachable;
#endif
#if __cpp_lib_observable_checkpoint
  using std::observable_checkpoint;
#endif
}

// <valarray>
export namespace std
{
  using std::gslice;
  using std::gslice_array;
  using std::indirect_array;
  using std::mask_array;
  using std::slice;
  using std::slice_array;
  using std::swap;
  using std::valarray;
  using std::operator*;
  using std::operator/;
  using std::operator%;
  using std::operator+;
  using std::operator-;
  using std::operator^;
  using std::operator&;
  using std::operator|;
  using std::operator<<;
  using std::operator>>;
  using std::operator&&;
  using std::operator||;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::abs;
  using std::acos;
  using std::asin;
  using std::atan;
  using std::atan2;
  using std::begin;
  using std::cos;
  using std::cosh;
  using std::end;
  using std::exp;
  using std::log;
  using std::log10;
  using std::pow;
  using std::sin;
  using std::sinh;
  using std::sqrt;
  using std::tan;
  using std::tanh;
}

// <variant>
export namespace std
{
  using std::get;
  using std::get_if;
  using std::holds_alternative;
  using std::variant;
  using std::variant_alternative;
  using std::variant_alternative_t;
  using std::variant_npos;
  using std::variant_size;
  using std::variant_size_v;
  using std::operator==;
  using std::operator!=;
  using std::operator<;
  using std::operator>;
  using std::operator<=;
  using std::operator>=;
  using std::operator<=>;
  using std::bad_variant_access;
  using std::hash;
  using std::monostate;
  using std::swap;
  using std::visit;
}

// <vector>
export namespace std
{
  using std::vector;
  using std::operator==;
  using std::operator<=>;
  using std::erase;
  using std::erase_if;
  using std::swap;
  namespace pmr
  {
    using std::pmr::vector;
  }
  using std::hash;
}
