I was curious as to why the C++ standards board/the guy who made C++ decided to make all non default constructors non explicit? Stroustrup said that with C you shoot yourself in the foot, but with C++ you blow your foot off... Why didn't they make all non default constructors explicit so that you cannot make a silly error such as a comparison operator with an object to, say an integer, which could cause garbage answers. Why not make it that if you want non explicit constructor you use the keyword
nonEeplicit constructorName(int a);
it would make allot of sense, and it would also cause an error if the user tried to compare the object incorrectly.