diff --git a/.github/workflows/script/sort_global_qualify.py b/.github/workflows/script/sort_global_qualify.py new file mode 100644 index 0000000000..6ef0fa3136 --- /dev/null +++ b/.github/workflows/script/sort_global_qualify.py @@ -0,0 +1,148 @@ +# グローバル修飾リストと、プライマリオーバーロード特殊化リストをソートするスクリプト +# トップディレクトリで以下を実行する: +# python3 .github/workflows/script/sort_global_qualify.py +# +# GLOBAL_QUALIFY_LIST.txtのソートルール: +# 1. コメントグループと修飾グループに分ける +# 2. コメントグループはそのままの順序で、修飾グループはヘッダの辞書順にソートする +# 3. 修飾グループ内では、以下のルールでソートする: +# 3.1. 名前空間が深い順にソートする (::の数が多い順) +# 3.2. 長い名前順にソートする ("abc"と"abcdef"では後者を優先) +# 3.3. 大文字・小文字を区別する +# +# PRIMARY_OVERLOAD_SPECIALIZATION.txtのソートルール: +# 1. 空行でグループを分ける +# 1.1. 先頭行が`# header`で始まらないグループはコメントグループとみなし、位置を維持する +# 1.2. そうではないグループは、修飾グループとみなす +# 2. 修飾グループ内では、GLOBAL_QUALIFY_LIST.txtと同様のルールでソートする + +from enum import Enum +import functools +import os + +class Group(Enum): + NONE = 0 + COMMENT = 1 + QUALIFY = 2 + +def flatten(arr: list[list[str]]) -> list[str]: + return sum(arr, []) + +def load_global_qualify_list() -> list[list[str]]: + ls: list[list[str]] = [] + with open('GLOBAL_QUALIFY_LIST.txt', 'r', encoding='utf-8') as f: + file = f.read() + group_type = Group.NONE + group: list[str] = [] + for line in file.split("\n"): + if not line: + continue + + if line.startswith("#"): + if group_type != Group.COMMENT: + group_type = Group.COMMENT + if len(group) > 0: + ls.append(group) + group = [] + group.append(line) + else: + if group_type != Group.QUALIFY: + group_type = Group.QUALIFY + if len(group) > 0: + ls.append(group) + group = [] + elif not line.startswith(" "): + if len(group) > 0: + ls.append(group) + group = [] + group.append(line) + + if len(group) > 0: + ls.append(group) + return ls + +def compare(a: str, b: str) -> int: + aa = a.startswith(" ") + bb = b.startswith(" ") + if aa != bb: + return aa - bb + + x = a.split("[")[0] + y = b.split("[")[0] + x_ns = x.split("::") + y_ns = y.split("::") + if len(x_ns) != len(y_ns): + return len(y_ns) - len(x_ns) + + for x_part, y_part in zip(x_ns, y_ns): + if x_part == y_part: + continue + + min_len = min(len(x_part), len(y_part)) + if x_part[:min_len] == y_part[:min_len]: + return len(y_part) - len(x_part) + + if x_part < y_part: + return -1 + else: + return 1 + + return 0 + +def sort_global_qualify_list(): + ls = load_global_qualify_list() + + outer_sorted = sorted(ls, key=lambda x: (not x[0].startswith("#"), x[0])) + inner_sorted = [] + for group in outer_sorted: + if group[0].startswith("#"): + inner_sorted.append(group) + else: + inner_sorted.append(sorted(group, key=functools.cmp_to_key(compare))) + return flatten(inner_sorted) + +def execute_sort_global_qualify_list(): + sorted_ls = sort_global_qualify_list() + with open('GLOBAL_QUALIFY_LIST.txt', 'w', encoding='utf-8') as f: + f.write("\n".join(sorted_ls)) + +def load_primary_list() -> list[list[str]]: + ls: list[list[str]] = [] + with open('PRIMARY_OVERLOAD_SPECIALIZATION.txt', 'r', encoding='utf-8') as f: + file = f.read() + group_type = Group.NONE + group: list[str] = [] + for line in file.split("\n"): + if not line: + if len(group) > 0: + ls.append(group) + group = [] + continue + + group.append(line) + + if len(group) > 0: + ls.append(group) + return ls + +def sort_primary_list(): + ls = load_primary_list() + + outer_sorted = sorted(ls, key=lambda x: (x[0].startswith("# header"), x[0])) + inner_sorted = [] + for group in outer_sorted: + if group[0].startswith("#"): + inner_sorted.append(group) + else: + inner_sorted.append(sorted(group, key=get_inner_sort_key)) + inner_sorted.append([""]) + return flatten(inner_sorted) + +def execute_sort_primary_list(): + sorted_ls = sort_primary_list() + with open('PRIMARY_OVERLOAD_SPECIALIZATION.txt', 'w', encoding='utf-8') as f: + f.write("\n".join(sorted_ls)) + +if __name__ == '__main__': + execute_sort_global_qualify_list() + execute_sort_primary_list() diff --git a/GLOBAL_QUALIFY_LIST.txt b/GLOBAL_QUALIFY_LIST.txt index 0c4a1ab47d..f6e68b3fa9 100644 --- a/GLOBAL_QUALIFY_LIST.txt +++ b/GLOBAL_QUALIFY_LIST.txt @@ -38,23 +38,13 @@ # 7.1 ライブラリごとにオーバーロード・特殊化されているものはグローバル修飾リストに登録せず、個別ページで指定する # (std::begin/std::end、std::common_typeなど) # プライマリ宣言されている関数・クラスの一覧は、 PRIMARY_OVERLOAD_SPECIALIZATION.txt を参照 - -* floating-point-type[italic] -* implementation-defined[italic] -* import std;[link /module/std.md] -* import std.compat;[link /module/std.compat.md] -* thread_local[link /lang/cpp11/thread_local_storage.md] -* decltype(auto)[link /lang/cpp14/decltype_auto.md] -* see below[italic] -* synth-three-way-result[link /reference/exposition-only/synth-three-way-result.md] -* synth-three-way[link /reference/exposition-only/synth-three-way-result.md] * [link /reference/algorithm.md] - * ExecutionPolicy[link /reference/execution/execution/execution_policy.md] * ranges::find_if_not[link /reference/algorithm/ranges_find_if_not.md] - * std::copy[link /reference/algorithm/copy.md] * std::copy_n[link /reference/algorithm/copy_n.md] + * std::copy[link /reference/algorithm/copy.md] * std::for_each[link /reference/algorithm/for_each.md] * std::sort[link /reference/algorithm/sort.md] + * ExecutionPolicy[link /reference/execution/execution/execution_policy.md] * [link /reference/any.md] * [link /reference/array.md] * std::array[link /reference/array/array.md] @@ -86,8 +76,8 @@ * std::chrono::seconds[link /reference/chrono/duration_aliases.md] * std::chrono::years[link /reference/chrono/duration_aliases.md] * chrono::days[link /reference/chrono/duration_aliases.md] - * chrono::duration[link /reference/chrono/duration.md] * chrono::duration_cast[link /reference/chrono/duration_cast.md] + * chrono::duration[link /reference/chrono/duration.md] * chrono::hours[link /reference/chrono/duration_aliases.md] * chrono::microseconds[link /reference/chrono/duration_aliases.md] * chrono::milliseconds[link /reference/chrono/duration_aliases.md] @@ -98,8 +88,8 @@ * chrono::weeks[link /reference/chrono/duration_aliases.md] * chrono::years[link /reference/chrono/duration_aliases.md] * days[link /reference/chrono/duration_aliases.md] - * duration[link /reference/chrono/duration.md] * duration_cast[link /reference/chrono/duration_cast.md] + * duration[link /reference/chrono/duration.md] * hours[link /reference/chrono/duration_aliases.md] * microseconds[link /reference/chrono/duration_aliases.md] * milliseconds[link /reference/chrono/duration_aliases.md] @@ -110,14 +100,13 @@ * weeks[link /reference/chrono/duration_aliases.md] * years[link /reference/chrono/duration_aliases.md] * [link /reference/climits.md] +* [link /reference/cmath.md] +* [link /reference/codecvt.md] * [link /reference/compare.md] * compare_three_way_result_t[link /reference/compare/compare_three_way_result.md] * strong_ordering[link /reference/compare/strong_ordering.md] * three_way_comparable_with[link /reference/compare/three_way_comparable.md] * three_way_comparable[link /reference/compare/three_way_comparable.md] -* [link /reference/coroutine.md] -* [link /reference/cmath.md] -* [link /reference/codecvt.md] * [link /reference/complex.md] * [link /reference/concepts.md] * common_reference_with[link /reference/concepts/common_reference_with.md] @@ -132,19 +121,20 @@ * same_as[link /reference/concepts/same_as.md] * [link /reference/condition_variable.md] * std::condition_variable[link /reference/condition_variable/condition_variable.md] +* [link /reference/coroutine.md] * [link /reference/cstddef.md] - * nullptr_t[link /reference/cstddef/nullptr_t.md] * std::nullptr_t[link /reference/cstddef/nullptr_t.md] * std::size_t[link /reference/cstddef/size_t.md] + * nullptr_t[link /reference/cstddef/nullptr_t.md] * [link /reference/cstdint.md] - * std::uint8_t[link /reference/cstdint/uint8_t.md] - * std::uint16_t[link /reference/cstdint/uint16_t.md] - * std::uint32_t[link /reference/cstdint/uint32_t.md] - * std::uint64_t[link /reference/cstdint/uint64_t.md] - * std::int8_t[link /reference/cstdint/int8_t.md] * std::int16_t[link /reference/cstdint/int16_t.md] * std::int32_t[link /reference/cstdint/int32_t.md] * std::int64_t[link /reference/cstdint/int64_t.md] + * std::int8_t[link /reference/cstdint/int8_t.md] + * std::uint16_t[link /reference/cstdint/uint16_t.md] + * std::uint32_t[link /reference/cstdint/uint32_t.md] + * std::uint64_t[link /reference/cstdint/uint64_t.md] + * std::uint8_t[link /reference/cstdint/uint8_t.md] * [link /reference/cstdio.md] * [link /reference/cstdlib.md] * [link /reference/cstring.md] @@ -154,15 +144,15 @@ * std::deque[link /reference/deque/deque.md] * [link /reference/exception.md] * [link /reference/execution.md] - * std::execution::par[link /reference/execution/execution/execution_policy.md] * std::execution::par_unseq[link /reference/execution/execution/execution_policy.md] + * std::execution::par[link /reference/execution/execution/execution_policy.md] * std::execution::seq[link /reference/execution/execution/execution_policy.md] * [link /reference/expected.md] * std::expected[link /reference/expected/expected.md] * [link /reference/filesystem.md] - * fe.what()[link /reference/filesystem/filesystem_error/what.md] * fs::filesystem_error[link /reference/filesystem/filesystem_error.md] * fs::path[link /reference/filesystem/path.md] + * fe.what()[link /reference/filesystem/filesystem_error/what.md] * [link /reference/flat_map.md] * [link /reference/flat_set.md] * [link /reference/format.md] @@ -170,10 +160,10 @@ * std::forward_list[link /reference/forward_list/forward_list.md] * [link /reference/fstream.md] * [link /reference/functional.md] - * identity[link /reference/functional/identity.md] + * std::ranges::less_equal[link /reference/functional/ranges_less_equal.md] * ranges::equal_to[link /reference/functional/ranges_equal_to.md] * std::identity[link /reference/functional/identity.md] - * std::ranges::less_equal[link /reference/functional/ranges_less_equal.md] + * identity[link /reference/functional/identity.md] * [link /reference/future.md] * [link /reference/generator.md] * [link /reference/initializer_list.md] @@ -188,6 +178,17 @@ * [link /reference/istream.md] * std::basic_istream[link /reference/istream/basic_istream.md] * [link /reference/iterator.md] + * ranges::distance[link /reference/iterator/ranges_distance.md] + * ranges::iter_move[link /reference/iterator/iter_move.md] + * ranges::iter_swap[link /reference/iterator/iter_swap.md] + * std::back_inserter[link /reference/iterator/back_inserter.md] + * std::begin[link /reference/iterator/begin.md] + * std::distance[link /reference/iterator/distance.md] + * std::end[link /reference/iterator/end.md] + * std::move_iterator[link /reference/iterator/move_iterator.md] + * std::move_sentinel[link /reference/iterator/move_sentinel.md] + * std::next[link /reference/iterator/next.md] + * std::ostream_iterator[link /reference/iterator/ostream_iterator.md] * bidirectional_iterator[link /reference/iterator/bidirectional_iterator.md] * common_iterator[link /reference/iterator/common_iterator.md] * contiguous_iterator[link /reference/iterator/contiguous_iterator.md] @@ -199,26 +200,15 @@ * indirectly_comparable[link /reference/iterator/indirectly_comparable.md] * indirectly_swappable[link /reference/iterator/indirectly_swappable.md] * input_iterator[link /reference/iterator/input_iterator.md] - * iterator_traits[link /reference/iterator/iterator_traits.md] * iter_difference_t[link /reference/iterator/iter_difference_t.md] * iter_rvalue_reference_t[link /reference/iterator/iter_rvalue_reference_t.md] * iter_value_t[link /reference/iterator/iter_value_t.md] + * iterator_traits[link /reference/iterator/iterator_traits.md] * output_iterator[link /reference/iterator/output_iterator.md] - * projected[link /reference/iterator/projected.md] * projected_value_t[link /reference/iterator/projected_value_t.md] + * projected[link /reference/iterator/projected.md] * random_access_iterator[link /reference/iterator/random_access_iterator.md] - * ranges::distance[link /reference/iterator/ranges_distance.md] - * ranges::iter_move[link /reference/iterator/iter_move.md] - * ranges::iter_swap[link /reference/iterator/iter_swap.md] * sentinel_for[link /reference/iterator/sentinel_for.md] - * std::back_inserter[link /reference/iterator/back_inserter.md] - * std::begin[link /reference/iterator/begin.md] - * std::distance[link /reference/iterator/distance.md] - * std::end[link /reference/iterator/end.md] - * std::move_iterator[link /reference/iterator/move_iterator.md] - * std::move_sentinel[link /reference/iterator/move_sentinel.md] - * std::next[link /reference/iterator/next.md] - * std::ostream_iterator[link /reference/iterator/ostream_iterator.md] * unreachable_sentinel_t[link /reference/iterator/unreachable_sentinel_t.md] * [link /reference/latch.md] * [link /reference/limits.md] @@ -230,19 +220,19 @@ * [link /reference/map.md] * std::map[link /reference/map/map.md] * [link /reference/mdspan.md] - * std::extents[link /reference/mdspan/extents.md] * std::dextents[link /reference/mdspan/extents.md] + * std::extents[link /reference/mdspan/extents.md] * std::mdspan[link /reference/mdspan/mdspan.md] * [link /reference/memory.md] - * addressof[link /reference/memory/addressof.md] * std::allocator[link /reference/memory/allocator.md] * std::shared_ptr[link /reference/memory/shared_ptr.md] * std::unique_ptr[link /reference/memory/unique_ptr.md] + * addressof[link /reference/memory/addressof.md] * [link /reference/memory_resource.md] * [link /reference/mutex.md] * std::lock_guard[link /reference/mutex/lock_guard.md] - * std::unique_lock[link /reference/mutex/unique_lock.md] * std::mutex[link /reference/mutex/mutex.md] + * std::unique_lock[link /reference/mutex/unique_lock.md] * [link /reference/new.md] * [link /reference/numbers.md] * [link /reference/numeric.md] @@ -259,10 +249,16 @@ * [link /reference/random.md] * std::default_random_engine[link /reference/random/default_random_engine.md] * std::mt19937[link /reference/random/mt19937.md] - * std::uniform_int_distribution[link /reference/random/uniform_int_distribution.md] * std::random_device[link /reference/random/random_device.md] + * std::uniform_int_distribution[link /reference/random/uniform_int_distribution.md] * seed_gen()[link /reference/random/random_device/op_call.md] * [link /reference/ranges.md] + * std::ranges::owning_view[link /reference/ranges/owning_view.md] + * std::ranges::ref_view[link /reference/ranges/ref_view.md] + * std::ranges::single_view[link /reference/ranges/single_view.md] + * ranges::begin[link /reference/ranges/begin.md] + * ranges::end[link /reference/ranges/end.md] + * ranges::size[link /reference/ranges/size.md] * all_t[link /reference/ranges/all.md] * bidirectional_range[link /reference/ranges/bidirectional_range.md] * borrowed_range[link /reference/ranges/borrowed_range.md] @@ -279,27 +275,21 @@ * maybe-const[link /reference/ranges/maybe-const.md] * output_range[link /reference/ranges/output_range.md] * random_access_range[link /reference/ranges/random_access_range.md] + * range-with-movable-references[link /reference/ranges/range-with-movable-references.md] * range_difference_t[link /reference/ranges/range_difference_t.md] * range_reference_t[link /reference/ranges/range_reference_t.md] * range_rvalue_reference_t[link /reference/ranges/range_rvalue_reference_t.md] * range_size_t[link /reference/ranges/range_size_t.md] * range_value_t[link /reference/ranges/range_value_t.md] - * range-with-movable-references[link /reference/ranges/range-with-movable-references.md] * range[link /reference/ranges/range.md] - * ranges::begin[link /reference/ranges/begin.md] - * ranges::end[link /reference/ranges/end.md] - * ranges::size[link /reference/ranges/size.md] * ref_view[link /reference/ranges/ref_view.md] - * single_view[link /reference/ranges/single_view.md] * sentinel_t[link /reference/ranges/sentinel_t.md] + * single_view[link /reference/ranges/single_view.md] * sized_range[link /reference/ranges/sized_range.md] - * std::ranges::owning_view[link /reference/ranges/owning_view.md] - * std::ranges::ref_view[link /reference/ranges/ref_view.md] - * std::ranges::single_view[link /reference/ranges/single_view.md] * subrange[link /reference/ranges/subrange.md] * view_interface[link /reference/ranges/view_interface.md] - * view[link /reference/ranges/view.md] * viewable_range[link /reference/ranges/viewable_range.md] + * view[link /reference/ranges/view.md] * [link /reference/ratio.md] * [link /reference/rcu.md] * [link /reference/regex.md] @@ -310,8 +300,8 @@ * [link /reference/shared_mutex.md] * [link /reference/source_location.md] * [link /reference/span.md] - * std::span[link /reference/span/span.md] * std::dynamic_extent[link /reference/span/dynamic_extent.md] + * std::span[link /reference/span/span.md] * [link /reference/spanstream.md] * [link /reference/sstream.md] * std::istringstream[link /reference/sstream/basic_istringstream.md] @@ -333,32 +323,38 @@ * std::u32string[link /reference/string/basic_string.md] * std::wstring[link /reference/string/basic_string.md] * [link /reference/string_view.md] - * basic_string_view[link /reference/string_view/basic_string_view.md] * std::basic_string_view[link /reference/string_view/basic_string_view.md] * std::string_view[link /reference/string_view/basic_string_view.md] + * basic_string_view[link /reference/string_view/basic_string_view.md] * string_view[link /reference/string_view/basic_string_view.md] * sv.data()[link /reference/string_view/basic_string_view/data.md] * sv.size()[link /reference/string_view/basic_string_view/size.md] * [link /reference/syncstream.md] * [link /reference/system_error.md] - * ec.message()[link /reference/system_error/error_code/message.md] * std::error_code[link /reference/system_error/error_code.md] + * ec.message()[link /reference/system_error/error_code/message.md] * [link /reference/thread.md] - * std::thread[link /reference/thread/thread.md] + * std::this_thread::sleep_for[link /reference/thread/this_thread/sleep_for.md] * std::jthread[link /reference/thread/jthread.md] + * std::thread[link /reference/thread/thread.md] * t.join()[link /reference/thread/thread/join.md] * t1.join()[link /reference/thread/thread/join.md] * t2.join()[link /reference/thread/thread/join.md] * t3.join()[link /reference/thread/thread/join.md] - * std::this_thread::sleep_for[link /reference/thread/this_thread/sleep_for.md] * [link /reference/tuple.md] * std::forward_as_tuple[link /reference/tuple/forward_as_tuple.md] - * std::tuple[link /reference/tuple/tuple.md] * std::tie[link /reference/tuple/tie.md] + * std::tuple[link /reference/tuple/tuple.md] * tuple[link /reference/tuple/tuple.md] * [link /reference/type_traits.md] - * common_type_t[link /reference/type_traits/common_type.md] + * std::common_type_t[link /reference/type_traits/common_type.md] + * std::decay_t[link /reference/type_traits/decay.md] + * std::false_type[link /reference/type_traits/false_type.md] + * std::is_same_v[link /reference/type_traits/is_same.md] + * std::is_same[link /reference/type_traits/is_same.md] + * std::true_type[link /reference/type_traits/true_type.md] * common_reference_t[link /reference/type_traits/common_reference.md] + * common_type_t[link /reference/type_traits/common_type.md] * decay_t[link /reference/type_traits/decay.md] * invoke_result_t[link /reference/type_traits/invoke_result.md] * is_class_v[link /reference/type_traits/is_class.md] @@ -366,12 +362,6 @@ * remove_cv_t[link /reference/type_traits/remove_cv.md] * remove_cvref_t[link /reference/type_traits/remove_cvref.md] * remove_reference_t[link /reference/type_traits/remove_reference.md] - * std::common_type_t[link /reference/type_traits/common_type.md] - * std::decay_t[link /reference/type_traits/decay.md] - * std::false_type[link /reference/type_traits/false_type.md] - * std::is_same_v[link /reference/type_traits/is_same.md] - * std::is_same[link /reference/type_traits/is_same.md] - * std::true_type[link /reference/type_traits/true_type.md] * [link /reference/typeindex.md] * [link /reference/typeinfo.md] * [link /reference/unordered_map.md] @@ -379,14 +369,14 @@ * [link /reference/unordered_set.md] * std::unordered_set[link /reference/unordered_set/unordered_set.md] * [link /reference/utility.md] - * declval[link /reference/utility/declval.md] - * in_place_t[link /reference/utility/in_place_t.md] - * in_place[link /reference/utility/in_place_t.md] * std::exchange[link /reference/utility/exchange.md] * std::forward_like[link /reference/utility/forward_like.md] * std::forward[link /reference/utility/forward.md] * std::make_pair[link /reference/utility/make_pair.md] * std::pair[link /reference/utility/pair.md] + * declval[link /reference/utility/declval.md] + * in_place_t[link /reference/utility/in_place_t.md] + * in_place[link /reference/utility/in_place_t.md] * pair[link /reference/utility/pair.md] * piecewise_construct_t[link /reference/utility/piecewise_construct_t.md] * piecewise_construct[link /reference/utility/piecewise_construct_t.md] @@ -408,3 +398,12 @@ * v3.begin()[link /reference/vector/vector/begin.md] * v3.end()[link /reference/vector/vector/end.md] * v3.size()[link /reference/vector/vector/size.md] +* decltype(auto)[link /lang/cpp14/decltype_auto.md] +* floating-point-type[italic] +* implementation-defined[italic] +* import std.compat;[link /module/std.compat.md] +* import std;[link /module/std.md] +* see below[italic] +* synth-three-way-result[link /reference/exposition-only/synth-three-way-result.md] +* synth-three-way[link /reference/exposition-only/synth-three-way-result.md] +* thread_local[link /lang/cpp11/thread_local_storage.md] \ No newline at end of file diff --git a/PRIMARY_OVERLOAD_SPECIALIZATION.txt b/PRIMARY_OVERLOAD_SPECIALIZATION.txt index c3991a4358..b97505760e 100644 --- a/PRIMARY_OVERLOAD_SPECIALIZATION.txt +++ b/PRIMARY_OVERLOAD_SPECIALIZATION.txt @@ -5,11 +5,11 @@ # 2. ただし、長い名前を優先して登録する # 3. プライマリ宣言をどれかひとつに特定できない場合、[link]のように空リンクにする -# +# header * std::iter_swap[link /reference/algorithm/iter_swap.md] # iteratorにもある -# +# header * std::atomic_compare_exchange_strong_explicit[link /reference/atomic/atomic_compare_exchange_strong_explicit.md] # memoryでオーバーロードされている * std::atomic_compare_exchange_strong[link /reference/atomic/atomic_compare_exchange_strong.md] @@ -25,11 +25,11 @@ * std::atomic_store[link /reference/atomic/atomic_store.md] * std::atomic[link /reference/atomic/atomic.md] -# +# header * std::tolower[link /reference/cctype/tolower.md] * std::toupper[link /reference/cctype/toupper.md] -# +# header * std::acosh[link /reference/cmath/acosh.md] # complexでオーバーロードされている * std::acos[link /reference/cmath/acos.md] @@ -72,48 +72,50 @@ * std::tan[link /reference/cmath/tan.md] # valarrayとcomplexでオーバーロードされている -# +# header * std::remove[link /reference/cstdio/remove.md] # algorithmでオーバーロードされている -# +# header * std::abs[link /reference/cstdlib/abs.md] # cmathとvalarrayとcomplexでオーバーロードされている -# +# header * std::unexpected[link /reference/expected/unexpected.md] # exceptionにもある。先に登録されたのはそちらだが、すでに機能削除されている -# -* std::formatter (いろんなところで特殊化されている。プライマリはformat) -* std::enable_nonlocking_formatter_optimization (chronoで特殊化されている。プライマリはformat) +# header +* std::formatter[link] + # いろんなところで特殊化されている。プライマリはformat +* std::enable_nonlocking_formatter_optimization[link] + # chronoで特殊化されている。プライマリはformat -# +# header * operator>>[link /reference/istream/basic_istream/op_istream_free.md] - * あちこちでオーバーロードされている + # あちこちでオーバーロードされている -# - * std::begin[link /reference/iterator/begin.md] - * std::end[link /reference/iterator/end.md] +# header +* std::begin[link /reference/iterator/begin.md] +* std::end[link /reference/iterator/end.md] -# +# header * std::uses_allocator[link /reference/memory/uses_allocator.md] - * flat_mapとflat_setとfutureで特殊化されている + # flat_mapとflat_setとfutureで特殊化されている -# +# header * operator<<[link /reference/ostream/basic_ostream/op_ostream_free.md] - * あちこちでオーバーロードされている + # あちこちでオーバーロードされている -# +# header * std::println[link /reference/print/println.md] - * ostreamでオーバーロードされている + # ostreamでオーバーロードされている * std::print[link /reference/print/print.md] - * ostreamでオーバーロードされている + # ostreamでオーバーロードされている * std::vprint_unicode[link /reference/print/vprint_unicode.md] - * ostreamでオーバーロードされている + # ostreamでオーバーロードされている * std::vprint_nonunicode[link /reference/print/vprint_nonunicode.md] -# +# header * is_error_code_enum[link /reference/system_error/is_error_code_enum.md] # futureで特殊化されている * make_error_code[link /reference/system_error/make_error_code.md] @@ -121,7 +123,7 @@ * make_error_condition[link /reference/system_error/make_error_condition.md] # futureでオーバーロードされている -# +# header * std::tuple_size[link /reference/tuple/tuple_size.md] # std::arrayとstd::complexが特殊化している * std::tuple_element[link /reference/tuple/tuple_element.md] @@ -129,17 +131,17 @@ * std::get[link /reference/tuple/tuple/get.md] # std::arrayとstd::complexとstd::variantがオーバーロードしている -# +# header * std::basic_common_reference[link /reference/type_traits/basic_common_reference.md] # tupleとutilityで特殊化されている * std::common_type[link /reference/type_traits/common_type.md] # chronoで特殊化されている -# +# header * std::move[link /reference/utility/move.md] * std::swap[link /reference/utility/swap.md] - +# header none * operator==[link] * operator!=[link] * operator<=>[link]