It\'s so easy to forget to mark a constructor \"explicit\": adding/removing args, making them optional etc. the single reliable way I know is to declare every constructor as
Backward compatibility at the time when explicit was added. The language was evolving and changing meaning of existing constructs in an evolving language is a sure way to make your users angry. It is still the case now, backward compatibility is something high in the mind of the comittee.