[libcxx-commits] [libcxx] [libc++][RFC] Refactor attributes to [[attribute_macro]] (PR #130099)
via libcxx-commits
libcxx-commits at lists.llvm.org
Sat Mar 8 06:29:23 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
This is mostly a different way to add attributes everywhere, but I think it makes the code quite a bit easier to read for a few reasons:
- The square bracket syntax makes it more obvious what parts of the declaration are attributes, even if you don't know what all the attributes do.
- At least in my editor, the brackets are syntax-highlighted, so it's easier for me to find the end of the list, since I don't have to read all the attribute stuff to find the interesting parts (or vice versa, if I want to look for a particular attibutes, it's nicely highlighted where to find them)
- The names are less obnoxious to read, since we don't need to capitalize everything to distinguish between normal code and macros. (At least I think it's OK to use \_\_snake\_case for the attributes here)
---
Patch is 388.65 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/130099.diff
274 Files Affected:
- (modified) libcxx/.clang-format (-7)
- (modified) libcxx/docs/DesignDocs/VisibilityMacros.rst (+2-2)
- (modified) libcxx/include/__algorithm/shuffle.h (+2-2)
- (modified) libcxx/include/__atomic/atomic.h (+2-2)
- (modified) libcxx/include/__chrono/duration.h (+5-5)
- (modified) libcxx/include/__chrono/formatter.h (+23-22)
- (modified) libcxx/include/__chrono/parser_std_format_spec.h (+1-1)
- (modified) libcxx/include/__chrono/time_point.h (+2-2)
- (modified) libcxx/include/__compare/common_comparison_category.h (+1-1)
- (modified) libcxx/include/__compare/compare_three_way.h (+1-1)
- (modified) libcxx/include/__compare/compare_three_way_result.h (+1-1)
- (modified) libcxx/include/__config (+23-29)
- (modified) libcxx/include/__coroutine/coroutine_handle.h (+3-3)
- (modified) libcxx/include/__coroutine/noop_coroutine_handle.h (+1-1)
- (modified) libcxx/include/__exception/operations.h (+1-1)
- (modified) libcxx/include/__filesystem/u8path.h (+3-3)
- (modified) libcxx/include/__format/buffer.h (+11-11)
- (modified) libcxx/include/__format/container_adaptor.h (+4-4)
- (modified) libcxx/include/__format/format_arg.h (+5-6)
- (modified) libcxx/include/__format/format_arg_store.h (+1-1)
- (modified) libcxx/include/__format/format_args.h (+1-1)
- (modified) libcxx/include/__format/format_context.h (+4-9)
- (modified) libcxx/include/__format/format_functions.h (+5-5)
- (modified) libcxx/include/__format/format_parse_context.h (+1-1)
- (modified) libcxx/include/__format/format_string.h (+1-1)
- (modified) libcxx/include/__format/format_to_n_result.h (+1-1)
- (modified) libcxx/include/__format/formatter.h (+1-1)
- (modified) libcxx/include/__format/formatter_bool.h (+1-1)
- (modified) libcxx/include/__format/formatter_char.h (+4-4)
- (modified) libcxx/include/__format/formatter_floating_point.h (+5-5)
- (modified) libcxx/include/__format/formatter_integer.h (+13-13)
- (modified) libcxx/include/__format/formatter_integral.h (+3-3)
- (modified) libcxx/include/__format/formatter_pointer.h (+4-4)
- (modified) libcxx/include/__format/formatter_string.h (+6-6)
- (modified) libcxx/include/__format/formatter_tuple.h (+3-3)
- (modified) libcxx/include/__format/parser_std_format_spec.h (+1-1)
- (modified) libcxx/include/__format/range_default_formatter.h (+7-7)
- (modified) libcxx/include/__format/range_formatter.h (+1-1)
- (modified) libcxx/include/__functional/binary_function.h (+4-4)
- (modified) libcxx/include/__functional/binary_negate.h (+2-2)
- (modified) libcxx/include/__functional/binder1st.h (+3-3)
- (modified) libcxx/include/__functional/binder2nd.h (+3-3)
- (modified) libcxx/include/__functional/boyer_moore_searcher.h (+2-2)
- (modified) libcxx/include/__functional/default_searcher.h (+1-1)
- (modified) libcxx/include/__functional/function.h (+3-3)
- (modified) libcxx/include/__functional/hash.h (+26-26)
- (modified) libcxx/include/__functional/mem_fun_ref.h (+23-17)
- (modified) libcxx/include/__functional/operations.h (+38-38)
- (modified) libcxx/include/__functional/pointer_to_binary_function.h (+3-3)
- (modified) libcxx/include/__functional/pointer_to_unary_function.h (+3-3)
- (modified) libcxx/include/__functional/reference_wrapper.h (+1-1)
- (modified) libcxx/include/__functional/unary_function.h (+3-3)
- (modified) libcxx/include/__functional/unary_negate.h (+3-3)
- (modified) libcxx/include/__functional/weak_result_type.h (+11-11)
- (modified) libcxx/include/__fwd/array.h (+1-1)
- (modified) libcxx/include/__fwd/complex.h (+1-1)
- (modified) libcxx/include/__fwd/deque.h (+1-1)
- (modified) libcxx/include/__fwd/format.h (+3-3)
- (modified) libcxx/include/__fwd/fstream.h (+4-4)
- (modified) libcxx/include/__fwd/functional.h (+2-2)
- (modified) libcxx/include/__fwd/ios.h (+1-1)
- (modified) libcxx/include/__fwd/istream.h (+2-2)
- (modified) libcxx/include/__fwd/memory.h (+2-2)
- (modified) libcxx/include/__fwd/memory_resource.h (+1-1)
- (modified) libcxx/include/__fwd/ostream.h (+1-1)
- (modified) libcxx/include/__fwd/pair.h (+1-1)
- (modified) libcxx/include/__fwd/queue.h (+2-2)
- (modified) libcxx/include/__fwd/sstream.h (+4-4)
- (modified) libcxx/include/__fwd/stack.h (+1-1)
- (modified) libcxx/include/__fwd/streambuf.h (+1-1)
- (modified) libcxx/include/__fwd/string.h (+2-2)
- (modified) libcxx/include/__fwd/string_view.h (+1-1)
- (modified) libcxx/include/__fwd/subrange.h (+1-1)
- (modified) libcxx/include/__fwd/tuple.h (+3-3)
- (modified) libcxx/include/__fwd/variant.h (+3-3)
- (modified) libcxx/include/__fwd/vector.h (+1-1)
- (modified) libcxx/include/__hash_table (+22-22)
- (modified) libcxx/include/__ios/fpos.h (+1-1)
- (modified) libcxx/include/__iterator/back_insert_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/front_insert_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/insert_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/istream_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/istreambuf_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/iterator.h (+1-1)
- (modified) libcxx/include/__iterator/iterator_traits.h (+9-9)
- (modified) libcxx/include/__iterator/move_iterator.h (+2-2)
- (modified) libcxx/include/__iterator/move_sentinel.h (+1-1)
- (modified) libcxx/include/__iterator/ostream_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/ostreambuf_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/reverse_iterator.h (+1-1)
- (modified) libcxx/include/__iterator/wrap_iter.h (+3-3)
- (modified) libcxx/include/__locale (+12-12)
- (modified) libcxx/include/__memory/allocator.h (+19-19)
- (modified) libcxx/include/__memory/allocator_arg_t.h (+1-1)
- (modified) libcxx/include/__memory/allocator_traits.h (+1-1)
- (modified) libcxx/include/__memory/auto_ptr.h (+3-3)
- (modified) libcxx/include/__memory/inout_ptr.h (+1-1)
- (modified) libcxx/include/__memory/out_ptr.h (+1-1)
- (modified) libcxx/include/__memory/pointer_traits.h (+2-2)
- (modified) libcxx/include/__memory/raw_storage_iterator.h (+1-1)
- (modified) libcxx/include/__memory/shared_ptr.h (+19-18)
- (modified) libcxx/include/__memory/temporary_buffer.h (+2-2)
- (modified) libcxx/include/__memory/unique_ptr.h (+10-9)
- (modified) libcxx/include/__memory/uses_allocator.h (+1-1)
- (modified) libcxx/include/__memory_resource/polymorphic_allocator.h (+1-1)
- (modified) libcxx/include/__mutex/lock_guard.h (+1-1)
- (modified) libcxx/include/__mutex/once_flag.h (+2-2)
- (modified) libcxx/include/__mutex/unique_lock.h (+1-1)
- (modified) libcxx/include/__node_handle (+2-2)
- (modified) libcxx/include/__ostream/basic_ostream.h (+3-3)
- (modified) libcxx/include/__random/bernoulli_distribution.h (+2-2)
- (modified) libcxx/include/__random/binomial_distribution.h (+2-2)
- (modified) libcxx/include/__random/cauchy_distribution.h (+2-2)
- (modified) libcxx/include/__random/chi_squared_distribution.h (+2-2)
- (modified) libcxx/include/__random/discard_block_engine.h (+1-1)
- (modified) libcxx/include/__random/discrete_distribution.h (+2-2)
- (modified) libcxx/include/__random/exponential_distribution.h (+2-2)
- (modified) libcxx/include/__random/extreme_value_distribution.h (+2-2)
- (modified) libcxx/include/__random/fisher_f_distribution.h (+2-2)
- (modified) libcxx/include/__random/gamma_distribution.h (+2-2)
- (modified) libcxx/include/__random/geometric_distribution.h (+2-2)
- (modified) libcxx/include/__random/independent_bits_engine.h (+1-1)
- (modified) libcxx/include/__random/linear_congruential_engine.h (+2-2)
- (modified) libcxx/include/__random/lognormal_distribution.h (+2-2)
- (modified) libcxx/include/__random/mersenne_twister_engine.h (+2-2)
- (modified) libcxx/include/__random/negative_binomial_distribution.h (+2-2)
- (modified) libcxx/include/__random/normal_distribution.h (+2-2)
- (modified) libcxx/include/__random/piecewise_constant_distribution.h (+2-2)
- (modified) libcxx/include/__random/piecewise_linear_distribution.h (+2-2)
- (modified) libcxx/include/__random/poisson_distribution.h (+2-2)
- (modified) libcxx/include/__random/seed_seq.h (+1-1)
- (modified) libcxx/include/__random/shuffle_order_engine.h (+1-1)
- (modified) libcxx/include/__random/student_t_distribution.h (+2-2)
- (modified) libcxx/include/__random/subtract_with_carry_engine.h (+2-2)
- (modified) libcxx/include/__random/uniform_real_distribution.h (+2-2)
- (modified) libcxx/include/__random/weibull_distribution.h (+2-2)
- (modified) libcxx/include/__ranges/non_propagating_cache.h (+1-1)
- (modified) libcxx/include/__ranges/subrange.h (+1-1)
- (modified) libcxx/include/__string/char_traits.h (+5-5)
- (modified) libcxx/include/__system_error/errc.h (+4-4)
- (modified) libcxx/include/__system_error/error_code.h (+2-2)
- (modified) libcxx/include/__system_error/error_condition.h (+4-4)
- (modified) libcxx/include/__thread/formatter.h (+1-1)
- (modified) libcxx/include/__thread/id.h (+2-2)
- (modified) libcxx/include/__thread/thread.h (+1-1)
- (modified) libcxx/include/__tree (+23-23)
- (modified) libcxx/include/__tuple/sfinae_helpers.h (+1-1)
- (modified) libcxx/include/__tuple/tuple_element.h (+5-5)
- (modified) libcxx/include/__tuple/tuple_size.h (+16-13)
- (modified) libcxx/include/__type_traits/add_cv_quals.h (+3-3)
- (modified) libcxx/include/__type_traits/aligned_storage.h (+2-2)
- (modified) libcxx/include/__type_traits/aligned_union.h (+2-2)
- (modified) libcxx/include/__type_traits/alignment_of.h (+1-1)
- (modified) libcxx/include/__type_traits/common_type.h (+5-5)
- (modified) libcxx/include/__type_traits/conditional.h (+2-2)
- (modified) libcxx/include/__type_traits/decay.h (+1-1)
- (modified) libcxx/include/__type_traits/dependent_type.h (+1-1)
- (modified) libcxx/include/__type_traits/enable_if.h (+2-2)
- (modified) libcxx/include/__type_traits/extent.h (+8-6)
- (modified) libcxx/include/__type_traits/has_unique_object_representation.h (+1-1)
- (modified) libcxx/include/__type_traits/has_virtual_destructor.h (+1-1)
- (modified) libcxx/include/__type_traits/integral_constant.h (+1-1)
- (modified) libcxx/include/__type_traits/invoke.h (+6-5)
- (modified) libcxx/include/__type_traits/is_abstract.h (+1-1)
- (modified) libcxx/include/__type_traits/is_aggregate.h (+1-1)
- (modified) libcxx/include/__type_traits/is_arithmetic.h (+1-1)
- (modified) libcxx/include/__type_traits/is_array.h (+4-4)
- (modified) libcxx/include/__type_traits/is_assignable.h (+3-3)
- (modified) libcxx/include/__type_traits/is_base_of.h (+2-2)
- (modified) libcxx/include/__type_traits/is_bounded_array.h (+2-2)
- (modified) libcxx/include/__type_traits/is_class.h (+2-1)
- (modified) libcxx/include/__type_traits/is_compound.h (+2-2)
- (modified) libcxx/include/__type_traits/is_const.h (+3-3)
- (modified) libcxx/include/__type_traits/is_constructible.h (+4-4)
- (modified) libcxx/include/__type_traits/is_convertible.h (+1-1)
- (modified) libcxx/include/__type_traits/is_destructible.h (+1-1)
- (modified) libcxx/include/__type_traits/is_empty.h (+2-1)
- (modified) libcxx/include/__type_traits/is_enum.h (+2-2)
- (modified) libcxx/include/__type_traits/is_final.h (+3-2)
- (modified) libcxx/include/__type_traits/is_floating_point.h (+1-1)
- (modified) libcxx/include/__type_traits/is_function.h (+2-1)
- (modified) libcxx/include/__type_traits/is_fundamental.h (+2-2)
- (modified) libcxx/include/__type_traits/is_implicit_lifetime.h (+1-1)
- (modified) libcxx/include/__type_traits/is_integral.h (+3-2)
- (modified) libcxx/include/__type_traits/is_literal_type.h (+3-2)
- (modified) libcxx/include/__type_traits/is_member_pointer.h (+4-3)
- (modified) libcxx/include/__type_traits/is_nothrow_assignable.h (+3-3)
- (modified) libcxx/include/__type_traits/is_nothrow_constructible.h (+4-4)
- (modified) libcxx/include/__type_traits/is_nothrow_destructible.h (+6-6)
- (modified) libcxx/include/__type_traits/is_null_pointer.h (+1-1)
- (modified) libcxx/include/__type_traits/is_object.h (+1-1)
- (modified) libcxx/include/__type_traits/is_pod.h (+1-1)
- (modified) libcxx/include/__type_traits/is_pointer.h (+2-2)
- (modified) libcxx/include/__type_traits/is_polymorphic.h (+1-1)
- (modified) libcxx/include/__type_traits/is_reference.h (+9-9)
- (modified) libcxx/include/__type_traits/is_same.h (+1-1)
- (modified) libcxx/include/__type_traits/is_scalar.h (+3-3)
- (modified) libcxx/include/__type_traits/is_signed.h (+2-2)
- (modified) libcxx/include/__type_traits/is_standard_layout.h (+1-1)
- (modified) libcxx/include/__type_traits/is_swappable.h (+4-4)
- (modified) libcxx/include/__type_traits/is_trivial.h (+2-2)
- (modified) libcxx/include/__type_traits/is_trivially_assignable.h (+2-2)
- (modified) libcxx/include/__type_traits/is_trivially_constructible.h (+4-4)
- (modified) libcxx/include/__type_traits/is_trivially_copyable.h (+1-1)
- (modified) libcxx/include/__type_traits/is_trivially_destructible.h (+2-2)
- (modified) libcxx/include/__type_traits/is_unbounded_array.h (+2-2)
- (modified) libcxx/include/__type_traits/is_union.h (+2-1)
- (modified) libcxx/include/__type_traits/is_unsigned.h (+2-2)
- (modified) libcxx/include/__type_traits/is_void.h (+2-1)
- (modified) libcxx/include/__type_traits/is_volatile.h (+3-3)
- (modified) libcxx/include/__type_traits/rank.h (+3-3)
- (modified) libcxx/include/__type_traits/remove_all_extents.h (+3-3)
- (modified) libcxx/include/__type_traits/remove_const.h (+2-2)
- (modified) libcxx/include/__type_traits/remove_extent.h (+3-3)
- (modified) libcxx/include/__type_traits/remove_pointer.h (+5-5)
- (modified) libcxx/include/__type_traits/remove_volatile.h (+2-2)
- (modified) libcxx/include/__type_traits/result_of.h (+3-3)
- (modified) libcxx/include/__utility/in_place.h (+2-2)
- (modified) libcxx/include/__utility/integer_sequence.h (+1-1)
- (modified) libcxx/include/__utility/pair.h (+5-5)
- (modified) libcxx/include/__utility/piecewise_construct.h (+1-1)
- (modified) libcxx/include/__utility/rel_ops.h (+4-4)
- (modified) libcxx/include/__variant/monostate.h (+4-4)
- (modified) libcxx/include/__vector/vector.h (+1-1)
- (modified) libcxx/include/__vector/vector_bool.h (+3-3)
- (modified) libcxx/include/__vector/vector_bool_formatter.h (+1-1)
- (modified) libcxx/include/any (+5-5)
- (modified) libcxx/include/array (+4-4)
- (modified) libcxx/include/bitset (+3-3)
- (modified) libcxx/include/ccomplex (+3-3)
- (modified) libcxx/include/ciso646 (+2-2)
- (modified) libcxx/include/codecvt (+6-5)
- (modified) libcxx/include/complex (+7-7)
- (modified) libcxx/include/cstdalign (+3-3)
- (modified) libcxx/include/cstdbool (+4-4)
- (modified) libcxx/include/ctgmath (+3-2)
- (modified) libcxx/include/deque (+4-4)
- (modified) libcxx/include/experimental/type_traits (+4-4)
- (modified) libcxx/include/experimental/utility (+1-1)
- (modified) libcxx/include/ext/__hash (+12-12)
- (modified) libcxx/include/ext/hash_map (+13-13)
- (modified) libcxx/include/ext/hash_set (+2-2)
- (modified) libcxx/include/forward_list (+7-7)
- (modified) libcxx/include/fstream (+4-4)
- (modified) libcxx/include/future (+17-17)
- (modified) libcxx/include/initializer_list (+1-1)
- (modified) libcxx/include/ios (+3-3)
- (modified) libcxx/include/iosfwd (+3-3)
- (modified) libcxx/include/istream (+4-4)
- (modified) libcxx/include/limits (+39-37)
- (modified) libcxx/include/list (+5-5)
- (modified) libcxx/include/locale (+16-16)
- (modified) libcxx/include/map (+16-16)
- (modified) libcxx/include/mutex (+4-4)
- (modified) libcxx/include/optional (+3-3)
- (modified) libcxx/include/queue (+5-5)
- (modified) libcxx/include/ratio (+11-11)
- (modified) libcxx/include/regex (+11-11)
- (modified) libcxx/include/scoped_allocator (+1-1)
- (modified) libcxx/include/set (+6-6)
- (modified) libcxx/include/span (+2-2)
- (modified) libcxx/include/sstream (+4-4)
- (modified) libcxx/include/stack (+3-3)
- (modified) libcxx/include/streambuf (+1-1)
- (modified) libcxx/include/string (+10-10)
- (modified) libcxx/include/strstream (+4-4)
- (modified) libcxx/include/syncstream (+2-2)
- (modified) libcxx/include/tuple (+3-3)
- (modified) libcxx/include/typeindex (+3-3)
- (modified) libcxx/include/unordered_map (+17-17)
- (modified) libcxx/include/unordered_set (+6-6)
- (modified) libcxx/include/valarray (+18-18)
- (modified) libcxx/include/variant (+36-34)
- (modified) libcxx/src/locale.cpp (+2-2)
``````````diff
diff --git a/libcxx/.clang-format b/libcxx/.clang-format
index f548119652c19..41a9af50ae1d9 100644
--- a/libcxx/.clang-format
+++ b/libcxx/.clang-format
@@ -24,12 +24,6 @@ AttributeMacros: [
'_LIBCPP_CONSTEXPR_SINCE_CXX23',
'_LIBCPP_CONSTEXPR',
'_LIBCPP_CONSTINIT',
- '_LIBCPP_DEPRECATED_IN_CXX11',
- '_LIBCPP_DEPRECATED_IN_CXX14',
- '_LIBCPP_DEPRECATED_IN_CXX17',
- '_LIBCPP_DEPRECATED_IN_CXX20',
- '_LIBCPP_DEPRECATED_IN_CXX23',
- '_LIBCPP_DEPRECATED',
'_LIBCPP_DISABLE_EXTENSION_WARNING',
'_LIBCPP_EXCLUDE_FROM_EXPLICIT_INSTANTIATION',
'_LIBCPP_EXPORTED_FROM_ABI',
@@ -45,7 +39,6 @@ AttributeMacros: [
'_LIBCPP_OVERRIDABLE_FUNC_VIS',
'_LIBCPP_STANDALONE_DEBUG',
'_LIBCPP_TEMPLATE_DATA_VIS',
- '_LIBCPP_TEMPLATE_VIS',
'_LIBCPP_THREAD_SAFETY_ANNOTATION',
'_LIBCPP_USING_IF_EXISTS',
'_LIBCPP_WEAK',
diff --git a/libcxx/docs/DesignDocs/VisibilityMacros.rst b/libcxx/docs/DesignDocs/VisibilityMacros.rst
index 83a9a62942bc9..07b1de0d5b7b3 100644
--- a/libcxx/docs/DesignDocs/VisibilityMacros.rst
+++ b/libcxx/docs/DesignDocs/VisibilityMacros.rst
@@ -64,7 +64,7 @@ Visibility Macros
ABI, we should create a new _LIBCPP_HIDE_FROM_ABI_AFTER_XXX macro, and we can
use it to start removing symbols from the ABI after that stable version.
-**_LIBCPP_TEMPLATE_VIS**
+**__libcpp_template_vis**
Mark a type's typeinfo and vtable as having default visibility.
This macro has no effect on the visibility of the type's member functions.
@@ -80,7 +80,7 @@ Visibility Macros
an extern template declaration as being exported by the libc++ library.
This attribute must be specified on all extern class template declarations.
- This macro is used to override the `_LIBCPP_TEMPLATE_VIS` attribute
+ This macro is used to override the `__libcpp_template_vis` attribute
specified on the primary template and to export the member functions produced
by the explicit instantiation in the dylib.
diff --git a/libcxx/include/__algorithm/shuffle.h b/libcxx/include/__algorithm/shuffle.h
index 7177fbb469ba7..db1eba7810c66 100644
--- a/libcxx/include/__algorithm/shuffle.h
+++ b/libcxx/include/__algorithm/shuffle.h
@@ -92,7 +92,7 @@ class _LIBCPP_EXPORTED_FROM_ABI __rs_default {
_LIBCPP_EXPORTED_FROM_ABI __rs_default __rs_get();
template <class _RandomAccessIterator>
-_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void
+_LIBCPP_HIDE_FROM_ABI [[__libcpp_deprecated_in_cxx14("std::shuffle should be used instead")]] void
random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) {
typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
typedef uniform_int_distribution<ptrdiff_t> _Dp;
@@ -110,7 +110,7 @@ random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) {
}
template <class _RandomAccessIterator, class _RandomNumberGenerator>
-_LIBCPP_HIDE_FROM_ABI _LIBCPP_DEPRECATED_IN_CXX14 void
+_LIBCPP_HIDE_FROM_ABI [[__libcpp_deprecated_in_cxx14("std::shuffle should be used instead")]] void
random_shuffle(_RandomAccessIterator __first,
_RandomAccessIterator __last,
# ifndef _LIBCPP_CXX03_LANG
diff --git a/libcxx/include/__atomic/atomic.h b/libcxx/include/__atomic/atomic.h
index c65f9afe4f390..8fbd146f650f1 100644
--- a/libcxx/include/__atomic/atomic.h
+++ b/libcxx/include/__atomic/atomic.h
@@ -467,13 +467,13 @@ _LIBCPP_HIDE_FROM_ABI bool atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
// atomic_init
template <class _Tp>
-_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI void
+[[__libcpp_deprecated_in_cxx20()]] _LIBCPP_HIDE_FROM_ABI void
atomic_init(volatile atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT {
std::__cxx_atomic_init(std::addressof(__o->__a_), __d);
}
template <class _Tp>
-_LIBCPP_DEPRECATED_IN_CXX20 _LIBCPP_HIDE_FROM_ABI void
+[[__libcpp_deprecated_in_cxx20()]] _LIBCPP_HIDE_FROM_ABI void
atomic_init(atomic<_Tp>* __o, typename atomic<_Tp>::value_type __d) _NOEXCEPT {
std::__cxx_atomic_init(std::addressof(__o->__a_), __d);
}
diff --git a/libcxx/include/__chrono/duration.h b/libcxx/include/__chrono/duration.h
index 941aca6009599..774de3a8eb349 100644
--- a/libcxx/include/__chrono/duration.h
+++ b/libcxx/include/__chrono/duration.h
@@ -32,7 +32,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
namespace chrono {
template <class _Rep, class _Period = ratio<1> >
-class _LIBCPP_TEMPLATE_VIS duration;
+class [[__libcpp_template_vis]] duration;
template <class _Tp>
inline const bool __is_duration_v = false;
@@ -52,7 +52,7 @@ inline const bool __is_duration_v<const volatile duration<_Rep, _Period> > = tru
} // namespace chrono
template <class _Rep1, class _Period1, class _Rep2, class _Period2>
-struct _LIBCPP_TEMPLATE_VIS common_type<chrono::duration<_Rep1, _Period1>, chrono::duration<_Rep2, _Period2> > {
+struct [[__libcpp_template_vis]] common_type<chrono::duration<_Rep1, _Period1>, chrono::duration<_Rep2, _Period2> > {
typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type, __ratio_gcd<_Period1, _Period2> > type;
};
@@ -107,7 +107,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration duration_cast(const d
}
template <class _Rep>
-struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {};
+struct [[__libcpp_template_vis]] treat_as_floating_point : is_floating_point<_Rep> {};
#if _LIBCPP_STD_VER >= 17
template <class _Rep>
@@ -115,7 +115,7 @@ inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<_Rep>:
#endif
template <class _Rep>
-struct _LIBCPP_TEMPLATE_VIS duration_values {
+struct [[__libcpp_template_vis]] duration_values {
public:
_LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR _Rep zero() _NOEXCEPT { return _Rep(0); }
_LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR _Rep max() _NOEXCEPT { return numeric_limits<_Rep>::max(); }
@@ -156,7 +156,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration round(const duration<
// duration
template <class _Rep, class _Period>
-class _LIBCPP_TEMPLATE_VIS duration {
+class [[__libcpp_template_vis]] duration {
static_assert(!__is_duration_v<_Rep>, "A duration representation can not be a duration");
static_assert(__is_ratio_v<_Period>, "Second template parameter of duration must be a std::ratio");
static_assert(_Period::num > 0, "duration period must be positive");
diff --git a/libcxx/include/__chrono/formatter.h b/libcxx/include/__chrono/formatter.h
index 7b081f92667b5..0d5b6390df2b9 100644
--- a/libcxx/include/__chrono/formatter.h
+++ b/libcxx/include/__chrono/formatter.h
@@ -698,7 +698,7 @@ __format_chrono(const _Tp& __value,
} // namespace __formatter
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS __formatter_chrono {
+struct [[__libcpp_template_vis]] __formatter_chrono {
public:
template <class _ParseContext>
_LIBCPP_HIDE_FROM_ABI constexpr typename _ParseContext::iterator
@@ -716,7 +716,7 @@ struct _LIBCPP_TEMPLATE_VIS __formatter_chrono {
};
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::sys_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::sys_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -730,7 +730,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::sys_time<_Duration>, _CharT> : pub
# if _LIBCPP_HAS_EXPERIMENTAL_TZDB
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::utc_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::utc_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -741,7 +741,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::utc_time<_Duration>, _CharT> : pub
};
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::tai_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::tai_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -752,7 +752,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::tai_time<_Duration>, _CharT> : pub
};
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::gps_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::gps_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -766,7 +766,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::gps_time<_Duration>, _CharT> : pub
# endif // _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::file_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::file_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -777,7 +777,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::file_time<_Duration>, _CharT> : pu
};
template <class _Duration, __fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::local_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::local_time<_Duration>, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -811,7 +811,7 @@ struct formatter<chrono::duration<_Rep, _Period>, _CharT> : public __formatter_c
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::day, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::day, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -822,7 +822,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::day, _CharT> : public __formatter_
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::month, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -833,7 +833,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month, _CharT> : public __formatte
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::year, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -844,7 +844,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year, _CharT> : public __formatter
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::weekday, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -855,7 +855,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday, _CharT> : public __format
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_indexed, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::weekday_indexed, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -866,7 +866,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_indexed, _CharT> : public
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_last, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::weekday_last, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -877,7 +877,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::weekday_last, _CharT> : public __f
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::month_day, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -888,7 +888,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day, _CharT> : public __form
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day_last, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::month_day_last, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -899,7 +899,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_day_last, _CharT> : public _
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::month_weekday, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -910,7 +910,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday, _CharT> : public __
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -921,7 +921,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::month_weekday_last, _CharT> : publ
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::year_month, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -932,7 +932,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month, _CharT> : public __for
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::year_month_day, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -943,7 +943,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day, _CharT> : public _
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day_last, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::year_month_day_last, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -954,7 +954,7 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_day_last, _CharT> : pub
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_weekday, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]] formatter<chrono::year_month_weekday, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
@@ -965,7 +965,8 @@ struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_weekday, _CharT> : publ
};
template <__fmt_char_type _CharT>
-struct _LIBCPP_TEMPLATE_VIS formatter<chrono::year_month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
+struct [[__libcpp_template_vis]]
+formatter<chrono::year_month_weekday_last, _CharT> : public __formatter_chrono<_CharT> {
public:
using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
diff --git a/libcxx/include/__chrono/parser_std_format_spec.h b/libcxx/include/__chrono/parser_std_format_spec.h
index 4df8e603c6bcf..6b72cb78859e3 100644
--- a/libcxx/include/__chrono/parser_std_format_spec.h
+++ b/libcxx/include/__chrono/parser_std_format_spec.h
@@ -139,7 +139,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr void __validate_time_zone(__flags __flags) {
}
template <class _CharT>
-class _LIBCPP_TEMPLATE_VIS __parser_chrono {
+class [[__libcpp_template_vis]] __parser_chrono {
using _ConstIterator _LIBCPP_NODEBUG = typename basic_format_parse_context<_CharT>::const_iterator;
public:
diff --git a/libcxx/include/__chrono/time_point.h b/libcxx/include/__chrono/time_point.h
index 5e79fa5d257fa..8ca5240bedd9c 100644
--- a/libcxx/include/__chrono/time_point.h
+++ b/libcxx/include/__chrono/time_point.h
@@ -31,7 +31,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
namespace chrono {
template <class _Clock, class _Duration = typename _Clock::duration>
-class _LIBCPP_TEMPLATE_VIS time_point {
+class [[__libcpp_template_vis]] time_point {
static_assert(__is_duration_v<_Duration>, "Second template parameter of time_point must be a std::chrono::duration");
public:
@@ -76,7 +76,7 @@ class _LIBCPP_TEMPLATE_VIS time_point {
} // namespace chrono
template <class _Clock, class _Duration1, class _Duration2>
-struct _LIBCPP_TEMPLATE_VIS
+struct [[__libcpp_template_vis]]
common_type<chrono::time_point<_Clock, _Duration1>, chrono::time_point<_Clock, _Duration2> > {
typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type;
};
diff --git a/libcxx/include/__compare/common_comparison_category.h b/libcxx/include/__compare/common_comparison_category.h
index 6ddf9b9d45894..30118fd3cf87f 100644
--- a/libcxx/include/__compare/common_comparison_category.h
+++ b/libcxx/include/__compare/common_comparison_category.h
@@ -72,7 +72,7 @@ _LIBCPP_HIDE_FROM_ABI constexpr auto __get_comp_type() {
// [cmp.common], common comparison category type
template <class... _Ts>
-struct _LIBCPP_TEMPLATE_VIS common_comparison_category {
+struct [[__libcpp_template_vis]] common_comparison_category {
using type = decltype(__comp_detail::__get_comp_type<_Ts...>());
};
diff --git a/libcxx/include/__compare/compare_three_way.h b/libcxx/include/__compare/compare_three_way.h
index 01c12076c0d73..c2e6afc4309a3 100644
--- a/libcxx/include/__compare/compare_three_way.h
+++ b/libcxx/include/__compare/compare_three_way.h
@@ -22,7 +22,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
#if _LIBCPP_STD_VER >= 20
-struct _LIBCPP_TEMPLATE_VIS compare_three_way {
+struct [[__libcpp_template_vis]] compare_three_way {
template <class _T1, class _T2>
requires three_way_comparable_with<_T1, _T2>
constexpr _LIBCPP_HIDE_FROM_ABI auto operator()(_T1&& __t, _T2&& __u) const
diff --git a/libcxx/include/__compare/compare_three_way_result.h b/libcxx/include/__compare/compare_three_way_result.h
index 6ee2eff00302d..7d870bc647deb 100644
--- a/libcxx/include/__compare/compare_three_way_result.h
+++ b/libcxx/include/__compare/compare_three_way_result.h
@@ -33,7 +33,7 @@ struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result<
};
template <class _Tp, class _Up = _Tp>
-struct _LIBCPP_TEMPLATE_VIS _LIBCPP_NO_SPECIALIZATIONS compare_three_way_result
+struct [[__libcpp_template_vis]] _LIBCPP_NO_SPECIALIZATIONS compare_three_way_result
: __compare_three_way_result<_Tp, _Up, void> {};
template <class _Tp, class _Up = _Tp>
diff --git a/libcxx/include/__config b/libcxx/include/__config
index c8224b07a6b81..ff2f6398be8da 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -389,7 +389,7 @@ typedef __char32_t char32_t;
# define _LIBCPP_HIDDEN
# define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS
-# define _LIBCPP_TEMPLATE_VIS
+# define __libcpp_template_vis
# define _LIBCPP_TEMPLATE_DATA_VIS
#...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/130099
More information about the libcxx-commits
mailing list