Tuesday, November 4, 2008
icc, vc2005, gcc4.2的参数入栈顺序和强制类型转化的一个case
icc, vc2005, gcc4.2的参数入栈顺序和强制类型转化的一个case
为方便描述, 想想如下的情况
有4个类型TA, TB,
TA_meta, TB_meta,
存在如下的关系, 从TA可以转化成TA_meta,
从TB可以转化成TB_meta,
从TA_meta<-->TB_meta,
...
TA:: operator TA_meta (const TA& );//从TA转化成TA_meta的函数
TA:: operator TA_meta (const TB& );//从TB转化成TA_meta的函数, 这里先把TB-->TB_meta, 然后吧TB_meta-->TA_meta
为方便我们需要引入另外一个类型 CC.
有一个函数如下:
foo(CC, TA_meta);
调用者如下:
CC obj1;
TA ta;
foo(obj1, ta); //这里需要把ta--->ta对应的TA_meta
下面给出信息:
| 编译器 参数入栈顺序 调用的转化函数
------------------------------------------------------------------------------------
windows| vc 自右向左 TA:: operator TA_meta (const TA& )
| icc 自左向右 TA:: operator TA_meta (const TB& )---icc 疯了
-------------------------------------------------------------------------------------
linux | gcc 自右向左 TA:: operator TA_meta (const TA& )
| icc 自左向右 TA:: operator TA_meta (const TA& )
Labels:
c_cpp
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment