ITPub博客

首页 > Linux操作系统 > Linux操作系统 > g++ 3.2.x bug 的弥补(转)

g++ 3.2.x bug 的弥补(转)

原创 Linux操作系统 作者:WebSnap 时间:2019-04-10 11:09:05 0 删除 编辑
g++ 3.2.x bug 的弥补(转)
g++ 3.2 bug的弥补

在一个C++邮件组中,有一个同志说了一件事,说 g++ 3.2.x(至少到目前的g++ 3.2.3)不支持 sizeof临时对象,我很诧异,虽然我没怎么用过将临时object sizeof,但是至少C++应该是支持的,我做了试验

class test
{

};
cout<
g++果然报错: 不能 sizeof 一个函数:test().

居然将test()当函数处理了,难道这里有二义性?不可能呀,如果我这么做:
class test
{
public:
test(int i){}

};

int x = 10;
test(x);将产生二义性

如何才能排除这个问题呢?明显是g++的bug.

其实排除很简单,我给他写一个template类就行了,没几行代码:

template
struct __sizeof
{
operator T() const { return T(); }
operator int() const { return sizeof(operator T()); }
};

使用的时候只需要: cout<<__sizeof()<
是不是很简单呢?

不过总体来说,g++是最接近C++标准的编译器之一,有瑕疵是难免的,人为可以绕开bug就行了,呵呵...

DarkSpy 2003/6/3

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10797429/viewspace-101713/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    175
  • 访问量
    127762