Ezio Melotti email@example.com added the comment:
What if in the functions.rst page we specify the current module for all the functions (or even just for int/float/etc) as __builtin__ and use the function directive, and in the stdtypes.rst (or elsewhere) we use the class directive? The idea is to pretend that '__builtin__.int' is a function in the __builtin__ module whereas 'int' is a global object. In this way :func/class:`int` will probably link to the stdtypes.rst page, and :func/class:`~__builtin__.int` can be used to link to the functions.rst page (or the other way around if we want to link to the functions.rst page more often). This is only a workaround though (assuming that it works), changing Sphinx to be smarter might be a better option.