This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Warnings in templates
Jason Merrill wrote:
On Mon, 31 May 2004 11:17:52 -0700, Mark Mitchell <mark@codesourcery.com> wrote:
Do you understand why we seem to be trying so hard to issue warnings
about things like functions that do not return in templates?
The idea was to try to catch obvious errors as soon as possible. Certainly
we need to be conservative about it to avoid getting too many false
positives. I expected that the number of false positives would be small
compared to the number of true positives, so the warning would be
worthwhile overall. But I'm open to other views.
Generally, I'm of the opinion that if the number of false positives is
non-zero, we've got a bug.
We're certainly going to get bug reports about such cases. (Including
from people who use -Werror.) It's not easy for many users to
understand the reason that the compiler will issue warnings in some
cases but not others. "We don't warn about that in a template until
it's instantiated" is easier to understand than "We warn about that in
templates, but may generate false positives if some of the function call
arguments are dependent." I believe that's also more consistent with
the practice of other compilers.
There are cases (like an "expression has no effect" warning in a
template on the statement "3;") that we could issue with zero false
positives in a template, and issuing those make sense to me. If we're
not sure, we can defer the warning until instantiation time. I think
things where we can't avoid false positives should be deferred until
instantiation time.
--
Mark Mitchell
CodeSourcery, LLC
(916) 791-8304
mark@codesourcery.com