https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99901
Bug ID: 99901 Summary: static const class var implemented with constexpr doesn't emit symbols in C++17 mode Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: tellowkrinkle at gmail dot com Target Milestone: --- The following code fails to output any symbols when compiled with `-std=c++17`: struct A { static const int a; }; constexpr int A::a = 5; Godbolt link: https://gcc.godbolt.org/z/13efnK4x4 You can run this in a way that results in a linker error with the following: a.h: #pragma once struct A { static const int a; }; a.cpp: #include "a.h" constexpr int A::a = 0; main.cpp: #include "a.h" int main() { return A::a; } Works fine when compiled with `g++ main.cpp a.cpp` Fails when compiled with `g++ -std=c++17 main.cpp a.cpp`