I'd like to use basic_path as a function parameter so that
it works
correctly whether a wide or narrow string is passed.
template<typename T>
void func(basic_path<T> file) { do thing to file }
func("myfile");
func(L"myfile");
However I can't do this because basic_path has a second
Traits template
parameter which is not itself a template. So I tried the
following
workaround:
template<typename T> struct traits_chooser;
template<> struct traits_chooser<char*>
{
typedef boost::filesystem::path_traits traits;
};
template<> struct traits_chooser<wchar_t*>
{
typedef boost::filesystem::wpath_traits traits;
};
template<typename T>
void func(basic_path<T, typename traits_chooser<T>::traits>
file) {...}
But my compiler (MSVC 2005) still can't deduce the parameter
type. Does
anyone know how I can get this to work?
Many thanks.
Alex Lamaison