title: Conditional typedefs
body: <p>If I have a little peice o' code as such...</p>
  
  <pre><code>template &lt;typename _T&gt;
  class Foo
  {
  public:
      typedef const T&amp; ParamType;
      void DoStuff(ParamType thingy);
  };
  </code></pre>
  
  <p>This can be non-optimal if <code>sizeof(_T) &lt;= sizeof(_T*)</code>.</p>
  
  <p>Therefore, I want to have a conditional <code>typedef</code>. If the size of <code>_T</code> is less than or equal to that of a pointer, just pass it in by value. Otherwise, pass it by const reference. Is this possible? I hear all this stuff about templates being turing complete but this is hurting my head.</p>