public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/55361] New: Access control in templates only happens when instantiating a method
@ 2012-11-16 22:25 joerg at netbsd dot org
  2012-11-16 22:32 ` [Bug c++/55361] " pinskia at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: joerg at netbsd dot org @ 2012-11-16 22:25 UTC (permalink / raw)
  To: gcc-bugs


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

             Bug #: 55361
           Summary: Access control in templates only happens when
                    instantiating a method
    Classification: Unclassified
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: joerg@netbsd.org


Consider the following example:

class C
{
    bool blocked;
};
template < class > struct F
{
    void operator* ()
    {
        C a;
        a.blocked;
    }
};

int main() {
F<int> x;
}

The operator is violating the access specifications of C, but this isn't
detected until it is actually used. Nothing in it depends on the template
though, so this check should happen earlier.


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
@ 2012-11-16 22:32 ` pinskia at gcc dot gnu.org
  2012-11-16 22:39 ` pinskia at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2012-11-16 22:32 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-11-16 22:32:03 UTC ---
The Comeau C/C++ online tester does not error out on this testcase.


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
  2012-11-16 22:32 ` [Bug c++/55361] " pinskia at gcc dot gnu.org
@ 2012-11-16 22:39 ` pinskia at gcc dot gnu.org
  2012-11-16 23:06 ` paolo.carlini at oracle dot com
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: pinskia at gcc dot gnu.org @ 2012-11-16 22:39 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-11-16 22:38:47 UTC ---
I don't think this is a gcc bug as access control is always done only at
template-instantiation time.


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
  2012-11-16 22:32 ` [Bug c++/55361] " pinskia at gcc dot gnu.org
  2012-11-16 22:39 ` pinskia at gcc dot gnu.org
@ 2012-11-16 23:06 ` paolo.carlini at oracle dot com
  2012-11-17  0:19 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: paolo.carlini at oracle dot com @ 2012-11-16 23:06 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #3 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-11-16 23:06:09 UTC ---
Likewise EDG as used by Intel. clang errors out. From the user point of view,
to make debugging easier, the earlier errors are produced the better, but this
is just a general principle, thus I don't think this is a compiler bug, at most
a QoI issue. A well known one, by the way: in many, many, other cases we aren't
very aggressive at that.


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
                   ` (2 preceding siblings ...)
  2012-11-16 23:06 ` paolo.carlini at oracle dot com
@ 2012-11-17  0:19 ` redi at gcc dot gnu.org
  2013-02-08  9:17 ` redi at gcc dot gnu.org
  2022-01-05 15:41 ` ppalka at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2012-11-17  0:19 UTC (permalink / raw)
  To: gcc-bugs


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

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-11-17 00:19:18 UTC ---
unless this is recategorised as a diagnostic enhancement request this is
clearly invalid, the compiler is not required to give an error for this code


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
                   ` (3 preceding siblings ...)
  2012-11-17  0:19 ` redi at gcc dot gnu.org
@ 2013-02-08  9:17 ` redi at gcc dot gnu.org
  2022-01-05 15:41 ` ppalka at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2013-02-08  9:17 UTC (permalink / raw)
  To: gcc-bugs


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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
           Severity|normal                      |enhancement

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-02-08 09:17:40 UTC ---
[temp.res]/8
If no valid specialization can be generated for a template, and that template
is not instantiated, the template is ill-formed, no diagnostic required.
                                              ^^^^^^^^^^^^^^^^^^^^^^


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

* [Bug c++/55361] Access control in templates only happens when instantiating a method
  2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
                   ` (4 preceding siblings ...)
  2013-02-08  9:17 ` redi at gcc dot gnu.org
@ 2022-01-05 15:41 ` ppalka at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: ppalka at gcc dot gnu.org @ 2022-01-05 15:41 UTC (permalink / raw)
  To: gcc-bugs

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

Patrick Palka <ppalka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zhonghao at pku dot org.cn

--- Comment #7 from Patrick Palka <ppalka at gcc dot gnu.org> ---
*** Bug 90925 has been marked as a duplicate of this bug. ***

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

end of thread, other threads:[~2022-01-05 15:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-16 22:25 [Bug c++/55361] New: Access control in templates only happens when instantiating a method joerg at netbsd dot org
2012-11-16 22:32 ` [Bug c++/55361] " pinskia at gcc dot gnu.org
2012-11-16 22:39 ` pinskia at gcc dot gnu.org
2012-11-16 23:06 ` paolo.carlini at oracle dot com
2012-11-17  0:19 ` redi at gcc dot gnu.org
2013-02-08  9:17 ` redi at gcc dot gnu.org
2022-01-05 15:41 ` ppalka 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).