C ++变量类型选择取决于开关

时间:2014-08-26 18:15:25

标签: c++ templates c++11

我试图实现以下内容:

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但是缺点是类型依赖于作为布尔输出的谓词。如果这种情况有标准/最佳实践,我很好奇吗?感谢您的任何见解。

3 个答案:

答案 0 :(得分:1)

类型是编译时构造。如果您需要能够在运行时打开它们,则需要一个有区别的联合,例如Boost.Variant

答案 1 :(得分:1)

不可能这样做。 类型必须在编译时确定。 C ++被严格打字。 放宽这个规则的唯一方法是多态性。

答案 2 :(得分:0)

也许你想要一个union,或许你想重新审视你的设计......