Мне хорошо известно различие между классом и структурой , однако я изо всех сил пытаюсь авторитетно сказать, правильно ли это определено:
// 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;
}
Если это неопределенное поведение может ли кто-нибудь указать мне на авторитетную (например, главу и стих из ISO) ссылку?
Компилятор, у которого возникли проблемы с этим ( Carbide 2.7 ), относительно старый, и все другие компиляторы, на которых я его пробовал, вполне довольны этим, но очевидно, что это ничего не доказывает.
Моя интуиция подсказывала, что это должно быть неопределенное поведение, но я не могу найти ничего, чтобы подтвердить это, и я удивлен, что ни одна из версий GCC или Comeau не предупреждала об этом.