Artyom,
Please ignore my request for wifstream and wofstream constructors. I see now that these are not needed: windows accepts UTF-16 filenames so of course I just needed to use widen. I am however surprised that your fstream constructors do not directly accept std::string? I feel that the required .c_str() call should be incorporated.
Regards,
Colin Humphries