Требования к 21.1.1 признаков знака
Состояния C++ стандартные которыми возвращаемое значение char_traits::eof не должно быть допустимым значением знака.Компилятор это ограничение соблюдается для Visual C++ char_type<char>::eof, но не для char_type<wchar_t>::eof.