[patch] libstdc++/69240 generic operator!= for random number distributions
Jonathan Wakely
jwakely@redhat.com
Thu Jan 14 20:46:00 GMT 2016
On 14/01/16 20:43 +0000, Jonathan Wakely wrote:
>On 14/01/16 21:22 +0100, Daniel Krügler wrote:
>>If there were an __is_direct_base_of intrinsic (or is there?), it
>>seems to me that there would be no need for all these specializations
>>(each one nearly taking as much space as the explicit inline
>>definition of operator!) and there could be a single constrained
>>operator!= that would only trigger for types that are direct base
>>classes of __tag.
>
>Yes. In fact we do have a __direct_bases intrinsic, see
><tr2/type_traits>. We'd need a bit of metaprogramming to see if
>the__tag is one of __direct_bases(_Tp)... but that's doable.
Bah, this causes an ICE:
template<typename _Tp,
typename = __or_<is_same<__tag, __direct_bases(_Tp)>...>>
inline bool
operator!=(const _Tp& __lhs, const _Tp& __rhs) noexcept
{ return !(__lhs == __rhs); }
More information about the Libstdc++
mailing list