从C ++中的运行时给定参数中获取数据类型

时间:2015-03-04 16:56:20

标签: c++ templates

我想要一个类型生成函数 ality (不一定是一个真正的函数)从运行时给定的参数返回一个类型。例如,get_me_type('d')为我提供int类型。以下是我的尝试和失败。

template<uint8_t N>
struct MagicType {};

template<>
struct MagicType<'d'> {
    using type = int;
};

然后我可以从const char specilization声明类型。

   const char c = 'd';                   
   MagicType<c>::type y = 100;

看起来很好。但是,我不能让MagicType收到运行时参数。这使得MagicType对我无用。

// Error: complains about `t` is not a const expression. 
auto magic_helper(const uint8_t t, uint8_t* p) -> MagicType<t>::type {
    return *(MagicType<t>::type *)p;
}

问题:如何从运行时参数生成数据类型?

0 个答案:

没有答案