value_cast yields a result whose type is the result of calling check_typedef on the requested type. This means that casting will strip typedefs. This yields the wrong answer for cases where the type name matters, namely python-based pretty-printing, and printing of wchar_t.