On Fri, 04 May 2012 09:06:31 -0400, Jakob Ovrum <jakobov...@gmail.com> wrote:

On Friday, 4 May 2012 at 12:49:35 UTC, Steven Schveighoffer wrote:
or more generically:

c = new typeof(c)(c.filter!(x => x < 3));

?

That doesn't do the right thing when 'c' isn't a class type, so it's not really that generic.

Struct types (the type of `new typeof(c)` is not `typeof(c)`!) and array types simply fail with your suggestion.

Structs don't make very good containers. A slice is not really a container.

But in any case, someone can make a function that's generic with a couple static ifs.

I personally haven't decided whether I think a generic convention is useful here, but that code doesn't fit the bill.

What exactly are you looking for? I mean, you want the original type back, so you can reassign, is that all? Something like this should work for that:

c = makeContainer!typeof(c)(c.filter!(x => x < 3));

Implementation left as an exercise.

-Steve

Reply via email to