Skip to content

Commit 3359a17

Browse files
committedJun 23, 2019
Apply new meta-programming traits throughout the library.
The new meta-programming primitives are lower cost than the old versions. This patch removes those old versions and switches libc++ to use the new ones. llvm-svn: 364160
1 parent e2291f5 commit 3359a17

File tree

8 files changed

+179
-261
lines changed

8 files changed

+179
-261
lines changed
 

‎libcxx/include/__tuple

+1-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ template <bool ..._Preds>
387387
struct __all_dummy;
388388

389389
template <bool ..._Pred>
390-
using __all = is_same<__all_dummy<_Pred...>, __all_dummy<((void)_Pred, true)...>>;
390+
using __all = _IsSame<__all_dummy<_Pred...>, __all_dummy<((void)_Pred, true)...>>;
391391

392392
struct __tuple_sfinae_base {
393393
template <template <class, class...> class _Trait,

‎libcxx/include/cmath

+1-1
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double hypot( long double x, long double y
529529

530530
template <class _A1, class _A2, class _A3>
531531
inline _LIBCPP_INLINE_VISIBILITY
532-
typename __lazy_enable_if
532+
typename _EnableIf
533533
<
534534
is_arithmetic<_A1>::value &&
535535
is_arithmetic<_A2>::value &&

‎libcxx/include/functional

+3-3
Original file line numberDiff line numberDiff line change
@@ -2246,8 +2246,8 @@ class _LIBCPP_TEMPLATE_VIS function<_Rp(_ArgTypes...)>
22462246

22472247
__func __f_;
22482248

2249-
template <class _Fp, bool = __lazy_and<
2250-
integral_constant<bool, !is_same<__uncvref_t<_Fp>, function>::value>,
2249+
template <class _Fp, bool = _And<
2250+
_IsNotSame<__uncvref_t<_Fp>, function>,
22512251
__invokable<_Fp&, _ArgTypes...>
22522252
>::value>
22532253
struct __callable;
@@ -2556,7 +2556,7 @@ __mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>)
25562556

25572557
template <class _Ti, class ..._Uj>
25582558
inline _LIBCPP_INLINE_VISIBILITY
2559-
typename __lazy_enable_if
2559+
typename _EnableIf
25602560
<
25612561
is_bind_expression<_Ti>::value,
25622562
__invoke_of<_Ti&, _Uj...>

‎libcxx/include/math.h

+37-37
Original file line numberDiff line numberDiff line change
@@ -857,7 +857,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __lcpp_y, long do
857857

858858
template <class _A1, class _A2>
859859
inline _LIBCPP_INLINE_VISIBILITY
860-
typename std::__lazy_enable_if
860+
typename std::_EnableIf
861861
<
862862
std::is_arithmetic<_A1>::value &&
863863
std::is_arithmetic<_A2>::value,
@@ -866,8 +866,8 @@ typename std::__lazy_enable_if
866866
atan2(_A1 __lcpp_y, _A2 __lcpp_x) _NOEXCEPT
867867
{
868868
typedef typename std::__promote<_A1, _A2>::type __result_type;
869-
static_assert((!(std::is_same<_A1, __result_type>::value &&
870-
std::is_same<_A2, __result_type>::value)), "");
869+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
870+
std::_IsSame<_A2, __result_type>::value)), "");
871871
return ::atan2((__result_type)__lcpp_y, (__result_type)__lcpp_x);
872872
}
873873

@@ -952,7 +952,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __lcpp_x, long dou
952952

953953
template <class _A1, class _A2>
954954
inline _LIBCPP_INLINE_VISIBILITY
955-
typename std::__lazy_enable_if
955+
typename std::_EnableIf
956956
<
957957
std::is_arithmetic<_A1>::value &&
958958
std::is_arithmetic<_A2>::value,
@@ -961,8 +961,8 @@ typename std::__lazy_enable_if
961961
fmod(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
962962
{
963963
typedef typename std::__promote<_A1, _A2>::type __result_type;
964-
static_assert((!(std::is_same<_A1, __result_type>::value &&
965-
std::is_same<_A2, __result_type>::value)), "");
964+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
965+
std::_IsSame<_A2, __result_type>::value)), "");
966966
return ::fmod((__result_type)__lcpp_x, (__result_type)__lcpp_y);
967967
}
968968

@@ -1030,7 +1030,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __lcpp_x, long doub
10301030

