Правда, стоит сказать, что это чуть ли не самая сложная часть языка :)
Если можно, еще один вопрос. При применении правил разрешения перегрузки, после создания множества функций-кандидатов, следующим этапом производится сравнение аргументов. Вот при этом сравнении проверяется возможность неявной конверсии типов. В приведенном проблемном коде возможно и int->double, и int64_t->double, но выполняется только последнее. А вот для этого куска проблемы что можно покурить?