【发布时间】:2016-05-16 17:48:45
【问题描述】:
我想将 U 类型的单个变量表示为 T 类型元素的数组,以便在编译时使用。 sizeof(T) 完美地划分了 sizeof(U),所以让 k = sizeof(U)/sizeof(T) 应该是std::array<T, k>。
问题是,我如何构造它(同样,在编译时)?我可以/应该使用铸造,即
* (reinterpret_cast<std::array<T,k> *>(&my_u))
或者可能是某种递归函数调用来设置它的元素?还是有更好/更好的方法?
【问题讨论】:
-
你为什么要这个?
-
听起来很像一个位域,甚至可能是一个联合。
-
不可能;你不能在编译时
reinterpret_cast。 -
@GManNickG:为了便于讨论,假设我有一些 constexpr 函数,它采用 T 类型的元素,我想将它应用于任意大小的类型(我不能只是重写它函数)。
-
@ecatmur:好的,因此我的问题是关于更好的选择。递归肯定是可行的。
标签: templates c++11 constructor stdarray