I am able to avoid the implicit conversion of a constructor using the explicit keyword. So now, conversions like A a1 = 10; can be avoided.
explicit
A a1 = 10;
You can circumvent this problem by using braced initialization. For example:
struct A { A(int _a) : a(_a) {} int a; }; A a{5}; // ok A b{1.123}; // compile error
Proof