Tengo dos estructuras:const-dad como parámetro de plantilla
// ----- 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) {}
// ...
}
se supone que deben usarse en métodos tales como:
Convert(const_arg_adapter from, arg_adapter to)
Hay Typex múltiple'(aproximadamente 5, puede llegar a ser más), la mayoría de ellos primitivos. Esto es para evitar mantener diferentes prototipos.
Ahora mi pregunta ;-)
¿Hay una manera de hacer la const-ness un parámetro de plantilla? Mi objetivo es mantener una sola estructura, es decir
template <Qualifier CONSTNESS>
struct arg_adapter_t
{
...
CONSTNESS TypeA * valueA;
...
}
Quizás, además de agregar un 'typedef', se evite repetir' typename apply :: type' demasiado :) –
@Matthieu en C++ 0x, podríamos decir 'apply &'. Voy a adorar los alias de la plantilla :) –
, así que lo haré, yo también :) Estoy esperando ansiosamente el alias de plantilla y las plantillas variadic, solo me pregunto qué compilador lo hará primero:/ –