I was trying to implement a move constructor for a class without a copy constructor. I got an error that the default constructor for a member of the class was missing.
A move constructor in general does not have to provide default initialization. Your move constructor does.
A move constructor is still a constructor. And therefore, it must initialize all subobjects. If you don't provide explicit initialization, then it will attempt to default initialize them. And if it can't do that, you get an error.
So you can either initialize them (perhaps moving from b), or just use = default with your move constructor and let the compiler do it's job.