所以,说我有:
所有类型的列表:
typedef boost::mpl::list<T1, T2, T3, T4, T5>::type types;
序列化的所有对象的字节列表:
std::array<uint8_t, 100> bytes{0x...};
数组中每个对象的偏移量列表:
std::array<std::size_t, 10> offsets{0, 1, 2, 3, 5, 8, 10, 11, 16, 20};
字节数组中每个对象的类型的索引列表:
// T1, T1, T1, T2, T3, T2, T1, T5, T4
std::array<std::size_t, 10> offset_types{0, 0, 0, 1, 2, 1, 0, 4, 3, 4};
所以现在说我想从字节数组中获取对象N:
reinterpret_cast<
boost::mpl::at_c<
types,
offset_types[N] // <-- problem...
>::type
>(bytes[offsets[N]]);
这显然无效,因为我无法在offset_types[N]
范围内获得< ... >
。
这可能吗?