Я понимаю, что ключевое слово явное может использоваться для предотвращения неявного преобразования.
Например
Foo {
public:
explicit Foo(int i) {}
}
Мой вопрос заключается в том, при каких условиях неявное преобразование должно быть запрещено? Почему неявное преобразование вредно?