Phobos version: 2.077.0
file: std/meta.d
line: 486
template NoDuplicates(TList...)
{
...
static if (TList.length > 500)
{
enum steps = 16;
alias first = NoDuplicates!(TList[0 .. steps]);
alias NoDuplicates = NoDuplicates!(EraseAllN!(first.length, first, TList[steps..$]));
}
...
}
When processing step by step here, forget to process 'first'.
Comment #1 by simen.kjaras — 2017-11-20T07:14:46Z
Example code that demonstrates the behavior:
import std.meta;
alias a = NoDuplicates!(AliasSeq!(1, Repeat!(1000, 3)));
alias b = NoDuplicates!(AliasSeq!(1, Repeat!(10, 3)));
static assert(a.length == b.length);
a is AliasSeq!(3), b is AliasSeq!(1,3).