Argument template par défaut et données membres d'un classe non-template
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 :
Code:
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 |
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:
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 |
Pour une question de reproductibilité, je vous fournis un fichier principal sommaire:
Code:
1 2 3 4 5 6 7 8
| #include "other.hpp"
int main()
{
Other bar;
return 0;
} |
Quand je compile avec g++, j'obtiens le message d'erreur suivant :
Citation:
In file included from main.cpp:4:0:
other.hpp:12:3: erreur: invalid use of template-name ‘Default’ without an argument list
Pourriez-vous m'expliquer le problème?
Merci!