Re: [Bug c++/25927] New: Spurious offsetof warnings with private members

2006-01-23 Thread Gabriel Dos Reis
"rcbilson at plg dot uwaterloo dot ca" <[EMAIL PROTECTED]> writes:

| Consider:
| 
| #include 
| #include 
| 
| class xxx {
| friend int main();
| void *q;
|   public:
| void *r;
| };
| 
| int main() {
| std::cout << "offset of xxx::q is " << offsetof( xxx, q ) << "\n";
| std::cout << "offset of xxx::r is " << offsetof( xxx, r ) << "\n";
| return 0;
| }
| 
| The class xxx is POD, and the two applications of offsetof should be ok (per
| 18.1p5).

No, the class xxx is not a POD because xxx::q is non-public.  Invalid
PR, should be closed.

-- Gaby


[Bug c++/25927] New: Spurious offsetof warnings with private members

2006-01-23 Thread rcbilson at plg dot uwaterloo dot ca
Consider:

#include 
#include 

class xxx {
friend int main();
void *q;
  public:
void *r;
};

int main() {
std::cout << "offset of xxx::q is " << offsetof( xxx, q ) << "\n";
std::cout << "offset of xxx::r is " << offsetof( xxx, r ) << "\n";
return 0;
}

The class xxx is POD, and the two applications of offsetof should be ok (per
18.1p5). However, g++ warns:

offsetof.cc: In function 'int main()':
offsetof.cc:12: warning: invalid access to non-static data member 'xxx::q' of
NULL object
offsetof.cc:12: warning: (perhaps the 'offsetof' macro was used incorrectly)
offsetof.cc:13: warning: invalid access to non-static data member 'xxx::r' of
NULL object
offsetof.cc:13: warning: (perhaps the 'offsetof' macro was used incorrectly)

Stranger still, if *both* q and r are made public g++ accepts the code without
complaint.


-- 
   Summary: Spurious offsetof warnings with private members
   Product: gcc
   Version: 4.0.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rcbilson at plg dot uwaterloo dot ca
 GCC build triplet: sparc-sun-solaris2.8
  GCC host triplet: sparc-sun-solaris2.8
GCC target triplet: sparc-sun-solaris2.8


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25927