Salut tout le monde,
En ce moment je fais un peu de métaprogrammation en c++ depuis que j’ai regardé cette conférence (CppConf) et cet article sur developpez . com (Article)
J’ai plusieurs questions très différentes à poser :
1) Je ne comprend pas pourquoi ce code ne fonctionne pas :
1 2 3 4 5 6 7 8 9 10 | inline int doSomething() { return 0; } int main() { constexpr int value=doSomething(); // Erreur apparemment, doSomething ne peut pas être évalué à la compilation. return 0; } |
Je sais que je devrais utiliser constexpr au lieu de inline mais vu que la fonction doSomething est inline et peut être exécuté à la compilation je ne comprend pas pourquoi ça ne marche pas.
2)Pourquoi les pointeurs dans les paramètres template doivent poivent pointer sur un objet "linkable".
1 2 3 4 5 6 7 | template <const int *pointeur> struct Test{} int main() { const int tab[]={1,2,3,5}; Test<tab> test // Erreur !!! tab n'a pas de linkage ! return 0; } |
3) je voudrais approfondir mes connaissance sur les Templates (je sais le sujet est vaste ) ,est ce que C++ Templates - The Complete Guide serait un livre que vous me conseilleriez , sinon quelles lectures me conseilleriez vous ?
Bon lundi de Pâques à tous