I am struggling to understand why the following code does not allow an implicit conversion to occur.
#include using namespace std; struct HasConv
http://en.cppreference.com/w/cpp/language/template_argument_deduction#Implicit_conversions
Type deduction does not consider implicit conversions (other than type adjustments listed above): that's the job for overload resolution, which happens later.