https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98992
--- Comment #3 from R. Diez <rdiez-2006 at rd10 dot de> --- This is still broken in GCC 14.2. The test code I am using is: #include <stdlib.h> struct MyClass { static void FreeMemory ( const void * pMem ) throw(); __attribute__ (( malloc, malloc( MyClass::FreeMemory, 1 ) )) static void * AllocMemory ( size_t Size ) throw(); }; It is available here to play with: https://godbolt.org/z/EP9x9T1Gv GCC 11.4 accepts it, and GCC from 12.1 does not anymore. The godbolt.org sandbox linked above compares GCC 11.4 with GCC 12.4, and version 14.2 still does not work.