【发布时间】:2011-04-10 19:54:58
【问题描述】:
我有两个结构:
// ----- 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 成为模板参数? 我的目标是只维护一个结构,即
template <Qualifier CONSTNESS>
struct arg_adapter_t
{
...
CONSTNESS TypeA * valueA;
...
}
【问题讨论】:
标签: c++ templates qualifiers