AFAIK nothing requires generic code to be compiled inline in C++.
Heck with explicit template instantiation the generic code may not even be in the same translation unit as the calling code. At that point it'd require link time optimization to inline it.