[PATCH] Fix core-DR1755 & 727 & llvm-PR17294 & PR16906 - partial & explicit specializations of member templates (class/variable/function)
Faisal Vali
faisalv at gmail.com
Fri May 23 13:41:27 PDT 2014
Added support for class scope explicit specializations of member template functions, variables and classes.
Will add a more detailed overview of the changes.
Essentially the following code now works (and similarly for class and variable templates):
template<class T> struct A {
template<class V> V* foo(V*, T*) { return 0; }
};
template<class T> template<>
char* A<T>::foo(char*, T*) { return (char*)(T*)0; }
char *pc = A<int>{}.foo((char*)0, (int*)0);
Please look at the testfile sematemplate/member-templates.cpp for more in depth examples.
Will modify the code once I have feedback!
http://reviews.llvm.org/D3445
Files:
include/clang/AST/DeclTemplate.h
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Sema/Sema.h
include/clang/Sema/SemaInternal.h
include/clang/Sema/Template.h
lib/AST/ASTDumper.cpp
lib/AST/Decl.cpp
lib/AST/DeclTemplate.cpp
lib/Parse/ParseAST.cpp
lib/Sema/SemaDecl.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaTemplateInstantiate.cpp
lib/Sema/SemaTemplateInstantiateDecl.cpp
lib/Sema/SemaType.cpp
test/CXX/drs/dr0xx.cpp
test/CXX/drs/dr5xx.cpp
test/CXX/temp/temp.decls/temp.class.spec/p6.cpp
test/CXX/temp/temp.spec/temp.expl.spec/p16.cpp
test/SemaCXX/cxx1y-variable-templates_in_class.cpp
test/SemaCXX/cxx1y-variable-templates_top_level.cpp
test/SemaTemplate/explicit-specialization-member.cpp
test/SemaTemplate/member-templates.cpp
test/SemaTemplate/ms-class-specialization-class-scope.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3445.9775.patch
Type: text/x-patch
Size: 234025 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140523/b38be34e/attachment.bin>
More information about the cfe-commits
mailing list