Skip to content

Commit

Permalink
[libc++] Use _If for conditional_t (llvm#96193)
Browse files Browse the repository at this point in the history
This avoids different instantiations when the if and else types are
different, resulting in reduced memory use by the compiler.
  • Loading branch information
philnik777 authored Jun 25, 2024
1 parent ec9ce89 commit 2274c66
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions libcxx/include/__type_traits/conditional.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,14 @@ struct _LIBCPP_TEMPLATE_VIS conditional<false, _If, _Then> {
using type _LIBCPP_NODEBUG = _Then;
};

template <bool _Bp, class _IfRes, class _ElseRes>
using __conditional_t _LIBCPP_NODEBUG = _If<_Bp, _IfRes, _ElseRes>;

#if _LIBCPP_STD_VER >= 14
template <bool _Bp, class _IfRes, class _ElseRes>
using conditional_t _LIBCPP_NODEBUG = typename conditional<_Bp, _IfRes, _ElseRes>::type;
using conditional_t _LIBCPP_NODEBUG = __conditional_t<_Bp, _IfRes, _ElseRes>;
#endif

// Helper so we can use "conditional_t" in all language versions.
template <bool _Bp, class _If, class _Then>
using __conditional_t _LIBCPP_NODEBUG = typename conditional<_Bp, _If, _Then>::type;

_LIBCPP_END_NAMESPACE_STD

#endif // _LIBCPP___TYPE_TRAITS_CONDITIONAL_H

0 comments on commit 2274c66

Please sign in to comment.