[Bug c++/55173] New: GCC gives wrong location, and ignores -isystem, when warning about default arguments
mw_triad at users dot sourceforge.net
gcc-bugzilla@gcc.gnu.org
Thu Nov 1 23:01:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55173
Bug #: 55173
Summary: GCC gives wrong location, and ignores -isystem, when
warning about default arguments
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: mw_triad@users.sourceforge.net
This came up originally related to bug 52718, but according to Paolo there, is
not actually related at all...
Consider the following header:
#pragma GCC system_header // or include via -isystem
class Foo
{
Foo(void* = 0);
};
class Bar
{
Bar(Foo = 0, void* = 0)
};
The following instantiation:
Bar bar;
...trips -Wzero-as-null-pointer-constant (also, the warning is reported in the
source file, not the header).
This appears to only happen when a default parameter implicitly invokes a
constructor, where the warning occurs in the constructor invocation. IOW, this:
Bar bar(nullptr);
...does not trigger a warning, as 'Foo(nullptr)' is okay.
Besides the less-helpful-than-desired diagnostic, this behavior is unfortunate,
as it prevents promoting warnings to errors in the face of such constructs, or
else forcing programmers to avoid use of default parameters.
More information about the Gcc-bugs
mailing list