explicit can be applied to constructors to prevent implicit conversion
TO a type.
You can easily prevent implicit conversion FROM a type. Just call the
conversion operator a different name. For example, to allow
conversion from type FOO to int, instead of defining an implicit
conversion operator "int", just make a member function called
"asInt".