c++ 17¶
1. 模版参数包的使用:lambda立刻执行+折叠表达式¶
模版参数包:template
每个Component的处理需要独立作用域,还有避免变量名冲突。使用lambda闭包特性自动为每次展开创建上下文。
目的:实现对每个参数的单独处理,且不会出现模版代码膨胀,是处理参数包函数的范式
格式:
([](/*...*/){ /*...*/ }(), ...);
template<typename... Component>
struct ComponentGroup
{
};
using AllComponents =
ComponentGroup<TransformComponent, SpriteRendererComponent, CircleRendererComponent,
CameraComponent,
ScriptComponent,NativeScriptComponent,
Rigidbody2DComponent, BoxCollider2DComponent, CircleCollider2DComponent,
TextComponent>;