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;
I just want to add that the A(double) = delete is a C++11 addition.
A(double) = delete
C++11
If for whatever reason you cannot use this relatively new construct, you can simply declare it as private as this:
class A{ public: A(int); private: A(double); }