http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57698
--- Comment #2 from Markus Trippelsdorf <markus at trippelsdorf dot de> --- Here's a reduced example: % cat test.ii typedef bool (*IsAcceptableThis) (const int &); inline int fn1 (IsAcceptableThis p1) { p1 (0); return 0; } __attribute__ ((always_inline)) inline bool fn2 (const int &) { return 0; } void fn3 () { fn1 (fn2); } % g++ -c -O2 test.ii test.ii: In function ‘void fn3()’: test.ii:10:13: error: inlining failed in call to always_inline ‘bool fn2(const int&)’: indirect function call with a yet undetermined callee inline bool fn2 (const int &) ^ test.ii:5:11: error: called from here p1 (0); ^