又发现VS2005中与标准C++不符的一个地方!该怎么处理

又发现VS2005中与标准C++不符的一个地方!!
using   namespace   std;

class   Base
{
public:
void   print(string   str)   const{cout < <str < <endl;}
};
class   Derived1:public   Base
{
public:
void   print(int)   const{}
};
class   Derived2:public   Base
{
public:
void   print(double)   const{}
};
class   MI:public   Derived1,public   Derived2
{
public:
void   print(complex <double> )const{}
};

int   main()
{
MI   mi;
string   dancer( "Njingky ");
mi.Base::print(dancer);//此处应该出错
return   0;
}

按《C++   Primer》的说法,Base不是MI的直接基类,上面标记处应该出错(已在DEVCPP下验证),但在VS2005下正常。
VS2005是怎么做到的呢?怎么看汇编代码?

------解决方案--------------------
VC也真牛,不明确的基类调用也让过。
------解决方案--------------------
这是.NET的能力
其实.NET都不想支持多继承了
------解决方案--------------------
VS2005还支持很多非标准的东西呢...
比如:
template <...>
class a{
...
template <...>
class b{};
template <>
class b <...> {}
};
不过我倒觉得这个特性很不错.呵呵.
至于楼主的东西,是有点问题.不过可能是VC把这种继承默认做为虚继承了吧.毕竟,在通常的应用中,基本上只需要这种模型.