amp; p )
{
  return foo&lt;wpath&gt;( p );
}</pre>
</blockquote>
<p>That's really ugly for such a simple need, and there would be a combinatorial 
explosion if the function took multiple Path arguments and each could be either 
narrow or wide. It gets even worse if the C++0x <code>char16_t</code> and <code>
char32_t</code> types are to be supported.</p>

<h2><a name="Solution">Solution</a></h2>

<p>Overview:</p>

<ul>
  <li>A single, non-template, <code>class path</code>.</li>
  <li>Each member function is 