Index: include/clang/Sema/Overload.h
===================================================================
--- include/clang/Sema/Overload.h	(revision 160413)
+++ include/clang/Sema/Overload.h	(working copy)
@@ -757,7 +757,7 @@
       for (iterator i = begin(), e = end(); i != e; ++i) {
         for (unsigned ii = 0, ie = i->NumConversions; ii != ie; ++ii)
           i->Conversions[ii].~ImplicitConversionSequence();
-        if (i->FailureKind == ovl_fail_bad_deduction)
+        if (!i->Viable && i->FailureKind == ovl_fail_bad_deduction)
           i->DeductionFailure.Destroy();
       }
     }
