Robert, 2 minor details:
1. Is there a reason you used io_error_if(true...) instead of io_error(...)?
No, just my ignorance. This was my first real venture into boost code and io_error_if was the first appropriate function I found.
2. I think the return is not necessary since we throw anyway.
You are right.
As to who is responsible for the code I have no idea. Should we just propose the changes on the boost development list?
Cheers,
Robert