понял: https://godbolt.org/z/RE8SfR
Почему оно компилируется без ошибок?
class Foo {
struct Bar {int b;};
public:
Bar b() {return {13};}
};
int main() {
Foo f;
auto a = f.b();
return a.b;
}
Получается, что приватные типы - это просто типы у которых нет имени вне их области видимости (точнее их имя генерируется автоматически и его не угадать)?
Access checking происходит когда вы обращаетесь к Foo::b() и Foo::Bar::b, обе сущности public.
Обсуждают сегодня