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
[EMAIL PROTECTED]:~/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
[EMAIL PROTECTED]:~/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.
--
Summary: Undefined reference when using negated static const
double
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sander at mi dot fu-berlin dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29483