我试图实现以下内容:
int x = <random integer in range [0,3]>;
<some declaration of T>
switch (x) {
case 0:
T = int;
break;
case 1:
T = double;
break;
case 2:
T = short;
break;
case 3:
T = char;
break;
default:
T = long long;
break;
}
// type of y is dependent on whatever T resolved to in switch
T y;
所以我知道std :: conditional但是缺点是类型依赖于作为布尔输出的谓词。如果这种情况有标准/最佳实践,我很好奇吗?感谢您的任何见解。
答案 0 :(得分:1)
类型是编译时构造。如果您需要能够在运行时打开它们,则需要一个有区别的联合,例如Boost.Variant。
答案 1 :(得分:1)
不可能这样做。 类型必须在编译时确定。 C ++被严格打字。 放宽这个规则的唯一方法是多态性。
答案 2 :(得分:0)
也许你想要一个union
,或许你想重新审视你的设计......