This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] libstdc++/69240 generic operator!= for random number distributions


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); }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]