Re: 64-Bit Operator Overloading Adventure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/01/2008, Brian D. McGrew <brian@xxxxxxxxxxxxx> wrote:
> Good morning,

Hi,
I've only replied to gcc-help as this is not related to development of GCC.

> I've got a codebase that's a hundred years old, started in life on Sun3
> and have evolved to 32-Bit X86 Linux (Fedora 5).  We're trying to move
> to 64-Bit now and this same code that has compiled for years is barking
> about operators cannot be overloaded.

Without more detail it's hard to know, but it sounds like you might
have overloads using typedefs where the underlying type has changed.

e.g.

#ifdef  IN_32_BIT_MODE
typedef long foo_t;
#else
typedef int foo_t;
#endif

struct S
{
    S operator+(int);
    S operator+(foo_t);
};

This will only compile if IN_32_BIT_MODE is defined.

Alternatively, the changes you've made to change longs to ints could
cause a problem in code like this:

typedef int bar_t;

struct S
{
    S operator+(long);   // change to int
    S operator+(bar_t);
};



Jon

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux