私は2つの構造体を持っています:
// ----- 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) {}
// ...
}
これらは、次のような方法で使用されることになっています。
Convert(const_arg_adapter from, arg_adapter to)
複数の TypeX があり (約 5、さらに増える可能性があります)、それらのほとんどはプリミティブです。これは、異なるプロトタイプを維持することを避けるためです。
今私の質問;-)
const-ness をテンプレート パラメータにする方法はありますか? 私の目標は、構造体を 1 つだけ維持することです。
template <Qualifier CONSTNESS>
struct arg_adapter_t
{
...
CONSTNESS TypeA * valueA;
...
}