Что делает неявно определенный деструктор?
Он будет таким же, как явно определенный деструктор с пустым телом.По сути, он уничтожает все подобъекты и больше ничего не делает.
Это просто пустая функция, определенная компилятором?
На практике может даже не потребоваться пустая функция.Но может быть полезно думать, что это происходит, когда мы думаем в терминах абстрактной машины.
Или неявный деструктор что-то делает внутри тела, сгенерированного компилятором?
Зависит от класса.В случае Foo
деструктору ничего не нужно делать.