http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60258
--- Comment #2 from ja.gcc.bugzilla at aptsketch dot com --- auto foo() -> void vs void foo() is more of just a stylistic issue. There is nothing wrong with both. To me both are good. The bug is about std::atomic member initialization. Where if there is member initialization std::atomic_size_t x{10} the compiler chokes on it.