我有一个模板
enum MyEnum = {MyEnum _1, MyEnum _2, ...};
template<MyEnum T>
struct MyStruct {
...
}
现在我想基于条件创建特定类型的模板。但是,MyEnum中有一些开放的元素,所以我无法通过某种切换来实现它。
所以我正在寻找一种方法来做像
这样的事情void doStuff() {
MyEnum e = getType();
MyStruct<e> s;
}
但编译器抱怨e不是常量表达式。因为我有运行时信息所以它为什么这样做是有道理的。有没有办法优雅地构建模仿
的东西doStuff() {
MyEnum e = getType();
Switch(e) {
case MyEnum_1:
MyStruct<MyEnum_1> s;
....
case MyEnum_2: ...
...
}
原因是,如前所述,枚举列表可能会定期扩展/更改,我宁愿不必每次都在其他目的上维护代码。
答案 0 :(得分:-1)
也许这样的事情应该有效:
MyStruct<decltype(e)> var;