最初の部分はメンバー名のルックアップが原因であるため、失敗します。
私はあなたを紹介します:10.2/2 Member name lookup
次の手順では、クラススコープCでの名前ルックアップの結果を定義します。最初に、クラスおよびその各基本クラスサブオブジェクトでの名前のすべての宣言が考慮されます。1つのサブオブジェクトBのメンバー名fは、AがBの基本クラスサブオブジェクトである場合、サブオブジェクトAのメンバー名fを非表示にします。そのように非表示になっている宣言はすべて考慮から除外されます。using-declarationによって導入されたこれらの各宣言は、using-declarationによって指定された宣言を含むタイプのCの各サブオブジェクトからのものであると見なされます。
結果の宣言のセットがすべて同じタイプのサブオブジェクトからのものではない場合、またはセットに非静的メンバーがあり、別個のサブオブジェクトからのメンバーが含まれている場合、あいまいさがあり、プログラムの形式が正しくありません。それ以外の場合、そのセットはルックアップの結果です。
さて、テンプレート関数の問題について。
によると13.3.1/7 Candidate functions and argument list
候補が関数テンプレートである場合、候補関数テンプレートの特殊化は、テンプレート引数の演繹(14.8.3、14.8.2)を使用して生成されます。これらの候補は、通常の方法で候補関数として処理されます。指定された名前は、1つ以上の関数テンプレート、およびオーバーロードされた非テンプレート関数のセットを参照できます。このような場合、各関数テンプレートから生成された候補関数は、非テンプレート候補関数のセットと組み合わされます。
そして、あなたが読み続けるなら13.3.3/1 Best viable function
次の場合、F1はより優れた関数であると見なされます。
F1は非テンプレート関数であり、F2は関数テンプレートの特殊化です。
そのため、次のスニペットは非テンプレート関数をエラーなしでコンパイルして実行します。
D c;
c.f(1);