dmd/compiler/test/runnable/imports/test35a.d
2022-07-09 18:53:07 +02:00

38 lines
623 B
D

module imports.test35a;
template ElemTypeOf( T )
{
alias typeof(T.init[0]) ElemTypeOf;
}
template removeIf_( Elem, Pred )
{
size_t fn( Elem[] buf, Pred pred )
{
void exch( size_t p1, size_t p2 )
{
Elem t = buf[p1];
buf[p1] = buf[p2];
buf[p2] = t;
}
size_t cnt = 0;
for( size_t pos = 0, len = buf.length; pos < len; ++pos )
{
if( pred( buf[pos] ) )
++cnt;
else
exch( pos, pos - cnt );
}
return buf.length - cnt;
}
}
template removeIf( Buf, Pred )
{
size_t removeIf( Buf buf, Pred pred )
{
return removeIf_!(ElemTypeOf!(Buf), Pred).fn( buf, pred );
}
}