"and it could allow arbitrary piece of code to read any protected member by just making up a``throw-away""class that reads out members, for example of std: :stack :."
As you see this would cause way too much damage.