If I have a range based for loop in C++11,
for(auto const &ticket : ticketStrip->tickets()) {
ticket->ClearCalled();
}
Why am I able to call non const methods on the ticket within the loop, such as ClearCalled() when it is not marked as const?
void Ticket::ClearCalled() { ... }
ClearCalled does indeed modify the ticket internals, so it shouldn't be marked as const. I know I should be using
auto &ticket
but I just tried
auto const &ticket
and the compiler accepted it.
The type of ticket is
boost::shared_ptr<AbstractMainStageTicket>
and putting some new code in:
ticket->ClearCalled();
ticket.reset();
makes the compiler flag up the error that reset is not const.
Thanks for your help!
I'm using the GNU 4.6 toolchain for Android.
From your syntax it seems that ticket
is a (smart?) pointer.
ticket->ClearCalled();
Which means that the type of ticket
is probably something like
const std::shared_ptr< Ticket >& ticket
What you would need is
const std::shared_ptr< const Ticket >& ticket;
// ^^^^^
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