diff --git a/lib/Sema/SemaTemplateInstantiateExpr.cpp b/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 2a1ee88..8cd60ed 100644
--- a/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -90,7 +90,7 @@
     OwningExprResult VisitCXXZeroInitValueExpr(CXXZeroInitValueExpr *E);
     OwningExprResult VisitCXXNewExpr(CXXNewExpr *E);
     OwningExprResult VisitCXXDeleteExpr(CXXDeleteExpr *E);
-    // FIXME: UnaryTypeTraitExpr
+    OwningExprResult VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E);
     // FIXME: QualifiedDeclRefExpr
     OwningExprResult VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E);
     OwningExprResult VisitCXXUnresolvedConstructExpr(
@@ -992,6 +992,23 @@
 }
 
 Sema::OwningExprResult 
+TemplateExprInstantiator::VisitUnaryTypeTraitExpr(UnaryTypeTraitExpr *E) {
+  QualType T = SemaRef.InstantiateType(E->getQueriedType(), TemplateArgs,
+                                       /*FIXME*/E->getSourceRange().getBegin(),
+                                       DeclarationName());
+  if (T.isNull())
+    return SemaRef.ExprError();
+
+  SourceLocation FakeLParenLoc
+    = SemaRef.PP.getLocForEndOfToken(E->getSourceRange().getBegin());
+  return SemaRef.ActOnUnaryTypeTrait(E->getTrait(),
+                                     E->getSourceRange().getBegin(),
+                                     /*FIXME*/FakeLParenLoc,
+                                     T.getAsOpaquePtr(),
+                                     E->getSourceRange().getEnd());
+}
+
+Sema::OwningExprResult 
 TemplateExprInstantiator::VisitCXXExprWithTemporaries(
                                                   CXXExprWithTemporaries *E) {
   OwningExprResult SubExpr = Visit(E->getSubExpr());
