You're implementing operator<< as an inserter into our Check object here. In this case, it looks like the right solution is to just have your insertion operator actually be non-const, since it would be nonsensical to use it on a const object (because it's mutating logical object state).