Ah oui, je vais voir du côté de std::sqrt... voir comment c'est codé.
En fait, la fonction sqrt n'est qu'un exemple, j'ai besoin de stocker une grosse matrice et je ne suis sûr ni qu'elle tiendrait en mémoire, ni de quelle précision de calcul j'aurais besoin. Pour info, sqrt me servirait à calculer le cosinus entre deux rangs ou deux colonnes de la matrice, mais j'en ai d'autres pas trop standards à base de décalage de bits sur des flottants!
Pour l'instant j'ai des gros #ifdef REALISDOUBLE... Je ne vois que les templates en C++ pour me faire un code identiquement optimisé.
Une autre possibilité serait d'utiliser sizeof(Real), comme dans la librairie standard <math.h>.
Le problème de l'instanciation n'en est pas un, il me semble, car double et float sont convertibles entre eux d'une part. D'autre part, il me semble que normalement sur une condition toujours vraie (ou fausse) le compilo ne génère pas le code correspondant au if, ni la condition fausse (ou vraie).