Keith MacDonald wrote:
I can't see why this has to be so complicated. I either build my Windows apps for DBCS or for Unicode, so use the narrow or wide Win32 file system API accordingly. All that I want from boost::filesystem is a simple switch that sets its mode at compile time. Doing that with a template parameter is not going to cause any code bloat, and is neater than Microsoft's #ifdef _UNICODE method.
I have tried to explain this in great detail. Let me rephrase again: neither template not define is really attractive when used in a library interface.
I suppose some people may want to use narrow and wide APIs within a single application, but they can't use boost::filesystem now anyway, so just keep it simple.
If we're going to change boost::path interface, it's better to change it in a way which will be OK for everyone, not only to those which consistently use only one kind of characters. Otherwise, some time later we'd have to change the interface yet again. - Volodya