我想要一个类型生成函数 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;
}
问题:如何从运行时参数生成数据类型?