Package: libstdc++-6-dev Version: 6.3.0-18+deb9u1 Severity: normal $ cat s.cc #include <iostream> int major(int x) { return x & ~0xffff; }
$ g++ -E -dD -ansi s.cc | grep -w major int major(int x) { return x & ~0xffff; } $ g++ -E -dD s.cc | grep -w major #define major(dev) gnu_dev_major (dev) Without the -ansi option, iostream pulls sys/sysmacros.h, where major() and minor() are defined as macros taking one argument, aliases of gnu_dev_major/minor. Likely to cause interesting bugs if one mixes source files with and without <iostream> includes, or gets library/object order wrong at link time. Goes undetected until code changes to something like int major(std::pair<int,int> x) { return x.first; } at which point g++ emits a revealing error: macro "major" passed 2 arguments, but takes just 1 Not sure if the problem belongs to libstdc++-6-dev, gcc or libc6-dev. Best regards, g -- System Information: Debian Release: 9.9 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-9-amd64 (SMP w/4 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968), LANGUAGE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) Versions of packages libstdc++-6-dev depends on: ii gcc-6-base 6.3.0-18+deb9u1 ii libc6-dev 2.24-11+deb9u4 ii libgcc-6-dev 6.3.0-18+deb9u1 ii libstdc++6 6.3.0-18+deb9u1 libstdc++-6-dev recommends no packages. Versions of packages libstdc++-6-dev suggests: pn libstdc++-6-doc <none> -- no debconf information