[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