diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 0bf832f..4f9fcc3 100644
--- a/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -58,7 +58,8 @@
     Decl *VisitClassTemplateDecl(ClassTemplateDecl *D);
     Decl *VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
     Decl *VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D);
-
+    Decl *VisitUnresolvedUsingDecl(UnresolvedUsingDecl *D);
+      
     // Base case. FIXME: Remove once we can instantiate everything.
     Decl *VisitDecl(Decl *) { 
       assert(false && "Template instantiation of unknown declaration kind!");
@@ -740,6 +741,24 @@
   return Inst;
 }
 
+Decl *
+TemplateDeclInstantiator::VisitUnresolvedUsingDecl(UnresolvedUsingDecl *D) {
+  NestedNameSpecifier *NNS = 
+    SemaRef.SubstNestedNameSpecifier(D->getTargetNestedNameSpecifier(), 
+                                     D->getTargetNestedNameRange(), 
+                                     TemplateArgs);
+  if (!NNS)
+    return 0;
+  
+  CXXScopeSpec SS;
+  SS.setRange(D->getTargetNestedNameRange());
+  SS.setScopeRep(NNS);
+  
+  return SemaRef.BuildUsingDeclaration(D->getLocation(), SS, 
+                                       D->getTargetNameLocation(), 
+                                       D->getTargetName(), 0, D->isTypeName());
+}
+
 Decl *Sema::SubstDecl(Decl *D, DeclContext *Owner,
                       const TemplateArgumentList &TemplateArgs) {
   TemplateDeclInstantiator Instantiator(*this, Owner, TemplateArgs);
