https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69767
Bug ID: 69767 Summary: Clash with macros from sys/sysmacros.h Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: mpolacek at gcc dot gnu.org Target Milestone: --- The following should probably compile even with -std=c++11 or -std=c++14: #include <string> struct S { int major; int minor; S (int major = 1, int minor = 3); }; S::S(int major, int minor) : major (major), minor(minor) { } glibc's sys/sysmacros.h has these defines: /* Access the functions with their traditional names. */ #define major(dev) gnu_dev_major (dev) #define minor(dev) gnu_dev_minor (dev) #define makedev(maj, min) gnu_dev_makedev (maj, min)