10311031
template <class _A1, class _A2>
10321032
inline _LIBCPP_INLINE_VISIBILITY
1033-
typename std::__lazy_enable_if
1033+
typename std::_EnableIf
10341034
<
10351035
std::is_arithmetic<_A1>::value &&
10361036
std::is_arithmetic<_A2>::value,
@@ -1039,8 +1039,8 @@ typename std::__lazy_enable_if
10391039
pow(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
10401040
{
10411041
typedef typename std::__promote<_A1, _A2>::type __result_type;
1042-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1043-
std::is_same<_A2, __result_type>::value)), "");
1042+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1043+
std::_IsSame<_A2, __result_type>::value)), "");
10441044
return ::pow((__result_type)__lcpp_x, (__result_type)__lcpp_y);
10451045
}
10461046

@@ -1157,7 +1157,7 @@ copysign(long double __lcpp_x, long double __lcpp_y) _NOEXCEPT {
11571157

11581158
template <class _A1, class _A2>
11591159
inline _LIBCPP_INLINE_VISIBILITY
1160-
typename std::__lazy_enable_if
1160+
typename std::_EnableIf
11611161
<
11621162
std::is_arithmetic<_A1>::value &&
11631163
std::is_arithmetic<_A2>::value,
@@ -1166,8 +1166,8 @@ typename std::__lazy_enable_if
11661166
copysign(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
11671167
{
11681168
typedef typename std::__promote<_A1, _A2>::type __result_type;
1169-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1170-
std::is_same<_A2, __result_type>::value)), "");
1169+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1170+
std::_IsSame<_A2, __result_type>::value)), "");
11711171
return ::copysign((__result_type)__lcpp_x, (__result_type)__lcpp_y);
11721172
}
11731173

@@ -1218,7 +1218,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double fdim(long double __lcpp_x, long dou
12181218

12191219
template <class _A1, class _A2>
12201220
inline _LIBCPP_INLINE_VISIBILITY
1221-
typename std::__lazy_enable_if
1221+
typename std::_EnableIf
12221222
<
12231223
std::is_arithmetic<_A1>::value &&
12241224
std::is_arithmetic<_A2>::value,
@@ -1227,8 +1227,8 @@ typename std::__lazy_enable_if
12271227
fdim(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12281228
{
12291229
typedef typename std::__promote<_A1, _A2>::type __result_type;
1230-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1231-
std::is_same<_A2, __result_type>::value)), "");
1230+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1231+
std::_IsSame<_A2, __result_type>::value)), "");
12321232
return ::fdim((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12331233
}
12341234

@@ -1239,7 +1239,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double fma(long double __lcpp_x, long doub
12391239

12401240
template <class _A1, class _A2, class _A3>
12411241
inline _LIBCPP_INLINE_VISIBILITY
1242-
typename std::__lazy_enable_if
1242+
typename std::_EnableIf
12431243
<
12441244
std::is_arithmetic<_A1>::value &&
12451245
std::is_arithmetic<_A2>::value &&
@@ -1249,9 +1249,9 @@ typename std::__lazy_enable_if
12491249
fma(_A1 __lcpp_x, _A2 __lcpp_y, _A3 __lcpp_z) _NOEXCEPT
12501250
{
12511251
typedef typename std::__promote<_A1, _A2, _A3>::type __result_type;
1252-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1253-
std::is_same<_A2, __result_type>::value &&
1254-
std::is_same<_A3, __result_type>::value)), "");
1252+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1253+
std::_IsSame<_A2, __result_type>::value &&
1254+
std::_IsSame<_A3, __result_type>::value)), "");
12551255
return ::fma((__result_type)__lcpp_x, (__result_type)__lcpp_y, (__result_type)__lcpp_z);
12561256
}
12571257

@@ -1262,7 +1262,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double fmax(long double __lcpp_x, long dou
12621262

12631263
template <class _A1, class _A2>
12641264
inline _LIBCPP_INLINE_VISIBILITY
1265-
typename std::__lazy_enable_if
1265+
typename std::_EnableIf
12661266
<
12671267
std::is_arithmetic<_A1>::value &&
12681268
std::is_arithmetic<_A2>::value,
@@ -1271,8 +1271,8 @@ typename std::__lazy_enable_if
12711271
fmax(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12721272
{
12731273
typedef typename std::__promote<_A1, _A2>::type __result_type;
1274-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1275-
std::is_same<_A2, __result_type>::value)), "");
1274+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1275+
std::_IsSame<_A2, __result_type>::value)), "");
12761276
return ::fmax((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12771277
}
12781278

@@ -1283,7 +1283,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double fmin(long double __lcpp_x, long dou
12831283

12841284
template <class _A1, class _A2>
12851285
inline _LIBCPP_INLINE_VISIBILITY
1286-
typename std::__lazy_enable_if
1286+
typename std::_EnableIf
12871287
<
12881288
std::is_arithmetic<_A1>::value &&
12891289
std::is_arithmetic<_A2>::value,
@@ -1292,8 +1292,8 @@ typename std::__lazy_enable_if
12921292
fmin(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
12931293
{
12941294
typedef typename std::__promote<_A1, _A2>::type __result_type;
1295-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1296-
std::is_same<_A2, __result_type>::value)), "");
1295+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1296+
std::_IsSame<_A2, __result_type>::value)), "");
12971297
return ::fmin((__result_type)__lcpp_x, (__result_type)__lcpp_y);
12981298
}
12991299

