Sorry, in what case? Are you referring to using values with what we have
today (pre-C++11 inheritance-style functors)...?

On Wed, Jan 28, 2015 at 1:12 PM, Alexander Rojas <[email protected]>
wrote:

> But in that case, since almost all of them are pure functors (don't keep a
> state), I think using values is more efficient than keeping pointers to
> instances, since it will allow the compiler to create more optimisations on
> them (and again, this only holds on stateless functors).
>
> On Wed, Jan 28, 2015 at 1:29 AM, Benjamin Mahler <
> [email protected]>
> wrote:
>
> > It's not something that is done consistently, but we've often used the ()
> > operator for things that feel like a function, and consequently may be
> > replaced with functions or lambdas as we move more towards C++11. Keep in
> > mind that the vast majority of our C++ was written before we had any
> C++11
> > support whatsoever. :)
> >
> > For example, if you want to filter a collection, you would want to pass a
> > functor predicate as opposed to a subclass of a Predicate type:
> >
> > filtered = filter(ints, [](int i) { return i > 5; });
> >
> > vs.
> >
> > template <typename T>
> > class GreaterThanFive : public Predicate
> > {
> >   bool apply(const T& t) { return t > 5; }
> > };
> >
> > filtered = filter(ints, predicate);
> >
> > Here the type system isn't really adding much value, what we really care
> > about is the *signature* of the predicate.
> >
> > On Tue, Jan 27, 2015 at 1:56 AM, Alexander Rojas <
> [email protected]>
> > wrote:
> >
> > > I was checking master.cpp, and I saw that a lot of the objects there
> are
> > > functors, which is OK unless you get a pointer to the functor instance
> > and
> > > then call its operator() which looks something like
> > > (*instance)(parameters). I have always find this syntax somewhat
> > confusing
> > > since it looks a lot like an old C cast.
> > >
> > > Is there a rationale for using this functor model everywhere?
> > >
> > > Isn’t it possible to use the operator as a wrapper for some method
> call,
> > > so when applied on a pointer we call the method directly? I find that
> > much
> > > more readable.
> >
>

Reply via email to