mstorsjo added a comment.

In D42225#3020688 <https://reviews.llvm.org/D42225#3020688>, @CaseyCarter wrote:

> In D42225#2963216 <https://reviews.llvm.org/D42225#2963216>, @ldionne wrote:
>
>> In D42225#2963190 <https://reviews.llvm.org/D42225#2963190>, @mstorsjo wrote:
>>
>>> In D42225#2962348 <https://reviews.llvm.org/D42225#2962348>, @ldionne wrote:
>>>
>>>> @pcc @mstorsjo Are we aware of anyone using these extensions?
>>>>
>>>> I would like to suggest that we either remove this extension if it's not 
>>>> useful, or make it unconditional (not only on Windows) if we really think 
>>>> it's that useful (but I'd like that to come with at least a paper 
>>>> proposing to add them to the standard). Carrying around an extension 
>>>> that's only enabled on one platform (and not the most widely used platform 
>>>> for libc++ at that) is kind of awkward.
>>>
>>> This extension is fairly essential - without it, you can't interact with 
>>> files that have names outside of the 8 bit charset on Windows (and exactly 
>>> what the 8 bit charset is, can vary from system to system). I can't point 
>>> to a specific user of it, but I'd expect there to be numerous out there.
>>>
>>> Making it universally available sounds like a sensible strategy forward - 
>>> although I don't think I have the bandwidth to take on making it a 
>>> standards proposal. Maybe someone from Microsoft (who invented this 
>>> extension) can collaborate on it?
>>
>> @CaseyCarter Any appetite for that?
>
> This isn't an extension for us. The Standard mandates overloads of 
> `basic_filebuf::open`, `basic_ifstream::open`, `basic_ofstream::open`, and 
> `basic_fstream::open`, as well as constructors for `basic_ifstream`, 
> `basic_ofstream`, and `basic_fstream` that take `const 
> filesystem::path::value_type*` which are "only be [sic] provided on systems 
> where `filesystem::path::value_type` is not `char`." ([fstream.syn]/3) 
> Unsurprisingly, `filesystem::path::value_type` for us is `wchar_t`. If you're 
> supporting our mess of narrow character encodings, you may want to consider 
> `wchar_t` for `filesystem::path` on Win32 as well. If you are only supporting 
> UTF-8, I suppose you could instead transcode filenames to UTF-16 and use 
> _wfopen?

We also use `wchar_t` for `filesystem::path::value_type` on Windows, 
essentially following the MS STL when it comes to those details. I think also 
libstdc++ might have added these `wchar_t` overloads these days.


Repository:
  rCXX libc++

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D42225/new/

https://reviews.llvm.org/D42225

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D42225: libcxx: Pr... Casey Carter via Phabricator via cfe-commits
    • [PATCH] D42225: libcx... Martin Storsjö via Phabricator via cfe-commits

Reply via email to