KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am compiling the following simple program with g++-4.6.1 --std=c++0x : #include <algorithm> struct S { static constexpr int X = 10; }; int main() { return std::min(S::X, 0); }; I get the following linker error: /tmp/ccBj7UBt.o: In function `main': scratch.cpp:(.text+0x17): undefined reference to `S::X' collect2: ld returned 1 exit status I realize that inline-defined static members do not have symbols defined, but I was under the (probably flawed) impression that using constexpr told the compiler to always treat the symbol as an expression; so, the compiler would know that it is not legal to pass a reference to the symbol S::X (for the same reason you can't take a reference to the literal 10 ). However if S is declared as namespace, i.e. "namespace S" instead of "struct S", everything links fine. Is this a g++ bug or do I still have to use a trick to workaround this annoyance?
Tags (comma-separated)
Save Edits
Cancel