# C++ API data.
#
# Copyright (C) 2022-2025 Free Software Foundation, Inc.
# This file is part of GCC.
#
# This file 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 of the License, or
# (at your option) any later version.
#
# This program 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING3. If not see
# .
#
# This file can be processed with gen-cxxapi-file.py to create the
# export list for the standard C++ library module and the tables for
# suggesting actions on missing symbols in the std:: namespace.
#
# The generated code is integral part of the C++ frontend but the
# content of this file is consists of information solely in the
# domain of the libstdc++ maintainers. Therefore ownership of
# this file is shared between these two groups.
#
# The format of this file must match what the gen-cxxapi-file.py
# script expects.
# column value
# 1 header file, including angle brackets
# 2 symbol name without std:: prefix
# 3 nonzero if to be exported
# 4 "no" if not to be added to the hint table else the appropriate
# enum cxx_dialect value
# 5 optional, a string used after #if in a line inserted first to
# enable conditional definitions
#
,ranges::in_fun_result,1,no
,ranges::in_in_result,1,no
,ranges::in_out_result,1,no
,ranges::in_in_out_result,1,no
,ranges::in_out_out_result,1,no
,ranges::min_max_result,1,no
,ranges::in_found_result,1,no
# unimplemented ,ranges::out_value_result,1,no
,all_of,1,no
# c++/106851 ,ranges::all_of,1,no
,any_of,1,no
# c++/106851 ,ranges::any_of,1,no
,none_of,1,no
# c++/106851 ,ranges::none_of,1,no
,for_each,1,no
,ranges::for_each_result,1,no
# c++/106851 ,ranges::for_each,1,no
,for_each_n,1,no
,ranges::for_each_n_result,1,no
# c++/106851 ,ranges::for_each_n,1,no
,find,1,no
,find_if,1,no
,find_if_not,1,no
# c++/106851 ,ranges::find,1,no
# c++/106851 ,ranges::find_if,1,no
# c++/106851 ,ranges::find_if_not,1,no
,find_end,1,no
# c++/106851 ,ranges::find_end,1,no
,find_first_of,1,no
# c++/106851 ,ranges::find_first_of,1,no
,adjacent_find,1,no
# c++/106851 ,ranges::adjacent_find,1,no
,count,1,no
,count_if,1,no
# c++/106851 ,ranges::count,1,no
# c++/106851 ,ranges::count_if,1,no
,mismatch,1,no
,ranges::mismatch_result,1,no
# c++/106851 ,ranges::mismatch,1,no
,equal,1,no
# c++/106851 ,ranges::equal,1,no
,is_permutation,1,no
# c++/106851 ,ranges::is_permutation,1,no
,search,1,no
# c++/106851 ,ranges::search,1,no
,search_n,1,no
# c++/106851 ,ranges::search_n,1,no
# unimplemented ,ranges::starts_with,1,no
# unimplemented ,ranges::ends_with,1,no
,copy,1,no
,ranges::copy_result,1,no
# c++/106851 ,ranges::copy,1,no
,copy_n,1,no
,ranges::copy_n_result,1,no
# c++/106851 ,ranges::copy_n,1,no
,copy_if,1,no
,ranges::copy_if_result,1,no
# c++/106851 ,ranges::copy_if,1,no
,copy_backward,1,no
,ranges::copy_backward_result,1,no
# c++/106851 ,ranges::copy_backward,1,no
,move,1,no
,ranges::move_result,1,no
# c++/106851 ,ranges::move,1,no
,move_backward,1,no
,ranges::move_backward_result,1,no
# c++/106851 ,ranges::move_backward,1,no
# TODO the rest
,bad_any_cast,1,no
,any,1,cxx17
,swap,1,no
,make_any,1,cxx17
,any_cast,1,cxx17
,array,1,cxx11
,operator==,1,no
,operator<=>,1,no
,swap,1,no
,to_array,1,cxx20
,tuple_size,1,no
,tuple_element,1,no
,get,1,no
,memory_order,1,no
,kill_dependency,1,no
,atomic_ref,1,cxx20
,atomic,1,cxx11
,atomic_is_lock_free,1,no
,atomic_store,1,no
,atomic_store_explicit,1,no
,atomic_load,1,no
,atomic_load_explicit,1,no
,atomic_exchange,1,no
,atomic_exchange_explicit,1,no
,atomic_compare_exchange_weak,1,no
,atomic_compare_exchange_strong,1,no
,atomic_compare_exchange_weak_explicit,1,no
,atomic_compare_exchange_strong_explicit,1,no
,atomic_fetch_add,1,no
,atomic_fetch_add_explicit,1,no
,atomic_fetch_sub,1,no
,atomic_fetch_sub_explicit,1,no
,atomic_fetch_and,1,no
,atomic_fetch_and_explicit,1,no
,atomic_fetch_or,1,no
,atomic_fetch_or_explicit,1,no
,atomic_fetch_xor,1,no
,atomic_fetch_xor_explicit,1,no
,atomic_wait,1,no
,atomic_wait_explicit,1,no
,atomic_notify_one,1,no
,atomic_notify_all,1,no
,atomic_notify_all,1,no
,atomic_bool,1,no
,atomic_char,1,no
,atomic_schar,1,no
,atomic_uchar,1,no
,atomic_short,1,no
,atomic_ushort,1,no
,atomic_int,1,no
,atomic_uint,1,no
,atomic_long,1,no
,atomic_ulong,1,no
,atomic_llong,1,no
,atomic_ullong,1,no
,atomic_char8_t,1,no
,atomic_char16_t,1,no
,atomic_char32_t,1,no
,atomic_wchar_t,1,no
,atomic_int8_t,1,no
,atomic_uint8_t,1,no
,atomic_int16_t,1,no
,atomic_uint16_t,1,no
,atomic_int32_t,1,no
,atomic_uint32_t,1,no
,atomic_int64_t,1,no
,atomic_uint64_t,1,no
,atomic_int_least8_t,1,no
,atomic_uint_least8_t,1,no
,atomic_int_least16_t,1,no
,atomic_uint_least16_t,1,no
,atomic_int_least32_t,1,no
,atomic_uint_least32_t,1,no
,atomic_int_least64_t,1,no
,atomic_uint_least64_t,1,no
,atomic_int_fast8_t,1,no
,atomic_uint_fast8_t,1,no
,atomic_int_fast16_t,1,no
,atomic_uint_fast16_t,1,no
,atomic_int_fast32_t,1,no
,atomic_uint_fast32_t,1,no
,atomic_int_fast64_t,1,no
,atomic_uint_fast64_t,1,no
,atomic_intptr_t,1,no
,atomic_uintptr_t,1,no
,atomic_size_t,1,no
,atomic_ptrdiff_t,1,no
,atomic_intmax_t,1,no
,atomic_uintmax_t,1,no
,atomic_uintmax_t,1,cxx20
,atomic_signed_lock_free,1,cxx11,__cpp_lib_atomic_lock_free_type_aliases
,atomic_unsigned_lock_free,1,cxx11,__cpp_lib_atomic_lock_free_type_aliases
,atomic_flag_test,1,no
,atomic_flag_test_explicit,1,no
,atomic_flag_test_and_set,1,no
,atomic_flag_test_and_set_explicit,1,no
,atomic_flag_clear,1,no
,atomic_flag_clear_explicit,1,no
,atomic_flag_wait,1,no
,atomic_flag_wait_explicit,1,no
,atomic_flag_notify_one,1,no
,atomic_flag_notify_all,1,no
,atomic_thread_fence,1,no
,atomic_signal_fence,1,no
,barrier,1,no
,bit_cast,1,no
,byteswap,1,no
,has_single_bit,1,no
,bit_ceil,1,no
,bit_floor,1,no
,bit_width,1,no
,rotl,1,no
,rotr,1,no
,countl_zero,1,no
,countl_one,1,no
,countr_zero,1,no
,countr_one,1,no
,popcount,1,no
,endian,1,no
,endian::little,1,no
,endian::big,1,no
,endian::native,1,no
,bitset,1,cxx11
,operator&,1,no
,operator|,1,no
,operator^,1,no
,operator>>,1,no
,operator<<,1,no
,chars_format,1,no
,to_chars_result,1,no
,to_chars,1,no
,from_chars_result,1,no
,from_chars,1,no
,chrono::duration,1,cxx11
,chrono::nanoseconds,1,cxx11
,chrono::microseconds,1,cxx11
,chrono::milliseconds,1,cxx11
,chrono::seconds,1,cxx11
,chrono::minutes,1,cxx11
,chrono::hours,1,cxx11
,chrono::days,1,cxx20
,chrono::weeks,1,cxx20
,chrono::months,1,cxx20
,chrono::years,1,cxx20
,chrono::duration_cast,1,cxx11
,chrono::time_point,1,cxx11
,chrono::time_point_cast,1,cxx11
,chrono::system_clock,1,cxx11
,chrono::steady_clock,1,cxx11
,chrono::high_resolution_clock,1,cxx11
,chrono::utc_clock,1,cxx20
,chrono::tai_clock,1,cxx20
,chrono::gps_clock,1,cxx20
,chrono::file_clock,1,cxx20
,chrono::local_t,1,cxx20
,chrono::clock_cast,1,cxx20
,chrono::time_zone,1,cxx20
,chrono::zoned_time,1,cxx20
,chrono::tzdb,1,cxx20
,chrono::tzdb_list,1,cxx20
,chrono::get_tzdb,1,cxx20
,chrono::get_tzdb_list,1,cxx20
,chrono::reload_tzdb,1,cxx20
,chrono::remote_version,1,cxx20
,chrono::locate_zone,1,cxx20
,chrono::leap_second,1,cxx20
,chrono::leap_second_info,1,cxx20
,chrono::get_leap_second_info,1,cxx20
# c++/106851 ,chrono::abs,1,cxx17
# c++/106851 ,chrono::floor,1,cxx17
# c++/106851 ,chrono::ceil,1,cxx17
,chrono::round,1,cxx17
,chrono::from_stream,1,cxx20
,chrono::parse,1,cxx20
# TODO the rest
# TODO
,weak_equality,1,cxx20
,strong_equality,1,cxx20
,partial_ordering,1,cxx20
,weak_ordering,1,cxx20
,strong_ordering,1,cxx20
# TODO the rest
,complex,1,cxx98
,complex_literals,0,cxx14
# TODO the rest
# TODO