Q : std::function 在同一个数组中有不同的类型

Q : std::function with different type inside the same array

我正在开发一个 Entity Component System 用于学习目的的库,我正在尝试对我的设计进行重大更改。

我打算将 class System 拆分为一个 update 调用多个 update 函数。但是这些函数可以是任何东西,不管是不是函数。所以我以很多不同的 std::function 类型结束。

出于性能原因,我真的不想使用 tuple(或者它可能真的很有效,告诉我)。我想使用 std::array,但如何将各种 std::function 放在一起?好吧,实际上它是一个包含 std::functionstruct,但因此 struct 会遇到相同类型的问题。

如果数组可以在编译时生成(没有参数),那将是最好的。

有一个说明(不是真实代码)说明我希望它如何工作。

//Function to add a function in the list [[Call by User]]
addSystemBloc<Position, Speed>(function(ArgIDontKnow, Position, Speed), otherThings);

//Function to generate a structure (probably a graph) linked to the array
generateGraph();

//Inside the initialization of the System using the function we just add [[ Call by User ]]
addArgument(id, arg); //id is not really nice, and this guy know the function he wants to add an arg (with std::bind)

//Somwhere in the main loop [[ Call by Library ]]
invoke(func, Position, Speed);

总之谢谢

数组是指定类型值的固定长度序列。 元组是指定类型值的固定长度序列。 没有方法的结构是指定类型值的固定长度序列。

这些在检索元素(即常量)和移动/复制(即 sizeof(Thing) 字节)方面都具有相同的性能特征。

你在想什么"performance problems"?

参见:http://en.cppreference.com/w/cpp/language/object