我可以将一个字节流转换为MPL类型列表中的一个类型,其索引直到运行时才能知道吗?

时间:2014-12-30 14:04:18

标签: c++ c++11 boost types

所以,说我有:

所有类型的列表:

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]范围内获得< ... >

这可能吗?

0 个答案:

没有答案