浏览代码

Perfect forward val to utMaybe

Aaron Gokaslan 3 年之前
父节点
当前提交
20755f4200
共有 1 个文件被更改,包括 10 次插入7 次删除
  1. 10 7
      code/Common/Maybe.h

+ 10 - 7
code/Common/Maybe.h

@@ -41,6 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #pragma once
 
 #include <assimp/ai_assert.h>
+#include <utility>
 
 namespace Assimp {
 
@@ -48,13 +49,14 @@ namespace Assimp {
 /// @tparam T   The type to store.
 template <typename T>
 struct Maybe {
-    /// @brief 
+    /// @brief
     Maybe() = default;
 
-    /// @brief 
-    /// @param val 
-    explicit Maybe(const T &val) :
-            _val(val), _valid(true) {}
+    /// @brief
+    /// @param val
+    template <typename U>
+    explicit Maybe(U &&val) :
+            _val(std::forward<U>(val)), _valid(true) {}
 
     /// @brief Validate the value
     /// @return true if valid.
@@ -64,11 +66,12 @@ struct Maybe {
 
     /// @brief Will assign a value.
     /// @param v The new valid value.
-    void Set(T &v) {
+    template <typename U>
+    void Set(U &&v) {
         ai_assert(!_valid);
 
         _valid = true;
-        _val = v;
+        _val = std::forward<U>(v);
     }
 
     /// @brief  Will return the value when it is valid.