Bonjour,
je cherche à utiliser un argument template par défaut à l'intérieur d'une classe non-template et je n'y arrive pas.
Concrètement, je crée une première classe template acceptant un argument template par défaut :
Dans une autre classe non-template, je tente de déclarer une donnée membre de type Default en exploitant l'argument template par défaut empty:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef DEFAULT_HPP #define DEFAULT_HPP struct empty{}; template< class T = empty > class Default { }; #endif
Pour une question de reproductibilité, je vous fournis un fichier principal sommaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef OTHER_HPP #define OTHER_HPP #include "default.hpp" class Other { private: Default m_foo; // ce que je pense être équivalent à Default<empty> m_foo; }; #endif
Quand je compile avec g++, j'obtiens le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include "other.hpp" int main() { Other bar; return 0; }
Pourriez-vous m'expliquer le problème?In file included from main.cpp:4:0:
other.hpp:12:3: erreur: invalid use of template-name ‘Default’ without an argument list
Merci!
Partager