【发布时间】:2016-06-04 11:20:58
【问题描述】:
好吧,假设我有一个像这样的struct:
struct Example{
uint8_t var0;
uint32_t var1;
uint16_t var2;
};
假设我有一个类的实例(注意 constexpr),如下所示:
constexpr Example exp = {10,11,12};
我想以某种方式将它的位表示形式放入模板参数包中。
一个例子:
typedef SomeTemplate<
/* first variable: 1 byte */ 10,
/* second variable: 4 bytes */ 11, 0, 0, 0,
/* third variable: 2 bytes */ 12, 0> mydef;
对此我的下意识反应是使用一些联合执行一些模板元编程魔术,但不幸的是,这是不可能的,因为以我想要的方式访问联合在编译时是未定义的行为(即错误)。
我所有这一切的最终目标是将用户定义类型的实例作为模板参数放入......就像这样:
template<Example exp>
class OtherClass{
};
所以我在这条兔子路线上的原因是我可以使用类 Example 并提供一个模板化构造函数,该构造函数将获取 uint8_ts 的列表,然后以这种方式初始化自身(因此仍然是 constexpr 并有效地允许我直接传入)。
那么有没有办法在编译时将任意结构实例转换为位模式(以及所有constexpr)?
【问题讨论】:
-
改用ffi 之类的有什么顾虑吗?
-
@user430051 我不明白这有什么帮助......你能启发我吗?
-
模板
,其中 *f 是指向函数的指针。 -
@user430051 其实我已经做了一些实验
-
@DarthRubik 也许这会有所帮助:stackoverflow.com/questions/15896579/…
标签: c++ templates design-patterns