class.c (check_field_decls): Pointers to member do not a non-pod struct make, as per DR 148.
cp: * class.c (check_field_decls): Pointers to member do not a non-pod struct make, as per DR 148. testsuite: * g++.old-deja/g++.other/pod1.C: New test. From-SVN: r40186
This commit is contained in:
parent
f86fdf68cf
commit
d282fcb29a
|
@ -1,3 +1,8 @@
|
||||||
|
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
|
* class.c (check_field_decls): Pointers to member do not a
|
||||||
|
non-pod struct make, as per DR 148.
|
||||||
|
|
||||||
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* call.c (joust): cp_pedwarn when using gnu extension concerning
|
* call.c (joust): cp_pedwarn when using gnu extension concerning
|
||||||
|
|
|
@ -3594,10 +3594,9 @@ check_field_decls (t, access_decls, empty_p,
|
||||||
if (DECL_MUTABLE_P (x) || TYPE_HAS_MUTABLE_P (type))
|
if (DECL_MUTABLE_P (x) || TYPE_HAS_MUTABLE_P (type))
|
||||||
CLASSTYPE_HAS_MUTABLE (t) = 1;
|
CLASSTYPE_HAS_MUTABLE (t) = 1;
|
||||||
|
|
||||||
if (! pod_type_p (type)
|
if (! pod_type_p (type))
|
||||||
/* For some reason, pointers to members are POD types themselves,
|
/* DR 148 now allows pointers to members (which are POD themselves),
|
||||||
but are not allowed in POD structs. Silly. */
|
to be allowed in POD structs. */
|
||||||
|| TYPE_PTRMEM_P (type) || TYPE_PTRMEMFUNC_P (type))
|
|
||||||
CLASSTYPE_NON_POD_P (t) = 1;
|
CLASSTYPE_NON_POD_P (t) = 1;
|
||||||
|
|
||||||
/* If any field is const, the structure type is pseudo-const. */
|
/* If any field is const, the structure type is pseudo-const. */
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
|
* g++.old-deja/g++.other/pod1.C: New test.
|
||||||
|
|
||||||
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* g++.old-deja/g++.ext/overload1.C: New test.
|
* g++.old-deja/g++.ext/overload1.C: New test.
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
// Build don't link:
|
||||||
|
|
||||||
|
// Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
// Contributed by Nathan Sidwell 28 Feb 2001 <nathan@codesourcery.com>
|
||||||
|
|
||||||
|
// DR 148. Now allows pointer to members in POD struct.
|
||||||
|
|
||||||
|
struct X
|
||||||
|
{
|
||||||
|
int X::*m;
|
||||||
|
int (X::*f) ();
|
||||||
|
};
|
||||||
|
|
||||||
|
void Foo (int, ...);
|
||||||
|
|
||||||
|
void Baz ()
|
||||||
|
{
|
||||||
|
X x;
|
||||||
|
|
||||||
|
Foo (1, x);
|
||||||
|
}
|
Loading…
Reference in New Issue