J'ai une classe de modèlemodèle Extern: déclaration ne déclare rien
expof.h:
template <class T>
class ExpOf{
...
}
que je l'utilise à plusieurs reprises dans mon code pour exemple T = double
[et d'autres classes que ExpOf
ne devrait pas savoir quelque chose sur]. donc je pensais que ce serait une bonne idée de compiler une fois pour toutes [ou deux fois ...]
expofdouble.cpp:
#include "expof.h"
template class ExpOf<double>;
et le déclarer dans un en-tête donc il ne serait pas être compilé quand expof.h est inclus.
expofdouble.h:
extern template ExpOf<double>;
Quand je compile ce (clang-800.0.42.1) que je reçois (nombreux) avertissements
expofdouble.h: warning: declaration does not declare anything [-Wmissing-declarations]
extern template ExpOf<double>;
^~~~~~~~~~~~~
Suis-je obtenir le comportement souhaité? Pourquoi l'avertissement alors? Dois-je le faire différemment?
Merci, c'était simple et facile après votre commentaire. Je reçois cependant une erreur de temps de liaison dépendant du compilateur, car 'template class' n'instancie pas un constructeur de déplacement explicitement par défaut ... Cela semble être un bug connu de certains compilateurs, [voir ici] (http://stackoverflow.com/questions/38929950/automatic-constructor-in-explicitly-instantiated-class-template) au cas où cela aiderait quelqu'un. – Lio