public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace
@ 2014-04-08 12:20 redi at gcc dot gnu.org
  2014-04-15 19:06 ` [Bug c++/60786] " redi at gcc dot gnu.org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2014-04-08 12:20 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60786

            Bug ID: 60786
           Summary: In C++11 an explicit instantiation with an unqualified
                    name must be in the right namespace
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org

This should not be accepted in C++11 mode:

namespace A {
  template<typename T> struct B { };
}

using A::B;
template class B<int>;


[temp.explicit] p3:
"An explicit instantiation shall appear in an enclosing namespace of its
template. If the name declared in the explicit instantiation is an unqualified
name, the explicit instantiation shall appear in the namespace where its
template is declared or, if that namespace is inline (7.3.1), any namespace
from its enclosing namespace set."

This is a change from C++03:

"A definition of a class template or class member template shall be in scope at
the point of the explicit instantiation of the class template or class member
template."


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/60786] In C++11 an explicit instantiation with an unqualified name must be in the right namespace
  2014-04-08 12:20 [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace redi at gcc dot gnu.org
@ 2014-04-15 19:06 ` redi at gcc dot gnu.org
  2014-04-15 19:08 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2014-04-15 19:06 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60786

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Author: redi
Date: Tue Apr 15 19:05:45 2014
New Revision: 209431

URL: http://gcc.gnu.org/viewcvs?rev=209431&root=gcc&view=rev
Log:
    PR c++/60786
    * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/
    1.cc: Fix invalid explicit instantiations with unqualified names.
    * testsuite/20_util/shared_ptr/requirements/explicit_instantiation/
    2.cc: Likweise.
    * testsuite/20_util/tuple/53648.cc: Likweise.
    * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
    Likewise.
    * testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
    Likewise.
    * testsuite/23_containers/unordered_map/requirements/
    debug_container.cc: Likewise.
    * testsuite/23_containers/unordered_map/requirements/
    explicit_instantiation/3.cc: Likewise.
    * testsuite/23_containers/unordered_multimap/requirements/debug.cc:
    Likewise.
    * testsuite/23_containers/unordered_multimap/requirements/
    explicit_instantiation/3.cc: Likewise.
    * testsuite/23_containers/unordered_multiset/requirements/debug.cc:
    Likewise.
    * testsuite/23_containers/unordered_multiset/requirements/
    explicit_instantiation/3.cc: Likewise.
    * testsuite/23_containers/unordered_set/requirements/
    debug_container.cc: Likewise.
    * testsuite/23_containers/unordered_set/requirements/
    explicit_instantiation/3.cc: Likewise.

Modified:
    trunk/libstdc++-v3/ChangeLog
   
trunk/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
   
trunk/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
    trunk/libstdc++-v3/testsuite/20_util/tuple/53648.cc
   
trunk/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
   
trunk/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
   
trunk/libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/60786] In C++11 an explicit instantiation with an unqualified name must be in the right namespace
  2014-04-08 12:20 [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace redi at gcc dot gnu.org
  2014-04-15 19:06 ` [Bug c++/60786] " redi at gcc dot gnu.org
@ 2014-04-15 19:08 ` redi at gcc dot gnu.org
  2014-12-14 15:37 ` ville.voutilainen at gmail dot com
  2021-08-04 20:42 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: redi at gcc dot gnu.org @ 2014-04-15 19:08 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60786

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I've fixed the libstdc++ tests so they don't rely on this bug


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/60786] In C++11 an explicit instantiation with an unqualified name must be in the right namespace
  2014-04-08 12:20 [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace redi at gcc dot gnu.org
  2014-04-15 19:06 ` [Bug c++/60786] " redi at gcc dot gnu.org
  2014-04-15 19:08 ` redi at gcc dot gnu.org
@ 2014-12-14 15:37 ` ville.voutilainen at gmail dot com
  2021-08-04 20:42 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: ville.voutilainen at gmail dot com @ 2014-12-14 15:37 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60786

Ville Voutilainen <ville.voutilainen at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-12-14
                 CC|                            |ville.voutilainen at gmail dot com
     Ever confirmed|0                           |1
      Known to fail|                            |4.8.2, 4.9.1, 5.0

--- Comment #3 from Ville Voutilainen <ville.voutilainen at gmail dot com> ---
Clang rejects the code.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Bug c++/60786] In C++11 an explicit instantiation with an unqualified name must be in the right namespace
  2014-04-08 12:20 [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace redi at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-12-14 15:37 ` ville.voutilainen at gmail dot com
@ 2021-08-04 20:42 ` pinskia at gcc dot gnu.org
  3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-08-04 20:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60786

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
   Target Milestone|---                         |7.0
         Resolution|---                         |DUPLICATE

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
In GCC7+, we started having a pedantic warning (only with -pedantic or
-Wpedantic):
<source>:6:16: warning: explicit instantiation of 'template<class T> struct
A::B' outside its namespace must use a nested-name-specifier [-Wpedantic]
 template class B<int>;
                ^~~~~~

This is a dup of bug 56480.

*** This bug has been marked as a duplicate of bug 56480 ***

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-08-04 20:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-08 12:20 [Bug c++/60786] New: In C++11 an explicit instantiation with an unqualified name must be in the right namespace redi at gcc dot gnu.org
2014-04-15 19:06 ` [Bug c++/60786] " redi at gcc dot gnu.org
2014-04-15 19:08 ` redi at gcc dot gnu.org
2014-12-14 15:37 ` ville.voutilainen at gmail dot com
2021-08-04 20:42 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).