C++でpairのqueueを作りたいのですが、単純に書いてgcc hoge.cppなどとするとコンパイルが失敗して次のようなエラーメッセージが出ます。g++ -std=c++11 hoge.cppだとコンパイルが成功します。下部の質問にお答えいただけると助かります。よろしくお願いいたします。

(A)こうやるとコンパイル失敗する

queue<pair<int, int>>Q

# (参考)エラーメッセージ
hoge.cpp:22:22: error: a space is required between consecutive right angle brackets
      (use '> >')
  queue<pair<int, int>>Q;
                     ^~
1 error generated.

(B)こうやるとコンパイル成功する

typedef pair<int, int> P;
queue<P>Q

質問

  1. どうして(A)だとコンパイルが失敗して、(B)だと成功するのでしょうか?
  2. (A)でも、C++11でコンパイルするとコンパイルが成功するのはどういう仕様追加によるものでしょうか?