C++

1:  typedef int P();
2:  typedef int Q();
3:  
4:  class X
5:  {
6:    P(Q);
7:    Q(P);
8:  };

さて、上のコードは何が起きるでしょう。また、1行目をコメントアウトするとどうなるでしょう。2行目は?
(元ネタ:C++の設計と進化)

g++ だと -fpermissive がコンパイルに必要。(返り値の int を省略するため。)