Почему нельзя объявлять стековые объекты внешних классов для внутренних классов?
Класс считается complete когда при его парсинге достинается закрывающая скобка. При объявлении вложенного класса внутри внешнего, он ещё не полон и объявить член его типа нельзя. Указатель на неполный тип создавать можно, поэтому первый вариант компилируется.
Поправить можно так:struct Outer 
{
  struct Inner;
};

struct Outer::Inner 
{
    Outer _outer;
    Inner() : _outer() { }
};
В самом начале сделайте объвление:class Outer;

class Outer {
private:
  class Inner {
    Outer _outer;
...
Может быть поможет.