使用模板编译时计算使用 const 值初始化数组
initialize an array using const values using a template compilation-time computation
我正在尝试写这样的东西:
template <typename type,int p,int q = 1> struct const4array
{
static const type value [] = { type(p)/type(q) , type(p)/type(q) , type(p)/type(q) , type(1) } ;
};
double xx [] = { 0.5 , 0.5 , 0.5 , 1 } ;
double yy [] = const4array<double,1,2>::value ; // I would like to have : xx == yy
我认为这段代码对于人类开发人员来说很容易理解,但显然对于编译器来说并不容易(它 returns 有很多错误)。
是否可以做我想做的事,如果可以,如何正确做?
(我发现许多其他问题看起来像这个问题,但与我的问题不够接近)。
提前致谢!
普通 C-style 数组只能使用 {}
语法初始化,不能从其他数组 copy-initialized 初始化。但是,您可以使用对象模拟或包装数组(如 std::array
),因为它们可以被复制并用于初始化。
我正在尝试写这样的东西:
template <typename type,int p,int q = 1> struct const4array
{
static const type value [] = { type(p)/type(q) , type(p)/type(q) , type(p)/type(q) , type(1) } ;
};
double xx [] = { 0.5 , 0.5 , 0.5 , 1 } ;
double yy [] = const4array<double,1,2>::value ; // I would like to have : xx == yy
我认为这段代码对于人类开发人员来说很容易理解,但显然对于编译器来说并不容易(它 returns 有很多错误)。
是否可以做我想做的事,如果可以,如何正确做? (我发现许多其他问题看起来像这个问题,但与我的问题不够接近)。
提前致谢!
普通 C-style 数组只能使用 {}
语法初始化,不能从其他数组 copy-initialized 初始化。但是,您可以使用对象模拟或包装数组(如 std::array
),因为它们可以被复制并用于初始化。