nested class forward declaration

N

n.torrey.pines

I'm curious, is this legal C++ ? `g++ -pedantic -ansi -Wall` gives no
warnings.

struct s {
char c;
s(char c) : c(c) {}
void f() const;
private:
struct i; // !!!
};

struct s::i {
float f;
i() : f(0) {}
};

void s::f() const {
i ii;
std::cout << ii.f << c << '\n';
}
 
V

Victor Bazarov

I'm curious, is this legal C++ ? `g++ -pedantic -ansi -Wall` gives no
warnings.

struct s {
char c;
s(char c) : c(c) {}
void f() const;
private:
struct i; // !!!
};

struct s::i {
float f;
i() : f(0) {}
};

void s::f() const {
i ii;
std::cout << ii.f << c << '\n';
}

Yes, it is. Why wouldn't it be legal?

V
 
M

Marcus Kwok

I'm curious, is this legal C++ ? `g++ -pedantic -ansi -Wall` gives no
warnings.

struct s {
char c;
s(char c) : c(c) {}
void f() const;
private:
struct i; // !!!
};

struct s::i {
float f;
i() : f(0) {}
};

void s::f() const {
i ii;
std::cout << ii.f << c << '\n';
}

FWIW, Comeau online compiled it with no errors in strict mode either.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top