re PR c++/65625 (ICE in make_typename_type, at cp/decl.c:3499)

PR c++/65625
	* decl.c (make_typename_type): Handle seeing a variable template.

From-SVN: r221842
This commit is contained in:
Jason Merrill 2015-04-02 12:43:02 -04:00 committed by Jason Merrill
parent c23a9ec5f4
commit 37978db4a7
3 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2015-04-01 Jason Merrill <jason@redhat.com>
PR c++/65625
* decl.c (make_typename_type): Handle seeing a variable template.
2015-04-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/56100

View File

@ -3480,9 +3480,9 @@ make_typename_type (tree context, tree name, enum tag_types tag_type,
if (TREE_CODE (name) == TEMPLATE_ID_EXPR)
{
name = TREE_OPERAND (name, 0);
if (TREE_CODE (name) == TEMPLATE_DECL)
if (DECL_TYPE_TEMPLATE_P (name))
name = TREE_OPERAND (fullname, 0) = DECL_NAME (name);
else if (TREE_CODE (name) == OVERLOAD)
if (TREE_CODE (name) != IDENTIFIER_NODE)
{
if (complain & tf_error)
error ("%qD is not a type", name);

View File

@ -0,0 +1,7 @@
// PR c++/65625
// { dg-do compile { target c++14 } }
namespace std {
template <typename T> int declval;
typename std::declval<> d; // { dg-error "not a type" }
}