The only OS of any significant size I know of that's been programmed in C++ down to "bare metal" is the AS/400 operating system OS/400 (after v3r6).
There's nothing much that prevents you from doing any OS in C++ -- especially when you recall that vanilla C is "almost" valid C++ anyway. What becomes interesting is doing new
/delete
at the lowest levels, because you need to guarantee no leaks and such. This leads to a need to re-implement the new
functions.
I helped do v3r6, but it's been about 13 years and I don't remember the hairy details. I'm not aware of any publications on it, but if you're really interested, try writing Marshall Cline at http://www.parashift.com.
(Augh. "delete" vice "free".)