#include <iostream>
#include <complex>
using namespace std;

int main() {
complex<int> p;
int m;

cin >> p.real() >> p.imag();
cout << p.real() << p.imag();

return 0;

}

このコードはg++(gcc version 4.8.4)では問題なく実行できますが、Visual Studio Community 2015上ではエラー(C2678)となりますが、なぜこのような違いが生じるのでしょうか。

エラー C2678 二項演算子 '>>': 型 'std::istream' の左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作; ヘルプを参照)。