The following code cannot be compiled by GCC 4.3.3.
#include <iostream> #include <algorithm> #include <functional> using namespace std; int main() { class PrintOne : unary_function<int, void> { public: result_type operator()(argument_type i) { wcout << i << L'\n'; } }; int a[20] = {0, 0, 0, 0, 0}; for_each(a, a + 20, PrintOne()); return 0; } The error message is: test.cpp:22: error: no matching function for call to `for_each(int[20], int*, main()::PrintOne)' If we move class PrintOne outside or do not use template function, the compilation will succeed. -- Summary: G++ cannot compile local classes together with template. Product: gcc Version: 4.3.4 Status: UNCONFIRMED Severity: minor Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jim_king_2000 at 163 dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39452