https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66639
--- Comment #11 from Benjamin Buch <benni.buch at gmail dot com> --- Also test case #3 doesn't work if you declare the function return type auto: constexpr auto foo () { static_assert (0 == __builtin_strcmp (__func__, "foo"), "#1"); static_assert (0 == __builtin_strcmp (__FUNCTION__, "foo"), "#2"); static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "constexpr int foo()"), "#3"); return 1; } static_assert (foo (), "#4"); void bar () { static_assert (0 == __builtin_strcmp (__func__, "bar"), "#5"); static_assert (0 == __builtin_strcmp (__FUNCTION__, "bar"), "#6"); static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "void bar()"), "#7"); } $ g++ -std=c++17 gcc-test.cpp gcc-test.cpp: In Funktion »constexpr auto foo()«: gcc-test.cpp:5:3: Fehler: statische Erklärung gescheitert: #3 static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "constexpr int foo()"), "#3"); ^~~~~~~~~~~~~ bebuch@pcbebuch:~/media/projekte/test$ g++ -std=c++17 gcc-test.cpp gcc-test.cpp: In Funktion »constexpr auto foo()«: gcc-test.cpp:5:3: Fehler: statische Erklärung gescheitert: #3 static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "constexpr int foo()"), "#3"); ^~~~~~~~~~~~~ gcc-test.cpp: In Funktion »void bar()«: gcc-test.cpp:14:3: Fehler: Nicht-konstante Bedingung für statische Behauptung static_assert (0 == __builtin_strcmp (__func__, "bar"), "#5"); ^~~~~~~~~~~~~ gcc-test.cpp:14:40: Fehler: »__builtin_strcmp(((const char*)(& __func__)), ((const char*)"bar"))« ist kein Konstantenausdruck static_assert (0 == __builtin_strcmp (__func__, "bar"), "#5"); ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ gcc-test.cpp:15:3: Fehler: Nicht-konstante Bedingung für statische Behauptung static_assert (0 == __builtin_strcmp (__FUNCTION__, "bar"), "#6"); ^~~~~~~~~~~~~ gcc-test.cpp:15:40: Fehler: »__builtin_strcmp(((const char*)(& __FUNCTION__)), ((const char*)"bar"))« ist kein Konstantenausdruck static_assert (0 == __builtin_strcmp (__FUNCTION__, "bar"), "#6"); ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ gcc-test.cpp:16:3: Fehler: Nicht-konstante Bedingung für statische Behauptung static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "void bar()"), "#7"); ^~~~~~~~~~~~~ gcc-test.cpp:16:40: Fehler: »__builtin_strcmp(((const char*)(& __PRETTY_FUNCTION__)), ((const char*)"void bar()"))« ist kein Konstantenausdruck static_assert (0 == __builtin_strcmp (__PRETTY_FUNCTION__, "void bar()"), "#7"); ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $ g++ --version g++ (GCC) 8.0.0 20170816 (experimental) Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.