oui, tu peux faire ca. Tu as deux facon de faire ca. La premiere utilise deux type template. La definition generale est:
template<typename T1, typename T2>
D<T1>& operator= (D<T1>&, const D<T2>&);
Et tu peux faire un traitement general. Peut etre qu'il te faut specialiser les type template et le je ne suis plus completement sure de la syntaxe (j'ecris de memoire).
L'autre solution est de ne pas faire une fonction template generale, mais de faire une fonction non template directement poru les type que tu veux supporter (si tu ne souhaite pas que n'importe quel D<foo> puisse etre assigner un D<bar>). Et tu fais classiquement.
D<int>& operator= (D<int>& a, const D<float> & b);