summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/ms-function-specialization-class-scope.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Implement C++ DR727, which permits explicit specializations at class scope.Richard Smith2018-03-161-16/+8
| | | | | | | | | More generally, this permits a template to be specialized in any scope in which it could be defined, so this also supersedes DR44 and DR374 (the latter of which we previously only implemented in C++11 mode onwards due to unclarity as to whether it was a DR). llvm-svn: 327705
* [-fms-extensions] Don't crash on explicit class-scope specializations & ↵David Majnemer2016-06-101-0/+9
| | | | | | | | | | | | | | default arguments The code had a typo it was doing: Param->setUninstantiatedDefaultArg(Param->getUninstantiatedDefaultArg()); This is a no-op but may assert, we wanted to do: Param->setUninstantiatedDefaultArg(OldParam->getUninstantiatedDefaultArg()); This fixes PR28082. llvm-svn: 272425
* Add a testcase and a FIXME for an accepts-invalid.Richard Smith2013-12-131-8/+19
| | | | llvm-svn: 197280
* Detabify and fix formatting.Richard Smith2013-12-131-67/+40
| | | | llvm-svn: 197279
* Properly reenter multiple contexts when parsing a late-parsed function templateRichard Smith2013-04-291-0/+1
| | | | | | within a dependent context. Patch by Will Wilson (+clang-format)! llvm-svn: 180702
* Make explicit specializations at class scope workNico Weber2012-06-251-0/+21
| | | | | | | for non-type template parameters in microsoft mode. PR12709. llvm-svn: 159147
* fix typo in test.Francois Pichet2011-08-141-4/+4
| | | | llvm-svn: 137592
* Implement function template specialization at class scope extension in ↵Francois Pichet2011-08-141-0/+71
Microsoft mode. A new AST node is introduced: ClassScopeFunctionSpecialization. This node holds a FunctionDecl that is not yet specialized; then during the class template instantiation the ClassScopeFunctionSpecialization will spawn the actual function specialization. Example: template <class T> class A { public: template <class U> void f(U p) { } template <> void f(int p) { } // <== class scope specialization }; This extension is necessary to parse MSVC standard C++ headers, MFC and ATL code. BTW, with this feature in, clang can parse (-fsyntax-only) all the MSVC 2010 standard header files without any error. llvm-svn: 137573
OpenPOWER on IntegriCloud