How to create a template class using foreach delegate to filter objects in a member function call?

Alex sascha.orlov at gmail.com
Sat Jun 1 17:51:48 UTC 2019


On Saturday, 1 June 2019 at 14:24:11 UTC, Robert M. Münch wrote:
>
> The myFilter struct is the implementation which myClass.put() 
> should use to iterate over all objects.

Which ones? The E-objects, or the objects contained in myClass, 
which you don't want to know about?

> All things being only examples.

Sure. So, please, provide a minimal example, as I'm only guessing 
what use case you want to solve. Even if it is not compilable.

> So, the idea is, that I can provide a delegate which 
> foreach(...; myFilter(objects)) uses. Like a run-time plug-in.

Maybe you can. But "put" has to remain a function, not a template.

>
>> Do you have control about the contained classes? If so, it is 
>> a hint to implement the testing inside them. Like:
>> 
>> /* probably inside a templated mixin */
>> bool testfunction(inputs){...}
>> 
>> class myOtherClass(/*probably templated*/){... mixin 
>> testfunction ... & provide a put function}
>
> I thought about a mixin too. But this requires an understanding 
> of how myClass works. Which I what I want to avoid.

Over which objects your filter will be iterating then?

>> * So, you are not totally against the idea of modifying the 
>> foreign library, but you want to keep modifications small?
>
> Yes, because myClass is some external lib, which can be changed 
> to support this approach here. But not more.


More information about the Digitalmars-d-learn mailing list