From John Eaton:
Looking at the 3.6.4 sources, I'm not sure that is_real_nd_array was ever doing anything but returning false. I only see the function in ov.h that forwards to rep, and then generic definition of it in ov-base.h that always returns false. There don't seem to be any other overloads for it.
I guess I would use is_real_type. You should be able to extract an NDArray object from any real-valued object (if not, then that is a bug). In most cases, I'd also recommend that instead of checking the type first, that you just try to extract an NDArray object and then check error_state to see whether it succeeded.