跳转至

c++ 17

1. 模版参数包的使用:lambda立刻执行+折叠表达式

模版参数包:template,而我们可以将不同的Component一起打包成一个模版参数包传入,用来减少模版膨胀。

每个Component的处理需要独立作用域,还有避免变量名冲突。使用lambda闭包特性自动为每次展开创建上下文。

目的:实现对每个参数的单独处理,且不会出现模版代码膨胀,是处理参数包函数的范式

格式:

([](/*...*/){ /*...*/ }(), ...);
应用: 一键注册:RegisterComponent(AllComponents{}); 其中
    template<typename... Component>
    struct ComponentGroup
    {
    };

    using AllComponents =
        ComponentGroup<TransformComponent, SpriteRendererComponent, CircleRendererComponent,
        CameraComponent, 
        ScriptComponent,NativeScriptComponent,
        Rigidbody2DComponent, BoxCollider2DComponent, CircleCollider2DComponent,
        TextComponent>;