J'ai deux struct:const-ness comme argument de modèle
// ----- non-const -----
struct arg_adapter
{
EArgType type; // fmtA, fmtB, ...
union
{
TypeA * valueA;
TypeB * valueB;
// ... more types
}
arg_adapter(TypeA & value) : type(fmtA), valueA(&value) {}
arg_adapter(TypeB & value) : type(fmtB), valueB(&value) {}
// ...
}
// ----- const version -----
struct const_arg_adapter
{
EArgType type; // fmtA, fmtB, ...
union
{
TypeA const * valueA;
TypeB const * valueB;
// ... more types
}
arg_adapter(TypeA const & value) : type(fmtA), valueA(&value) {}
arg_adapter(TypeB const & value) : type(fmtB), valueB(&value) {}
// ...
}
Ils sont censés être utilisés dans des méthodes telles que:
Convert(const_arg_adapter from, arg_adapter to)
Il y a plusieurs TYPEx »(environ 5, peut devenir plus), la plupart d'entre eux primitifs. Ceci pour éviter de conserver différents prototypes.
Maintenant, ma question ;-)
Y at-il un moyen de faire la const-ness un paramètre de modèle? Mon objectif est de maintenir un seul struct, à savoir
template <Qualifier CONSTNESS>
struct arg_adapter_t
{
...
CONSTNESS TypeA * valueA;
...
}
Peut-être qu'ajouter quelque 'typedef' éviterait de répéter le' typename 'appliquer trop :: type' :) –
@Matthieu en C++ 0x, on pourrait juste dire' appliquer & '. Je vais adorer les alias de template :) –
et moi aussi :) Je suis impatient d'avoir des alias de templates et des templates variés, je me demande juste quel compilateur va le faire en premier:/ –