aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-05-13 20:28:22 +0000
committerDouglas Gregor <dgregor@apple.com>2009-05-13 20:28:22 +0000
commita58861f6490780baec50689e06ca65f7438b85dc (patch)
tree78cdc106fe6c03577bdf944623185213ed37bf74 /lib/Sema/SemaTemplate.cpp
parenta33d9b4ebf732a5da6d56fd7319ff6c020789b1c (diff)
Explicit instantiations of templates now instantiate the definitions
of class members (recursively). Only member classes are actually instantiated; the instantiation logic for member functions and variables are just stubs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71713 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r--lib/Sema/SemaTemplate.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index adf9ea4941..22f2bef0e9 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -2335,9 +2335,10 @@ Sema::ActOnExplicitInstantiation(Scope *S, SourceLocation TemplateLoc,
InstantiateClassTemplateSpecialization(Specialization, true))
return true;
- // FIXME: Instantiate all of the members of the template (that
- // haven't already been instantiated!).
-
+ // Instantiate the members of this class template specialization.
+ InstantiatingTemplate Inst(*this, TemplateLoc, Specialization);
+ InstantiateClassTemplateSpecializationMembers(TemplateLoc, Specialization);
+
return DeclPtrTy::make(Specialization);
}