Commit d29760ad by Jason Merrill Committed by Jason Merrill

re PR c++/43079 (ICE with incompatible pointer-to-member-function as template parameter)

	PR c++/43079
	* pt.c (convert_nontype_argument): Change assert to test.

From-SVN: r156839
parent af14c87b
2010-02-17 Jason Merrill <jason@redhat.com>
PR c++/43079
* pt.c (convert_nontype_argument): Change assert to test.
2010-02-16 Jason Merrill <jason@redhat.com>
* cp-gimplify.c (cp_gimplify_expr): Fix error recovery.
......
......@@ -5128,12 +5128,13 @@ convert_nontype_argument (tree type, tree expr)
provide a superior diagnostic. */
if (!same_type_p (TREE_TYPE (expr), type))
{
/* Make sure we are just one standard conversion off. */
gcc_assert (can_convert (type, TREE_TYPE (expr)));
error ("%qE is not a valid template argument for type %qT "
"because it is of type %qT", expr, type,
TREE_TYPE (expr));
inform (input_location, "standard conversions are not allowed in this context");
/* If we are just one standard conversion off, explain. */
if (can_convert (type, TREE_TYPE (expr)))
inform (input_location,
"standard conversions are not allowed in this context");
return NULL_TREE;
}
}
......
2010-02-17 Jason Merrill <jason@redhat.com>
PR c++/43079
* g++.dg/template/ptrmem20.C: New.
2010-02-17 Uros Bizjak <ubizjak@gmail.com>
PR target/43103
......
// PR c++/43079
struct A {};
struct B
{
void foo() const;
void foo();
};
template<void (A::*)()> void bar();
void baz()
{
bar<&B::foo>(); // { dg-error "not a valid template argument|no match" }
}
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