forked from qt-creator/qt-creator
C++: template base class and default argument for template class
Fix code completion for case:
struct Foo
{
int bar;
};
template <typename T>
struct Base
{
T t;
};
template <typename T1 = Foo>
struct Derived : Base<T1>
{};
int main()
{
Derived<> foo;
foo.t.// no code completion
return 0;
}
Task-number: QTCREATORBUG-12606
Change-Id: Iadf2fae172739d0a5844c6b437fd2686616e64e7
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
committed by
Erik Verbruggen
parent
ce4dc86d58
commit
059cfde677
@@ -1158,11 +1158,13 @@ ClassOrNamespace *ClassOrNamespace::nestedType(const Name *name, ClassOrNamespac
|
||||
}
|
||||
} else {
|
||||
SubstitutionMap map;
|
||||
for (unsigned i = 0;
|
||||
i < argumentCountOfSpecialization && i < argumentCountOfInitialization;
|
||||
++i) {
|
||||
map.bind(templateSpecialization->templateParameterAt(i)->name(),
|
||||
templId->templateArgumentAt(i));
|
||||
for (unsigned i = 0; i < argumentCountOfSpecialization; ++i) {
|
||||
const Name *name = templateSpecialization->templateParameterAt(i)->name();
|
||||
FullySpecifiedType ty = (i < argumentCountOfInitialization) ?
|
||||
templId->templateArgumentAt(i):
|
||||
templateSpecialization->templateParameterAt(i)->type();
|
||||
|
||||
map.bind(name, ty);
|
||||
}
|
||||
SubstitutionEnvironment env;
|
||||
env.enter(&map);
|
||||
|
||||
Reference in New Issue
Block a user