I went through a period of about 18 months where I actually read the Standard, cover-to-cover. I did this because I wanted to accomplish two things. One, I wanted to make sure I understood the difference between what worked on my compiler at that time (VC6) and what was actually "legal". Two, I wanted to illuminate some dark corners of C++ that I didn't know existed. Overall, I wanted a complete technical understanding of the language.
Some sections were more interesting than others. Some were very, very difficult to get anything from. If I were being generous, I'd say I retained about 10-15% of all the new knowledge I gained.
I learned that a lot of the thing I was doing was not actually legal. For example:
for( int i = 0; i < 10; ++i )
{
// magic
}
cout << i;
...and better ways to do things I was doing in a clumsy or inefficient way, for example:
MyGizmo gizmo;
memset(&gizmo, 0, sizeof(gizmo));
...might be improved by:
MyGizmo gizmo = {};
I'm currently working my way through the latest draft of the new Standard. There is a lot about C++0x that I don't know.
I may have retained very little from reading the standard, but one thing I did retain was the ability to actually read it. Now when I have a question about the language, the Standard is the first place I go, and I can usually find an answer in relatively short order.
Do I recommend this approach for others? No. Not unless you are a minutiae glutton.