re PR c++/37439 (ICE using auto return-type in template function)

PR c++/37439
        * pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
        DECL_CONTEXT set.

From-SVN: r140176
This commit is contained in:
Jason Merrill 2008-09-09 17:41:58 -04:00 committed by Jason Merrill
parent 07ebe945c7
commit 18802917af
3 changed files with 11 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2008-09-09 Jason Merrill <jason@redhat.com>
PR c++/37439
* pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has
DECL_CONTEXT set.
2008-09-09 Jakub Jelinek <jakub@redhat.com>
PR c++/37389

View File

@ -9809,7 +9809,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
Replace it with an arbitrary expression with the same type
(*(T*)0). This should only occur in an unevaluated context
(i.e. decltype). */
gcc_assert (skip_evaluation && DECL_CONTEXT (t) == NULL_TREE);
gcc_assert (skip_evaluation);
r = non_reference (TREE_TYPE (t));
r = tsubst (r, args, complain, in_decl);
r = build_pointer_type (r);

View File

@ -6,7 +6,10 @@ auto f() -> int
}
template<class T, class U>
auto add(T t, U u) -> decltype (t+u);
auto add(T t, U u) -> decltype (t+u)
{
return t+u;
}
template<class T, class U>
decltype(T()+U()) add2(T t, U u);