]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/value.h
Use variadic templates and forwarding references for better flexibility
[libs/datafile.git] / source / value.h
index c272bcf81dc57b34e9e87f66112a997691aec282..bcddd6ed3aebb579256cd0a11061a76312a4a95c 100644 (file)
@@ -18,12 +18,13 @@ private:
 
 public:
        template<typename T>
-       Value(T d):
+       Value(T &&d):
                sig(TypeInfo<T>::signature),
-               data(static_cast<typename TypeInfo<T>::Store>(d))
+               data(static_cast<typename TypeInfo<T>::Store>(std::forward<T>(d)))
        { }
 
-       Value(Symbol d): sig(TypeInfo<Symbol>::signature), data(d) { }
+       Value(const Symbol &d): sig(TypeInfo<Symbol>::signature), data(d) { }
+       Value(Symbol &&d): sig(TypeInfo<Symbol>::signature), data(std::move(d)) { }
 
        template<typename T>
        typename TypeInfo<T>::Load get() const