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:
parent
c23a9ec5f4
commit
37978db4a7
@ -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
|
||||
|
@ -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);
|
||||
|
7
gcc/testsuite/g++.dg/cpp1y/var-templ23.C
Normal file
7
gcc/testsuite/g++.dg/cpp1y/var-templ23.C
Normal 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" }
|
||||
}
|
Loading…
Reference in New Issue
Block a user