#include <iostream>

class base
{
private:
    struct inner { char c_; };
    inner i_;
public:
    virtual ~base() {}
    base() : i_{'a'} {}
protected:
    inner f() { return i_; }
};

class derived : public base
{
public:
    void g()
    {
        auto i = f();
        std::cout << i.c_ << '\n';
    }
};

int main()
{
    derived d;
    d.g();
}
