This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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 Thu, 14 Jan 2016, Jonathan Wakely wrote:

On 14/01/16 20:13 +0100, Marc Glisse wrote:
I didn't think about it much, but I am worried that __random_not_eq will accidentally become an associated namespace for more classes than we would expect.

Yes, it would be an associated namespace for types that derive from
the distributions, or class template specializations that use the
distributions as template arguments.

We could constrain the generic operator== and operator!= to only match
types that we want it to match, e.g. by having a type trait that is
true for all our distributions and their parameter types. That would
mean adding a specialization of it for each distribution and parameter
type:

template<typename _IntType>
  struct
  __is_comparable_random_dist<uniform_int_distribution<_IntType>>
  : true_type { };

Having to do that for every type removes some of the advantages of the
patch, but would still be less code overall.

If the operators are constrained in that way then I don't think it's a
problem that the namespaces would be associated with more types,
because there's nothing else in those namespaces that could be found
by ADL.

Once you constrain, you could even use 'std' as the associated namespace ;-)

--
Marc Glisse


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