This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/61080] Spurious no return statement warning with deleted operators
- From: "paolo.carlini at oracle dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 06 May 2014 23:48:14 +0000
- Subject: [Bug c++/61080] Spurious no return statement warning with deleted operators
- Auto-submitted: auto-generated
- References: <bug-61080-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61080
--- Comment #5 from Paolo Carlini <paolo.carlini at oracle dot com> ---
Thanks. Thus should we go back to the pre-r210043 behavior and somehow handle
the case in instantiate_decl under the early:
if (/* If there is no definition, we cannot instantiate the
template. */
! pattern_defined
/* If it's OK to postpone instantiation, do so. */
|| defer_ok
/* If this is a static data member that will be defined
elsewhere, we don't want to instantiate the entire data
member, but we do want to instantiate the initializer so that
we can substitute that elsewhere. */
|| (external_p && VAR_P (d)))
{
/* .... */
which does very few checks and then soon does goto out? The problem with
setting pattern_defined is that this entire early handling is skipped, not just
its inner permerror for explicit instantiations when no definition is
available. And by now we now that early handling otherwise works pretty well...