https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94679
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I suspect -fkeep-inline-functions is not really usable any more with C++ code like this. To make sure fooable constraint is valid, we need to instantiate "IMove::operator()" which we don't know if it is going to be used later on or not. Since it is inline (implicitly), -fkeep-inline-functions will keep it around and "IMove::operator()" calls "projected<int>::operator*() const"