Я хорошо знаю разницу между классом и структурой, однако я борюсь за авторитетное утверждение, если это хорошо определено:
// declare foo (struct)
struct foo;
// define foo (class)
class foo {
};
// instance of foo, claiming to be a struct again! Well defined?
struct foo bar;
// mixing class and struct like this upsets at least one compiler (names are mangled differently)
const foo& test() {
return bar;
}
int main() {
test();
return 0;
}
Если это поведение undefined, кто-то может указать мне в сторону авторитетной (например, главы и стиха из ISO) ссылки?
Компилятор с проблемами с этим (Carbide 2.7) относительно старый, и все другие компиляторы, с которыми я его пробовал, совершенно счастливы с этим, но ясно, что ничего не доказывает.
Моей интуицией было это поведение undefined, но я не могу найти ничего, чтобы подтвердить это, и я удивлен, что ни одна из версий GCC или Comeau, чтобы предупредить об этом.