【发布时间】:2016-10-23 14:01:01
【问题描述】:
给定一个函数指针数组function_sig,我想将它初始化为一组模板函数指针,这些指针通过模板参数作为索引。这可能吗?
例如
template<int I>
void fn() { /* do something */ }
typedef void(*function_sig)();
template<int ARRAY_SIZE>
struct items
{
static function_sig array[ARRAY_SIZE];
};
template<int ARRAY_SIZE>
function_sig items<ARRAY_SIZE>::array = { /* what do I put here? */ };
那么,我可以在初始化列表中添加一些东西,以便将 items<ARRAY_SIZE>::array 初始化为 { fn<0>, fn<1>, ..., fn<ARRAY_SIZE-1> }?
注意:我知道一种使用预处理器魔法的方法,但我想尝试不使用它。目前,我想我将不得不取消数组并将其替换为像数组一样的东西,但这会导致在索引伪数组时搜索 O(N),我'不想做。
【问题讨论】:
-
@MicroVirus,可能,尽管这是针对 c++11 编译器 (VS2013)。我仍然会通读那些,看看我是否能想出一些东西。谢谢。
标签: c++ arrays c++11 initializer-list static-initialization