Fix -Wdeprecated-copy.

Bug: chromium:1213098
Change-Id: Ief039d18b65eb338f42e60f78c864c52bc9becc1
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/54928
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Peter Kasting <pkasting@google.com>
Commit-Queue: Peter Kasting <pkasting@google.com>
diff --git a/src/Common/Half.cpp b/src/Common/Half.cpp
index cde8190..d6d809a 100644
--- a/src/Common/Half.cpp
+++ b/src/Common/Half.cpp
@@ -85,14 +85,6 @@
 		return (float&)fp32i;
 	}
 
-	half &half::operator=(half h)
-	{
-		fp16i = h.fp16i;
-
-		return *this;
-	}
-
-
 	half &half::operator=(float f)
 	{
 		*this = half(f);
diff --git a/src/Common/Half.hpp b/src/Common/Half.hpp
index f2d378e..2f72fd4 100644
--- a/src/Common/Half.hpp
+++ b/src/Common/Half.hpp
@@ -21,11 +21,12 @@
 	{
 	public:
 		half() = default;
+		half(const half& h) = default;
 		explicit half(float f);
 
 		operator float() const;
 
-		half &operator=(half h);
+		half &operator=(const half& h) = default;
 		half &operator=(float f);
 
 	private:
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index fac6bb0..6af270c 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -213,6 +213,7 @@
 	using reference_underlying_type = T;
 
 	explicit Reference(Value *pointer, int alignment = 1);
+	Reference(const Reference<T> &ref);
 
 	RValue<T> operator=(RValue<T> rhs) const;
 	RValue<T> operator=(const Reference<T> &ref) const;
@@ -2702,6 +2703,9 @@
 }
 
 template<class T>
+Reference<T>::Reference(const Reference<T> &ref) = default;
+
+template<class T>
 RValue<T> Reference<T>::operator=(RValue<T> rhs) const
 {
 	Nucleus::createStore(rhs.value(), address, T::type(), false, alignment);
diff --git a/src/Shader/ShaderCore.hpp b/src/Shader/ShaderCore.hpp
index 6a0b285..be9e220 100644
--- a/src/Shader/ShaderCore.hpp
+++ b/src/Shader/ShaderCore.hpp
@@ -100,6 +100,8 @@
 		{
 		}
 
+		Register(const Register &rhs) = default;
+
 		Reference<Float4> &operator[](int i)
 		{
 			switch(i)
@@ -112,15 +114,7 @@
 			}
 		}
 
-		Register &operator=(const Register &rhs)
-		{
-			x = rhs.x;
-			y = rhs.y;
-			z = rhs.z;
-			w = rhs.w;
-
-			return *this;
-		}
+		Register &operator=(const Register &rhs) = default;
 
 		Register &operator=(const Vector4f &rhs)
 		{