In the program snippet given below, line number 14 and 20 should have identical access privileges with respect to A::func(). But gcc 4.1.2 compiles line #14 just fine, whereas on line #20, it catches the error correctly. This bug is similar to bug #24118.
1 class A 2 { 3 protected: 4 void func () 5 { } 6 }; 7 8 class B: private A 9 { 10 public: 11 template <class T> 12 void foo () 13 { 14 void (A::*ptr)() = & A::func; 15 // Should not compile but compiles on gcc 4.1.2 16 } 17 18 void bar () 19 { 20 void (A::*ptr)() = & A::func; 21 // Should not compile and gcc throws error. 22 } 23 }; 24 int main (void) 25 { 26 B b; 27 b.foo<int>(); 28 b.bar(); 29 } -- Summary: access control bug in member function templates Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sutambe at yahoo dot com GCC host triplet: SMP i686 i386 GNU/Linux Fedora Core Release 6 GCC target triplet: SMP i686 i386 GNU/Linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33934