summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplate.h
Commit message (Collapse)AuthorAgeFilesLines
* Move Sema's headers into include/clang/Sema, renaming a few along the way.Douglas Gregor2010-08-121-151/+0
| | | | llvm-svn: 110945
* When performing substitution of template arguments within the body ofDouglas Gregor2010-07-081-9/+22
| | | | | | | a template, be sure to include the template arguments from the injected-class-name. Fixes PR7587. llvm-svn: 107895
* After performing template argument deduction for a function template,Douglas Gregor2010-03-281-0/+34
| | | | | | | | | | | | | | | | | | | | check deduced non-type template arguments and template template arguments against the template parameters for which they were deduced, performing conversions as appropriate so that deduced template arguments get the same treatment as explicitly-specified template arguments. This is the bulk of PR6723. Also keep track of whether deduction of a non-type template argument came from an array bound (vs. anywhere else). With this information, we enforce C++ [temp.deduct.type]p17, which requires exact type matches when deduction deduces a non-type template argument from something that is not an array bound. Finally, when in a SFINAE context, translate the "zero sized arrays are an extension" extension diagnostic into a hard error (for better standard conformance), which was a minor part of PR6723. llvm-svn: 99734
* Implement partial ordering of function template specializations Douglas Gregor2009-09-141-0/+13
| | | | | | (C++ [temp.func.order]). llvm-svn: 81777
* Tighten up the conversion from a single-level template argument listDouglas Gregor2009-08-281-1/+2
| | | | | | | | | | to a multi-level template argument list by making it explicit. The forced auditing of callers found a bug in the instantiation of member classes inside member templates. I *love* static type systems. llvm-svn: 80391
* Remove the conversion from a multi-level template argument list back to a ↵Douglas Gregor2009-08-281-8/+0
| | | | | | single template argument list. We no longer need this crutch llvm-svn: 80390
* Implement template instantiation for member class templates.Douglas Gregor2009-08-281-4/+22
| | | | | | | | | | When performing template instantiation of the definitions of member templates (or members thereof), we build a data structure containing the template arguments from each "level" of template instantiation. During template instantiation, we substitute all levels of template arguments simultaneously. llvm-svn: 80389
* Collect multiple levels of template arguments into a new type,Douglas Gregor2009-08-281-0/+80
MultiLevelTemplateArgumentList. This is a baby step toward instantiating member templates; no intended functionality change yet. llvm-svn: 80380
OpenPOWER on IntegriCloud