This fails to compile with "error: non-constant condition for static assertion static_assert(std::char_traits<char>::length(cstr) == 2);" ``` #include <string> static constexpr char cstr[3] = {'1', '2', '\0'}; constexpr int foobar() { static_assert(std::char_traits<char>::length(cstr) == 2); return 0; } int main() {} ``` But this compiles fine: ``` #include <string> static constexpr char cstr[3] = {'1', '2', '\0'}; constexpr int foobar() { return 0; } int main() { static_assert(std::char_traits<char>::length(cstr) == 2); } ``` As well as this: ``` #include <string> static constexpr char cstr[3] = {'1', '2', '\0'}; int foobar() { static_assert(std::char_traits<char>::length(cstr) == 2); return 0; } int main() { } ```
Fixed in GCC 9.1 by r267341 *** This bug has been marked as a duplicate of bug 86524 ***