瀏覽代碼

components are POD made up of primitive types, it doesn't make much sense to use forwarding references

Michele Caini 9 年之前
父節點
當前提交
f713620bbb
共有 3 個文件被更改,包括 10 次插入10 次删除
  1. 2 2
      README.md
  2. 4 4
      src/component_pool.hpp
  3. 4 4
      src/registry.hpp

+ 2 - 2
README.md

@@ -247,7 +247,7 @@ A custom pool should expose at least the following member functions:
 * `bool has(entity_type entity) const noexcept;`
 * `const component_type & get(entity_type entity) const noexcept;`
 * `component_type & get(entity_type entity) noexcept;`
-* `template<typename... Args> component_type & construct(entity_type entity, Args&&... args);`
+* `template<typename... Args> component_type & construct(entity_type entity, Args... args);`
 * `void destroy(entity_type entity);`
 * `void reset();`
 
@@ -276,7 +276,7 @@ A generic pool should expose at least the following memeber functions:
 * `template<typename Component> bool has(entity_type entity) const noexcept;`
 * `template<typename Component> const Comp & get(entity_type entity) const noexcept;`
 * `template<typename Component> Comp & get(entity_type entity) noexcept;`
-* `template<typename Component, typename... Args> Comp & construct(entity_type entity, Args&&... args);`
+* `template<typename Component, typename... Args> Comp & construct(entity_type entity, Args... args);`
 * `template<typename Component> void destroy(entity_type entity);`
 * `template<typename Component> void reset();`
 * `void reset();`

+ 4 - 4
src/component_pool.hpp

@@ -74,7 +74,7 @@ public:
     }
 
     template<typename... Args>
-    component_type & construct(entity_type entity, Args&&... args) {
+    component_type & construct(entity_type entity, Args... args) {
         assert(!valid(entity));
 
         if(!(entity < reverse.size())) {
@@ -83,7 +83,7 @@ public:
 
         reverse[entity] = direct.size();
         direct.emplace_back(entity);
-        data.push_back({ std::forward<Args>(args)... });
+        data.push_back({ args... });
 
         return data.back();
     }
@@ -167,8 +167,8 @@ struct  ComponentPool final {
     }
 
     template<typename Comp, typename... Args>
-    Comp & construct(entity_type entity, Args&&... args) {
-        return std::get<ComponentPool<Comp>>(pools).construct(entity, std::forward<Args>(args)...);
+    Comp & construct(entity_type entity, Args... args) {
+        return std::get<ComponentPool<Comp>>(pools).construct(entity, args...);
     }
 
     template<typename Comp>

+ 4 - 4
src/registry.hpp

@@ -291,8 +291,8 @@ public:
     }
 
     template<typename Comp, typename... Args>
-    Comp & assign(entity_type entity, Args&&... args) {
-        return pool.template construct<Comp>(entity, std::forward<Args>(args)...);
+    Comp & assign(entity_type entity, Args... args) {
+        return pool.template construct<Comp>(entity, args...);
     }
 
     template<typename Comp>
@@ -316,8 +316,8 @@ public:
     }
 
     template<typename Comp, typename... Args>
-    void replace(entity_type entity, Args&&... args) {
-        pool.template get<Comp>(entity) = Comp{std::forward<Args>(args)...};
+    void replace(entity_type entity, Args... args) {
+        pool.template get<Comp>(entity) = Comp{args...};
     }
 
     entity_type clone(entity_type from) {