From: Eric MALENFANT (Eric.Malenfant_at_[hidden])
Date: 2008-01-25 09:34:48
Alexei Alexandrov, le 25 janvier 2008 07:11:
> namespace fs = boost::filesystem;
> int main()
> // Setting the global locale to be environment locale
> // Setting the wpath locale to be global
> fs::wpath mypath(L"/tmp/some/directory");
> To me, this work looks correct and should work.
> But it terminates with the following message:
> terminate called after throwing an instance of
> std::char_traits<wchar_t>, std::allocator<wchar_t> >,
> boost::filesystem::wpath_traits> >'
> what(): boost::filesystem::wpath::to_external conversion error
> At the same time, the following code works:
[snip: Same program as above, using fs::detail::utf8_codecvt_facet instead of the system's locale]
> which uses a UTF-8 facet from boost itself.
> The first example should work too - this is my understanding. Who is
> wrong here - me or boost?
... or your platform's implementation of codecvt?
This is a wild guess as I don't know anything about your platform (in particular: which implementation of the standard library, and the locale environment variables used when running your program)
Quidquid latine dictum sit, altum viditur.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk