I'm reading "The C++ Programming Language (4th edition)" and I ran into this:
template<class C, class Oper>
void for_all(C& c, Oper op) // assume that C is a container of pointers
{
for (auto& x : c)
op(*x); // pass op() a reference to each element pointed to
}
So from what I understand, we're iterating through c
and getting a reference to x
, which is the current iteration. x
is then passed to the function call operator of op
, but it is dereferenced first? Why would x
be dereferenced?
You said in a comment in the posted code:
// assume that C is a container of pointers
That means x
is a reference to a pointer. *x
evaluates to be the object that pointer points to.
op
must expect an object or a reference to an object, not a pointer to an object.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With