The below code snippet compiles on gcc 3.4.6 gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8) but fails on gcc 4.1.1 gcc-4.1.1 (GCC) 4.1.1 20060724 (prerelease) (4.1.1-4pclos2007) with erros such as namespace_operator_new.cpp:8: error: void* my_alloc::operator new(size_t, char*, int) may not be declared within a namespace
-------------- namespace_operator_new.cpp -------------------------------- #include <new> using std::bad_alloc; using std::nothrow_t; namespace my_alloc { void * operator new(size_t s, char *file, int line) throw (bad_alloc); void* operator new[](size_t s, char *file, int line) throw(bad_alloc); void operator delete(void *p) throw(); void operator delete[](void *p) throw(); } using namespace my_alloc; ----------------------------------- compiled with gcc -g -O2 -Wno-deprecated -Wall -Werror -c namespace_operator_new.cpp -- Summary: operator new may not be declared within a namespace Product: gcc Version: 4.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: gilad at odinak dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35086