C++におけるqueue<pair<int, int>>Qの定義方法について
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
質問
- どうして(A)だとコンパイルが失敗して、(B)だと成功するのでしょうか?
- (A)でも、C++11でコンパイルするとコンパイルが成功するのはどういう仕様追加によるものでしょうか?