diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index 8c697cc..99e7b08 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -2769,10 +2769,21 @@
     for (LookupResult::iterator Oper = Operators.begin(),
                              OperEnd = Operators.end();
          Oper != OperEnd;
-         ++Oper)
-      AddMethodCandidate(cast<CXXMethodDecl>(*Oper), Args[0],
-                         Args+1, NumArgs - 1, CandidateSet,
-                         /*SuppressUserConversions=*/false);
+         ++Oper) {
+      if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(*Oper)) {
+        AddMethodCandidate(Method, Args[0], Args+1, NumArgs - 1, CandidateSet,
+                           /*SuppressUserConversions=*/false);
+        continue;
+      }
+      
+      assert(isa<FunctionTemplateDecl>(*Oper) && 
+             isa<CXXMethodDecl>(cast<FunctionTemplateDecl>(*Oper)
+                                                        ->getTemplatedDecl()) &&
+             "Expected a member function template");
+      AddMethodTemplateCandidate(cast<FunctionTemplateDecl>(*Oper), false, 0, 0, 
+                                 Args[0], Args+1, NumArgs - 1, CandidateSet, 
+                                 /*SuppressUserConversions=*/false);
+    }
   }
 }
 
diff --git a/test/SemaTemplate/copy-ctor-assign.cpp b/test/SemaTemplate/copy-ctor-assign.cpp
new file mode 100644
index 0000000..90fb013
--- /dev/null
+++ b/test/SemaTemplate/copy-ctor-assign.cpp
@@ -0,0 +1,36 @@
+// RUN: clang-cc -fsyntax-only -verify %s
+
+// Make sure that copy constructors and assignment operators are properly 
+// generated when there is a matching 
+
+// PR5072
+template<typename T>
+struct X {
+  template<typename U> 
+  X(const X<U>& other) 
+    : value(other.value + 1) { } // expected-error{{binary expression}}
+
+  template<typename U> 
+  X& operator=(const X<U>& other)  {
+    value = other.value + 1; // expected-error{{binary expression}}
+    return *this;
+  }
+  
+  T value;
+};
+
+struct Y {};
+
+X<int Y::*> test0(X<int Y::*> x) { return x; }
+X<int> test1(X<long> x) { return x; }
+
+
+X<int> test2(X<int Y::*> x) { 
+  return x; // expected-note{{instantiation}}
+}
+
+void test3(X<int> &x, X<int> xi, X<long> xl, X<int Y::*> xmptr) {
+  x = xi;
+  x = xl;
+  x = xmptr; // expected-note{{instantiation}}
+}
\ No newline at end of file