@@ -1304,7 +1304,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double hypot(long double __lcpp_x, long do
13041304

13051305
template <class _A1, class _A2>
13061306
inline _LIBCPP_INLINE_VISIBILITY
1307-
typename std::__lazy_enable_if
1307+
typename std::_EnableIf
13081308
<
13091309
std::is_arithmetic<_A1>::value &&
13101310
std::is_arithmetic<_A2>::value,
@@ -1313,8 +1313,8 @@ typename std::__lazy_enable_if
13131313
hypot(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
13141314
{
13151315
typedef typename std::__promote<_A1, _A2>::type __result_type;
1316-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1317-
std::is_same<_A2, __result_type>::value)), "");
1316+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1317+
std::_IsSame<_A2, __result_type>::value)), "");
13181318
return ::hypot((__result_type)__lcpp_x, (__result_type)__lcpp_y);
13191319
}
13201320

@@ -1427,7 +1427,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double nextafter(long double __lcpp_x, lon
14271427

14281428
template <class _A1, class _A2>
14291429
inline _LIBCPP_INLINE_VISIBILITY
1430-
typename std::__lazy_enable_if
1430+
typename std::_EnableIf
14311431
<
14321432
std::is_arithmetic<_A1>::value &&
14331433
std::is_arithmetic<_A2>::value,
@@ -1436,8 +1436,8 @@ typename std::__lazy_enable_if
14361436
nextafter(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
14371437
{
14381438
typedef typename std::__promote<_A1, _A2>::type __result_type;
1439-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1440-
std::is_same<_A2, __result_type>::value)), "");
1439+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1440+
std::_IsSame<_A2, __result_type>::value)), "");
14411441
return ::nextafter((__result_type)__lcpp_x, (__result_type)__lcpp_y);
14421442
}
14431443

@@ -1458,7 +1458,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double remainder(long double __lcpp_x, lon
14581458

14591459
template <class _A1, class _A2>
14601460
inline _LIBCPP_INLINE_VISIBILITY
1461-
typename std::__lazy_enable_if
1461+
typename std::_EnableIf
14621462
<
14631463
std::is_arithmetic<_A1>::value &&
14641464
std::is_arithmetic<_A2>::value,
@@ -1467,8 +1467,8 @@ typename std::__lazy_enable_if
14671467
remainder(_A1 __lcpp_x, _A2 __lcpp_y) _NOEXCEPT
14681468
{
14691469
typedef typename std::__promote<_A1, _A2>::type __result_type;
1470-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1471-
std::is_same<_A2, __result_type>::value)), "");
1470+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1471+
std::_IsSame<_A2, __result_type>::value)), "");
14721472
return ::remainder((__result_type)__lcpp_x, (__result_type)__lcpp_y);
14731473
}
14741474

@@ -1479,7 +1479,7 @@ inline _LIBCPP_INLINE_VISIBILITY long double remquo(long double __lcpp_x, long d
14791479

14801480
template <class _A1, class _A2>
14811481
inline _LIBCPP_INLINE_VISIBILITY
1482-
typename std::__lazy_enable_if
1482+
typename std::_EnableIf
14831483
<
14841484
std::is_arithmetic<_A1>::value &&
14851485
std::is_arithmetic<_A2>::value,
@@ -1488,8 +1488,8 @@ typename std::__lazy_enable_if
14881488
remquo(_A1 __lcpp_x, _A2 __lcpp_y, int* __lcpp_z) _NOEXCEPT
14891489
{
14901490
typedef typename std::__promote<_A1, _A2>::type __result_type;
1491-
static_assert((!(std::is_same<_A1, __result_type>::value &&
1492-
std::is_same<_A2, __result_type>::value)), "");
1491+
static_assert((!(std::_IsSame<_A1, __result_type>::value &&
1492+
std::_IsSame<_A2, __result_type>::value)), "");
14931493
return ::remquo((__result_type)__lcpp_x, (__result_type)__lcpp_y, __lcpp_z);
14941494
}
14951495

0 commit comments

Comments
 (0)