th Filesystem.V2, a path argument to a user defined function that is to 
accommodate multiple character types and encodings must be written as a 
template. Do-the-right-thing overloads or template metaprogramming must be 
employed to allow arguments to be written as string literals. Here's what it 
looks like:</p>

<blockquote>
  <pre>template&lt;class Path&gt;
void foo( const Path &amp; p );</pre>
  <pre>inline void foo( const path &amp; p )
{
  return foo&lt;path&gt;( p );
}
inline void foo( const wpath &