On 2019-05-31 11:07:00 +0000, Alex said:
Not sure, if I understood your problem correctly.
I can imagine... I try my best :-)
It is meant that the class myClass defines an array of myOtherClass objects?
Yes. So there is one class having an array of other stuff.
The code does not compile and it does not provide an example, how you
would apply the pattern, even in a non-compileable way...
The code is just to show the problem and not meant to compile. I
couldn't get anything to compile...
However, commonly, a filter is a higher order function, which expects a
predicate acting on each element of a set. Even if it's higher order,
it is still a function, not a delegate. Therefore, it is unexpected,
that you want to store something inside the filter.
I choose filter to give a hint what the idea is, not meant to be that I
want to use a filter.
Said this, I for myself had a similar problem. I solved this by
reversing the hierarchy: I templated my objects I wanted to use the
filter on with the filter function and removed the need of the template
parameter inside the filter.
The thing is, myClass is not under my control. It's coming from a
library I don't maintain and I don't want to mess around with the code
or if, as minimalistic as possible. That's why I was thinking about
providing a put(T)... function.
My first idea was to sub-class myClass, but objects is private, so no
chance to get access to it.
You could still write a general filter function in this case, if you
want. For example, you could use mixins for this...
Then myClass needs to somehow get the mixin in.
So, to summurize the problem: Given a class that manages an array of
things as an OutputRange how can I provide a put() function with
something like a filter-predicate? I only want to put() to some of the
things, not all.
Robert M. Münch
smarter | better | faster