Compiler Support

Let's look at the compiler support for the topics in this chapter.

Feature GCC Clang MSVC
[[fallthrough]] 7.0 3.9 15.0
[[nodiscard]] 7.0 3.9 15.3
[[maybe_unused]] 7.0 3.9 15.3
Attributes for namespaces and enumerators 4.9/6[^gccnote] 3.4 14.0
Ignore unknown attributes All versions 3.9 14.0
Using attribute namespaces without repetition 7.0 3.9 15.3

All of the above compilers also support C++11/14 attributes.

[^gccnote]: GCC 4.9 (namespaces) / GCC 6 (enumerations)


In the next chapter, we will explore the changes in std::optional.

Get hands-on with 1200+ tech skills courses.