Commit aeb459fb by Jason Merrill Committed by Jason Merrill

re PR c++/47289 ([C++0x] ICE in tsubst_pack_expansion (triggered by decltype))

	PR c++/47289
	* pt.c (coerce_template_parms): Fix error recovery.

From-SVN: r168822
parent eb5bb0fd
2011-01-14 Jason Merrill <jason@redhat.com>
PR c++/47289
* pt.c (coerce_template_parms): Fix error recovery.
PR c++/46903
* typeck2.c (check_narrowing): Only check arithmetic types.
......
......@@ -6410,7 +6410,7 @@ coerce_template_parms (tree parms,
sorry ("cannot expand %<%T%> into a fixed-length "
"argument list", arg);
}
return error_mark_node;
++lost;
}
}
else if (require_all_args)
......@@ -6438,7 +6438,7 @@ coerce_template_parms (tree parms,
reported) that we are trying to recover from, e.g., a class
template with a parameter list such as
template<typename..., typename>. */
return error_mark_node;
++lost;
else
arg = convert_template_argument (TREE_VALUE (parm),
arg, new_args, complain,
......
2011-01-14 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/variadic105.C: New.
2011-01-08 Dominique d'Humieres <dominiq@lps.ens.fr>
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
......
// PR c++/47289
// { dg-options -std=c++0x }
// { dg-prune-output "note" }
template <template <typename... __ARGS> class _F, typename... _ARGS>
auto reverse (_ARGS... args) -> decltype(_F<_ARGS...>::call_function(args...)) {
return _F<_ARGS...>::call_function(args...);
}
template <typename _T>
_T sum(_T x) { return x; }
template <typename _T, typename... _ARGS>
_T sum(_T x, _ARGS... args) { return x + sum(args...); }
template <typename _T, typename... _ARGS>
struct call_sum {
static _T call_function(_T x1, _ARGS... args) { return sum(x1, args...); }
};
int main() {
// This shouldn't be an error; this is bug 35722.
reverse<call_sum>(1,2); // { dg-bogus "no match" "" { xfail *-*-* } }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment