Vorwärtsdeklaration von Objekten mit AWL-Containern

Betrachten Sie das folgende Code-Snippet, wobei die erste Zeile nur als Vorwärtsdeklaration dient.

 class A;

gefolgt von der Definition einer neuen Klasse

class B
{
 vector<A> Av;  //line 1
 map<int, A> Am;  //line 2
 pair<int, A> Ap; //line 3
};

Zeile 1 und Zeile 2 scheinen in Ordnung mit der Forward-Deklaration zu sein (die mir möglicherweise sagt, dass diese Container Zeigertypen für die Implementierung verwenden), bei der Zeile 3 auf VS2012 nicht zu kompilieren scheint.

Ihre Frage ist das Verhalten vom Standard vorgegeben oder spezifisch für den Compiler, den ich verwende?

Vielen Dan