Compiler will first match function name and number of argument, then
look for template deducted function, then use implicit conversion to
try match. So implicit conversion happens after template.
When will class implicit convert. 1) single ctor, 2) operator Type.
You should always avoid it. 1) use explicit single ctor 2) use nameconvert function instead of "operator Type". so string has function
c_str() instead operator char*() const. In example below, with explicit
keyword before ctor, you have to use A(2) or (A)2 to explicitly build a A
obj.