Bug 29483 - Undefined reference when using negated static const double
Summary: Undefined reference when using negated static const double
Status: RESOLVED DUPLICATE of bug 25220
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.1.2
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-10-16 15:49 UTC by Oliver Sander
Modified: 2006-10-30 12:29 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Oliver Sander 2006-10-16 15:49:22 UTC
The following little testcase

class Foo {
public:
    void bar() const;
    static const double TOL = 1e-14;
};

void Foo::bar() const
{
    double tol = -TOL;
}

int main(){}


produces the error message
sander@haile:~/dune_projects/uggridtest$ g++ test.cc
/tmp/cco39MFe.o: In function `Foo::bar() const':
test.cc:(.text+0x8): undefined reference to `Foo::TOL'
collect2: ld returned 1 exit status

when compiled with
sander@haile:~/dune_projects/uggridtest$ g++ --version
g++ (GCC) 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)

It compiles with 2.95 and 3.3, it does not compile with
3.4.  The error message goes away when the minus sign
in front of TOL is removed.
Comment 1 Andrew Pinski 2006-10-16 15:54:46 UTC
This is not a bug, you still need to have a memory location for Foo::TOL for this to be valid code.
Comment 2 Richard Biener 2006-10-30 12:28:50 UTC
Reopen ...
Comment 3 Richard Biener 2006-10-30 12:29:14 UTC
to mark as dup of PR25220

*** This bug has been marked as a duplicate of 25220 ***