@@ -28,6 +28,12 @@ _STL_DISABLE_CLANG_WARNINGS
2828#pragma push_macro("new")
2929#undef new
3030
31+ // TRANSITION, non-_Ugly attribute tokens
32+ #pragma push_macro("msvc")
33+ #pragma push_macro("no_specializations")
34+ #undef msvc
35+ #undef no_specializations
36+
3137_STD_BEGIN
3238// plus, minus, and multiplies are defined in <xutility>
3339
@@ -301,13 +307,13 @@ _STL_RESTORE_DEPRECATED_WARNING
301307
302308#if _HAS_AUTO_PTR_ETC
303309_EXPORT_STD template <class _Arg, class _Result>
304- struct unary_function { // base class for unary functions
310+ struct _NO_SPECIALIZATIONS_CITING("N4140 [depr.base]/1") unary_function { // base class for unary functions
305311 using argument_type = _Arg;
306312 using result_type = _Result;
307313};
308314
309315_EXPORT_STD template <class _Arg1, class _Arg2, class _Result>
310- struct binary_function { // base class for binary functions
316+ struct _NO_SPECIALIZATIONS_CITING("N4140 [depr.base]/1") binary_function { // base class for binary functions
311317 using first_argument_type = _Arg1;
312318 using second_argument_type = _Arg2;
313319 using result_type = _Result;
@@ -2008,7 +2014,7 @@ template <class _Tx>
20082014struct is_placeholder<const volatile _Tx> : is_placeholder<_Tx>::type {}; // ignore cv-qualifiers
20092015
20102016_EXPORT_STD template <class _Ty>
2011- constexpr int is_placeholder_v = is_placeholder<_Ty>::value;
2017+ _NO_SPECIALIZATIONS_OF_VARIABLE_TEMPLATES constexpr int is_placeholder_v = is_placeholder<_Ty>::value;
20122018
20132019template <class _Ret, class _Fx, class... _Types>
20142020class _Binder;
@@ -2029,7 +2035,7 @@ template <class _Tx>
20292035struct is_bind_expression<const volatile _Tx> : is_bind_expression<_Tx>::type {}; // ignore cv-qualifiers
20302036
20312037_EXPORT_STD template <class _Ty>
2032- constexpr bool is_bind_expression_v = is_bind_expression<_Ty>::value;
2038+ _NO_SPECIALIZATIONS_OF_VARIABLE_TEMPLATES constexpr bool is_bind_expression_v = is_bind_expression<_Ty>::value;
20332039
20342040template <class _Cv_TiD, bool = _Is_specialization_v<remove_cv_t<_Cv_TiD>, reference_wrapper>,
20352041 bool = is_bind_expression_v<_Cv_TiD>, int = is_placeholder_v<_Cv_TiD>>
@@ -3160,6 +3166,10 @@ namespace _DEPRECATE_TR1_NAMESPACE tr1 {
31603166
31613167_STD_END
31623168
3169+ // TRANSITION, non-_Ugly attribute tokens
3170+ #pragma pop_macro("no_specializations")
3171+ #pragma pop_macro("msvc")
3172+
31633173#pragma pop_macro("new")
31643174_STL_RESTORE_CLANG_WARNINGS
31653175#pragma warning(pop)
0 commit comments