gcc-4.X (4.0 up to 4.3) rejects the following valid c++ code: a private static member function pointer is passed as a template argument, the function visibility is resolved in the wrong scope ...
template <void (*fn)(void)> struct binder { inline void foo() { (*fn)(); } }; struct tester { private: static void foo(void) {} public: binder<&tester::foo> bndr; }; [EMAIL PROTECTED]:~$ g++-4.3 -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure linux gnu Thread model: posix gcc version 4.3.1 20080401 (prerelease) (Debian 4.3.0-3) -- Summary: wrong visibility with static member function pointers Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tim at klingt dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35978