re PR c++/71440 (ICE on invalid C++ code in instantiate_type, at cp/class.c:8247)
/cp 2017-08-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71440 * typeck.c (build_x_unary_op): Avoid pretty-printing constructor / destructor as expressions. /testsuite 2017-08-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71440 * g++.dg/template/crash127.C: New. From-SVN: r250848
This commit is contained in:
parent
0a734553cc
commit
e5e691a53f
|
@ -1,3 +1,9 @@
|
|||
2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/71440
|
||||
* typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
|
||||
destructor as expressions.
|
||||
|
||||
2017-08-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/81640
|
||||
|
|
|
@ -5487,9 +5487,9 @@ build_x_unary_op (location_t loc, enum tree_code code, cp_expr xarg,
|
|||
{
|
||||
if (complain & tf_error)
|
||||
error (DECL_CONSTRUCTOR_P (fn)
|
||||
? G_("taking address of constructor %qE")
|
||||
: G_("taking address of destructor %qE"),
|
||||
xarg.get_value ());
|
||||
? G_("taking address of constructor %qD")
|
||||
: G_("taking address of destructor %qD"),
|
||||
fn);
|
||||
return error_mark_node;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-08-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/71440
|
||||
* g++.dg/template/crash127.C: New.
|
||||
|
||||
2017-08-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/81052
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// PR c++/71440
|
||||
|
||||
struct A
|
||||
{
|
||||
void f () {}
|
||||
};
|
||||
|
||||
typedef void (A::*Ptr) ();
|
||||
|
||||
template < Ptr > struct B {};
|
||||
|
||||
template < class T >
|
||||
struct C : public A
|
||||
{
|
||||
void bar ()
|
||||
{
|
||||
B < &A::A > b; // { dg-error "taking address of constructor 'A::A" "" { target c++98_only } }
|
||||
// { dg-error "taking address of constructor 'constexpr A::A" "" { target c++11 } .-1 }
|
||||
}
|
||||
};
|
||||
|
||||
template class C < int >;
|
Loading…
Reference in New Issue