On 4 January 2011 14:11, Klaus Rudolph wrote:
>
>> > Is my code wrong
>>
>> Yes. You need to define A::x.
>
> Grrr... so stupid! :-)
>
> Yes, you are right. I stumbled that only a few lines generates an error. Yes,
> the compiler optimize them out if the access is direct. With -O3
> it compiles a
> > Is my code wrong
>
> Yes. You need to define A::x.
Grrr... so stupid! :-)
Yes, you are right. I stumbled that only a few lines generates an error. Yes,
the compiler optimize them out if the access is direct. With -O3
it compiles and links without errors also without having const int A::x
On 01/04/2011 12:49 PM, Klaus Rudolph wrote:
Is my code wrong
Yes. You need to define A::x.
Add this line:
const int A::x;
If the code is wrong, I expect a compiler error not a linker message!
No, because A::x might be defined in another translation unit.
Andrew.
Hi all,
the following code fails with gcc 4.4.3,4.5.0 and 4.6 snapshot (some weeks old)
:
#include
using namespace std;
class A
{
public:
static const int x=10;
};
class Zgr_A
{
public:
A* operator->() { return (A*)0; }
};
template
class Zgr
{
public: