One example of a class of algorithms that can solve its own halting problem is the class of primitive recursive functions. There’s a primitive recursive function F that takes as input a description of a primitive recursive function A and input I and outputs true if A(I) halts, and false otherwise: this program is given by F(A,I)=true, because all primitive recursive functions halt on all inputs. In this case, it is R that does not exist.
I think C should exist, at least for classical bits (which as others have pointed out, is all that is needed), for any reasonably versatile model of computation. This is not so for R, since primitive recursion is actually an incredibly powerful model of computation; any program that you should be able to get an output from before the heat death of the universe can be written with primitive recursion, and in some sense, primitive recursion is ridiculous overkill for that purpose.
One example of a class of algorithms that can solve its own halting problem is the class of primitive recursive functions. There’s a primitive recursive function F that takes as input a description of a primitive recursive function A and input I and outputs true if A(I) halts, and false otherwise: this program is given by F(A,I)=true, because all primitive recursive functions halt on all inputs. In this case, it is R that does not exist.
I think C should exist, at least for classical bits (which as others have pointed out, is all that is needed), for any reasonably versatile model of computation. This is not so for R, since primitive recursion is actually an incredibly powerful model of computation; any program that you should be able to get an output from before the heat death of the universe can be written with primitive recursion, and in some sense, primitive recursion is ridiculous overkill for that purpose.