構造体をクラス宣言の中で宣言したときと、
外で宣言したときの違いを教えてください。

中で宣言すると、メンバ関数の戻り値に
宣言した構造体を用いることができないようなのですが、
それ以外に違いや制限はあるでしょうか?

// ↓中で構造体を宣言
class c {
 struct s {
  // 〜
 };
 // 〜
};

// ↓外で構造体を宣言
struct s {
 // 〜
};

class c {
 // 〜
};