C doesn't implicitly convert one struct into another. Why implicitly convert one class into another just because I created a constructor in one class that takes the other class as a parameter? The "explicit" keyword should have been "implicit", with the default behavior reversed.
I also mentioned compatibility with C semantics.
"The Design and Evolution of C++" contains lots of such examples.