namespace在作怪!
在complex中有匹配的宏: _STD_BEGIN 和 _STD_END 包含住了complex类的定义
展开后就是 namespace std{
                    ...
                    class complex definition
                    ...
           };   
说明complex类属于std名字空间,要访问名字空间中的类必须在类之前加上
名字空间名,例如 
   typedef std::complex<double> complexd;
   std::complex<float> c;
等才是正确的用法。下面一段代码供参考:
#include "stdafx.h"
#include <iostream.h>
#include <complex>typedef std::complex<float> complex;
int main(int argc, char* argv[])
{
complex c(3.0,4.0);
c+=complex(5,5);
cout<<c.real()<<'+'<<c.imag()<<'i'<<endl;
return 0;
}
关于namespace,请查看 vc 语言参考手册或 msdn。