re PR c++/65333 (error: incomplete type used in nested name specifier)

PR c++/65333
	DR 1558
	* pt.c (dependent_type_p_r): Check both class and alias template args.

From-SVN: r221328
This commit is contained in:
Jason Merrill 2015-03-10 13:44:48 -04:00 committed by Jason Merrill
parent c42345448f
commit a4d66d7dc7
3 changed files with 26 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-03-10 Jason Merrill <jason@redhat.com>
PR c++/65333
DR 1558
* pt.c (dependent_type_p_r): Check both class and alias template args.
2015-03-10 Jakub Jelinek <jakub@redhat.com>
PR c/65120

View File

@ -20930,7 +20930,13 @@ dependent_type_p_r (tree type)
return true;
/* ... or any of the template arguments is a dependent type or
an expression that is type-dependent or value-dependent. */
else if (TYPE_TEMPLATE_INFO (type)
else if (CLASS_TYPE_P (type) && CLASSTYPE_TEMPLATE_INFO (type)
&& (any_dependent_template_arguments_p
(INNERMOST_TEMPLATE_ARGS (CLASSTYPE_TI_ARGS (type)))))
return true;
/* For an alias template specialization, check the arguments both to the
class template and the alias template. */
else if (alias_template_specialization_p (type)
&& (any_dependent_template_arguments_p
(INNERMOST_TEMPLATE_ARGS (TYPE_TI_ARGS (type)))))
return true;

View File

@ -0,0 +1,13 @@
// PR c++/65333
// { dg-do compile { target c++11 } }
template <typename T, T... Values> struct A
{
using type = int;
template <type... Suffix> using array = A<type, Values..., Suffix...>;
void
m_fn1 ()
{
array<>::data;
}
};