summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/temp/temp.spec/temp.explicit
Commit message (Collapse)AuthorAgeFilesLines
...
* Improve diagnostics when parsing something likeDouglas Gregor2009-10-301-2/+1
| | | | | | | | template<> struct foo<int> { ... }; where "foo" does not refer to a template. Fixes PR3844. llvm-svn: 85616
* TestDouglas Gregor2009-10-271-0/+33
| | | | | | | explicit-instantiation-declaration-after-explicit-instantiation-definition errors. This wraps up explicit template instantiation for now. llvm-svn: 85347
* Implement proper linkage for explicit instantiation declarations ofDouglas Gregor2009-10-271-0/+66
| | | | | | | | | | | | | | | | | | | | | inlined functions. For example, given template<typename T> class string { unsigned Len; public: unsigned size() const { return Len; } }; extern template class string<char>; we now give the instantiation of string<char>::size available_externally linkage (if it is ever instantiated!), as permitted by the C++0x standard. llvm-svn: 85340
* Explicit instantiation suppresses the instantiation of non-inlineDouglas Gregor2009-10-271-0/+59
| | | | | | | function template specializations and member functions of class template specializations. llvm-svn: 85300
* An explicit instantiation definition only instantiations those classDouglas Gregor2009-10-271-0/+27
| | | | | | | | | members that have a definition. Also, use CheckSpecializationInstantiationRedecl as part of this instantiation to make sure that we diagnose the various kinds of problems that can occur with explicit instantiations. llvm-svn: 85270
* Test for interaction between explicit instantiations and specializationsDouglas Gregor2009-10-271-0/+36
| | | | llvm-svn: 85244
* Test various aspects of explicit instantiation that were already implemented.Douglas Gregor2009-10-273-0/+38
| | | | llvm-svn: 85243
* Only set the point of instantiation for an implicit or explicitDouglas Gregor2009-10-271-6/+4
| | | | | | | | | | instantiation once we have committed to performing the instantiation. As part of this, make our makeshift template-instantiation location information suck slightly less. Fixes PR5264. llvm-svn: 85209
* Check the interactions between explicit instantiations and templateDouglas Gregor2009-10-151-0/+16
| | | | | | | | specializations. Work in progress; there's more cleanup required to actually use the new CheckSpecializationInstantiationRedecl checker uniformly. llvm-svn: 84185
* Diagnose explicit instantiations of function templates and memberDouglas Gregor2009-10-153-2/+18
| | | | | | | | functions/static data members of class template specializations that do not have definitions. This is the latter part of [temp.explicit]p4; the former part still needs more testing. llvm-svn: 84182
* More explicit template instantiation. Now we're checking for moreDouglas Gregor2009-10-151-0/+55
| | | | | | | | cases where an explicit instantiation requires a definition; the remainder of these checks will come with the implementation of paragraph 4 of [temp.explicit]. llvm-svn: 84181
* Additional semantic checking for explicit template instantiations,Douglas Gregor2009-10-141-0/+43
| | | | | | | focusing on the scope- and qualifier-related semantic requirements in C++ [temp.explicit]p2. llvm-svn: 84154
* Check the implicit instantiation of a static data member of a classDouglas Gregor2009-10-141-3/+6
| | | | | | template that has no out-of-line definition. llvm-svn: 84141
* Give explicit and implicit instantiations of static data members ofDouglas Gregor2009-10-141-0/+26
| | | | | | | | class templates the proper linkage. Daniel, please look over the CodeGenModule bits. llvm-svn: 84140
* Testing and some minor fixes for explicit template instantiation.Douglas Gregor2009-10-142-0/+99
llvm-svn: 84129
OpenPOWER on IntegriCloud