Set: allow hasher to take arg by ref
This commit is contained in:
parent
b04928d2c8
commit
22cffe9d6e
@ -154,7 +154,7 @@ struct Range(T)
|
||||
* hasher = Hash function for $(D_PARAM T).
|
||||
*/
|
||||
struct Set(T, alias hasher = hash)
|
||||
if (is(typeof(hasher(T.init)) == size_t))
|
||||
if (is(typeof(((T x) => hasher(x))(T.init)) == size_t))
|
||||
{
|
||||
private alias HashArray = .HashArray!(hasher, T);
|
||||
private alias Buckets = HashArray.Buckets;
|
||||
@ -767,3 +767,9 @@ if (is(typeof(hasher(T.init)) == size_t))
|
||||
}
|
||||
testFunc(set);
|
||||
}
|
||||
|
||||
@nogc nothrow pure @safe unittest
|
||||
{
|
||||
// Using hasher that takes argument by ref.
|
||||
Set!(int, (const ref x) => cast(size_t)x) set;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user