Why is the move constructor for Base mandatory in case of inheritance (class B) in the following code (both in gcc 7.2 and clang 4.0)? I would expect it not to be required with guaranteed copy elision in C++17, as in case of composition (class A).
struct Base {
    Base(Base&&) = delete;
    Base& operator=(Base&&) = delete;
    Base()
    {
    }
};
Base make_base()
{
    return Base{};
}
struct A {
    A() : b(make_base()) {} // <<<--- compiles fine
    Base b;
};
#ifdef FAIL
struct B : public Base {
    B() : Base(make_base()) {} // <<<--- "Base(Base&&) is deleted"
};
#endif
				
                        
According to Richard Smith: