[libcxx-commits] [libcxx] [libc++] Remove _LIBCPP_TEMPLATE_VIS (PR #134885)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed Apr 9 14:48:38 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Nikolas Klauser (philnik777)

<details>
<summary>Changes</summary>

The need for `_LIBCPP_TEMPLATE_VIS` has been removed in #<!-- -->133233.


---

Patch is 319.86 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/134885.diff


261 Files Affected:

- (modified) libcxx/.clang-format (-1) 
- (modified) libcxx/docs/DesignDocs/VisibilityMacros.rst (+2-14) 
- (modified) libcxx/include/__chrono/duration.h (+5-5) 
- (modified) libcxx/include/__chrono/formatter.h (+22-22) 
- (modified) libcxx/include/__chrono/parser_std_format_spec.h (+1-1) 
- (modified) libcxx/include/__chrono/time_point.h (+2-3) 
- (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-2) 
- (modified) libcxx/include/__config (-5) 
- (modified) libcxx/include/__coroutine/coroutine_handle.h (+3-3) 
- (modified) libcxx/include/__coroutine/noop_coroutine_handle.h (+1-1) 
- (modified) libcxx/include/__format/buffer.h (+11-11) 
- (modified) libcxx/include/__format/container_adaptor.h (+4-4) 
- (modified) libcxx/include/__format/format_arg.h (+3-3) 
- (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-7) 
- (modified) libcxx/include/__format/formatter_tuple.h (+3-5) 
- (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 (+1-1) 
- (modified) libcxx/include/__functional/binary_negate.h (+1-1) 
- (modified) libcxx/include/__functional/binder1st.h (+1-1) 
- (modified) libcxx/include/__functional/binder2nd.h (+1-1) 
- (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 (+8-9) 
- (modified) libcxx/include/__functional/operations.h (+38-38) 
- (modified) libcxx/include/__functional/pointer_to_binary_function.h (+1-2) 
- (modified) libcxx/include/__functional/pointer_to_unary_function.h (+1-2) 
- (modified) libcxx/include/__functional/reference_wrapper.h (+1-1) 
- (modified) libcxx/include/__functional/unary_function.h (+1-1) 
- (modified) libcxx/include/__functional/unary_negate.h (+1-2) 
- (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 (+3-3) 
- (modified) libcxx/include/__fwd/ios.h (+1-1) 
- (modified) libcxx/include/__fwd/istream.h (+2-2) 
- (modified) libcxx/include/__fwd/map.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/set.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 (+1-1) 
- (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 (+8-8) 
- (modified) libcxx/include/__memory/allocator.h (+2-2) 
- (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 (+2-2) 
- (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 (+15-15) 
- (modified) libcxx/include/__memory/unique_ptr.h (+7-7) 
- (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-8) 
- (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 (+17-17) 
- (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 (+9-9) 
- (modified) libcxx/include/__type_traits/add_cv_quals.h (+3-3) 
- (modified) libcxx/include/__type_traits/aligned_storage.h (+1-1) 
- (modified) libcxx/include/__type_traits/alignment_of.h (+1-2) 
- (modified) libcxx/include/__type_traits/common_type.h (+5-6) 
- (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 (+6-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 (+5-7) 
- (modified) libcxx/include/__type_traits/is_abstract.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_aggregate.h (+1-2) 
- (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-3) 
- (modified) libcxx/include/__type_traits/is_bounded_array.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_class.h (+1-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 (+5-6) 
- (modified) libcxx/include/__type_traits/is_convertible.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_destructible.h (+1-1) 
- (modified) libcxx/include/__type_traits/is_empty.h (+1-1) 
- (modified) libcxx/include/__type_traits/is_enum.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_final.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_floating_point.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_function.h (+1-1) 
- (modified) libcxx/include/__type_traits/is_fundamental.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_implicit_lifetime.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_integral.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_literal_type.h (+1-1) 
- (modified) libcxx/include/__type_traits/is_member_pointer.h (+3-5) 
- (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 (+5-7) 
- (modified) libcxx/include/__type_traits/is_null_pointer.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_object.h (+1-1) 
- (modified) libcxx/include/__type_traits/is_pod.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_pointer.h (+2-3) 
- (modified) libcxx/include/__type_traits/is_polymorphic.h (+1-2) 
- (modified) libcxx/include/__type_traits/is_reference.h (+7-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-2) 
- (modified) libcxx/include/__type_traits/is_swappable.h (+4-7) 
- (modified) libcxx/include/__type_traits/is_trivial.h (+1-1) 
- (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 (+2-2) 
- (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 (+1-1) 
- (modified) libcxx/include/__type_traits/is_unsigned.h (+2-2) 
- (modified) libcxx/include/__type_traits/is_void.h (+1-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/reference_constructs_from_temporary.h (+1-1) 
- (modified) libcxx/include/__type_traits/reference_converts_from_temporary.h (+1-1) 
- (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 (+1-1) 
- (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/__variant/monostate.h (+2-2) 
- (modified) libcxx/include/__vector/vector.h (+1-1) 
- (modified) libcxx/include/__vector/vector_bool.h (+3-4) 
- (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-4) 
- (modified) libcxx/include/codecvt (+3-4) 
- (modified) libcxx/include/complex (+7-7) 
- (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 (+15-15) 
- (modified) libcxx/include/initializer_list (+1-1) 
- (modified) libcxx/include/ios (+3-3) 
- (modified) libcxx/include/iosfwd (+3-3) 
- (modified) libcxx/include/istream (+4-6) 
- (modified) libcxx/include/limits (+4-4) 
- (modified) libcxx/include/list (+5-5) 
- (modified) libcxx/include/locale (+16-18) 
- (modified) libcxx/include/map (+16-16) 
- (modified) libcxx/include/mutex (+4-4) 
- (modified) libcxx/include/optional (+1-1) 
- (modified) libcxx/include/queue (+4-6) 
- (modified) libcxx/include/ratio (+11-11) 
- (modified) libcxx/include/regex (+13-15) 
- (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 (+2-3) 
- (modified) libcxx/include/streambuf (+1-1) 
- (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 (+28-31) 


``````````diff
diff --git a/libcxx/.clang-format b/libcxx/.clang-format
index e25196a05c92c..fe2f2ef0119fa 100644
--- a/libcxx/.clang-format
+++ b/libcxx/.clang-format
@@ -43,7 +43,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 e37e712014c08..e9f88118b7ef3 100644
--- a/libcxx/docs/DesignDocs/VisibilityMacros.rst
+++ b/libcxx/docs/DesignDocs/VisibilityMacros.rst
@@ -64,25 +64,13 @@ 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**
-  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.
-
-  **GCC Behavior**: GCC does not support Clang's `type_visibility(...)`
-  attribute. With GCC the `visibility(...)` attribute is used and member
-  functions are affected.
-
-  **Windows Behavior**: DLLs do not support dllimport/export on class templates.
-  The macro has an empty definition on this platform.
-
 **_LIBCPP_EXTERN_TEMPLATE_TYPE_VIS**
   Mark the member functions, typeinfo, and vtable of the type named in
   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
-  specified on the primary template and to export the member functions produced
-  by the explicit instantiation in the dylib.
+  This macro is used to export the member functions produced by the explicit
+  instantiation in the dylib.
 
   **Windows Behavior**: `extern template` and `dllexport` are fundamentally
   incompatible *on a class template* on Windows; the former suppresses
diff --git a/libcxx/include/__chrono/duration.h b/libcxx/include/__chrono/duration.h
index 941aca6009599..57fa64d650068 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 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 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 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 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 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..86b606d27847b 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 __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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 formatter<chrono::year_month_weekday, _CharT> : public __formatter_chrono<_CharT> {
 public:
   using _Base _LIBCPP_NODEBUG = __formatter_chrono<_CharT>;
 
@@ -965,7 +965,7 @@ 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 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..8ecc19f3c7821 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 __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..6b866b882f89a 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 time_point {
   static_assert(__is_duration_v<_Duration>, "Second template parameter of time_point must be a std::chrono::duration");
 
 public:
@@ -76,8 +76,7 @@ class _LIBCPP_TEMPLATE_VIS time_point {
 } // namespace chrono
 
 template <class _Clock, class _Duration1, class _Duration2>
-struct _LIBCPP_TEMPLATE_VIS
-common_type<chrono::time_point<_Clock, _Duration1>, chrono::time_point<_Clock, _Duration2> > {
+struct 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 a49499ea4198d..eae2ef00624be 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 common_comparison_category {
   using type _LIBCPP_NODEBUG = 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..852c5874c61ca 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 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 5327cc57eb580..264a4d603ca44 100644
--- a/libcxx/include/__compare/compare_three_way_result.h
+++ b/libcxx/include/__compare/compare_three_way_result.h
@@ -34,8 +34,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
-    : __compare_three_way_result<_Tp, _Up, void> {};
+struct _LIBCPP_NO_SPECIALIZATIONS compare_three_way_result : __compare_three_way_result<_Tp, _Up, void> {};
 
 template <class _Tp, class _Up = _Tp>
 using compare_three_way_result_t = typename compare_three_way_result<_Tp, _Up>::type;
diff --git a/libcxx/include/__config b/libcxx/include/__config
index b6da7114cfc85..3f03ceb13fc38 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -383,7 +383,6 @@ typedef __char32_t char32_t;
 #    endif
 
 #    define _LIBCPP_HIDDEN
-#    define _LIBCPP_TEMPLATE_VIS
 #    define _LIBCPP_TEMPLATE_DATA_VIS
 #    define _LIBCPP_NAMESPACE_VISIBILITY
 
@@ -406,10 +405,6 @@ typedef __char32_t char32_t;
 #      define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_VISIBILITY("default")
 #    endif
 
-// This is kept to avoid a huge library-wide diff in the first step.
-// TODO: Remove this in a follow-up patch
-#    define _LIBCPP_TEMPLATE_VIS
-
 #    if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__)
 #      define _LIBCPP_NAMESPACE_VISIBILITY __attribute__((__type_visibility__("default")))
 #    elif !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS)
diff --git a/libcxx/include/__coroutine/coroutine_handle.h b/libcxx/include/__coroutine/coroutine_handle.h
index e2cde20498d84..88848544cf6bd 100644
--- a/libcxx/include/__coroutine/coroutine_handle.h
+++ b/libcxx/include/__coroutine/coroutine_handle.h
@@ -28,10 +28,10 @@ _LIBCPP_BEGIN_NAMESPACE_STD
 
 // [coroutine.handle]
 template <class _Promise = void>
-struct _LIBCPP_TEMPLATE_VIS coroutine_handle;
+struct coroutine_handle;
 
 template <>
-struct _LIBCPP_TEMPLATE_VIS coroutine_handle<void> {
+struct coroutine_handle<void> {
 public:
   // [coroutine.handle.con], construct/reset
   constexpr coroutine_handle() noexcept = default;
@@ -93,7 +93,7 @@ operator<=>(coroutine_handle<> __x, coroutine_handle<> __y) noexcept {
 }
 
 template <class _Promise>
-struct _LIBCPP_TEMPLATE_VIS coroutine_handle {
+struct coroutine_handle {
 public:
   // [coroutine.handle.con], construct/reset
   constexpr coroutine_handle() noexcept = default;
diff --git a/libcxx/include/__coroutine/noop_coroutine_handle.h b/libcxx/include/__coroutine/noop_coroutine_handle.h
index da13d579604b5..c95d85d5484c4 100644
--- a/libcxx/include/__coroutine/noop_coroutine_handle.h
+++ b/libcxx/include/__coroutine/noop_coroutine_handle.h
@@ -28,7 +28,7 @@ struct noop_coroutine_promise {};
 
 // [coroutine.handle.noop]
 template <>
-struct _LIBCPP_TEMPLATE_VIS coroutine_handle<noop_coroutine_promise> {
+struct coroutine_handle<noop_coroutine_promise> {
 public:
   // [coroutine.handle.noop.conv], conversion
   _LIBCPP_HIDE_FROM_ABI constexpr operator coroutine_handle<>() const noexcept {
diff --git a/libcxx/include/__format/buffer.h b/libcxx/include/__format/buffer.h
index c88b7f3222010..e7454f08f45d5 100644
--- a/libcxx/include/__format/buffer.h
+++ b/libcxx/include/__format/buffer.h
@@ -179,7 +179,7 @@ class _LIBCPP_HIDE_FROM_ABI __max_output_size {
 /// The latter option allows formatted_size to use the output buffer without
 /// ever writing anything to the buffer.
 template <__fmt_char_type _CharT>
-class _LIBCPP_TEMPLATE_VIS __output_buffer {
+class __output_buffer {
 public:
   using value_type _LIBCPP_NODEBUG           = _CharT;
   using __prepare_write_type _LIBCPP_NODEBUG = void (*)(__output_buffer<_CharT>&, size_t);
@@ -339,18 +339,18 @@ concept __insertable =
 
 /// Extract the container type of ...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/134885


More information about the libcxx-commits mailing list