title: C++ sizeof( typename T) in a conditional expression
body: <p>I asked a question here, <a href="https://stackoverflow.com/questions/18118771/c-template-argument-with-expression">C++ template argument with expression</a>, and got an answer but now I want to move onto something like this:<br></p>
  
  <pre><code>#include &lt;complex&gt;
  #include &lt;type_traits&gt;
  
  using namespace std;
  
  template&lt;class T, class U&gt;
  complex&lt; conditional&lt;(sizeof( T ) &gt; sizeof( U )), T, U&gt;::type &gt; my_method(T x, U y)  { }
  </code></pre>
  
  <p><br>
  This gives me the errors:</p>
  
  <pre><code>main.cpp:10:65: error: type/value mismatch at argument 1 in template parameter list for ‘template&lt;class _Tp&gt; struct std::complex’
  main.cpp:10:65: error:   expected a type, got ‘std::conditional&lt;(sizeof (T) &gt; sizeof (U)), int, float&gt;::type’
  </code></pre>
  
  <p><br>
  I have tried adding the key word typename and class before T and U, but that changes the error too:<br></p>
  
  <pre><code>main.cpp:37:1: error: wrong number of template arguments (1, should be 3)
  /usr/include/c++/4.7/type_traits:77:12: error: provided for ‘template&lt;bool &lt;anonymous&gt;, class, class&gt; struct std::conditional’
  main.cpp:10:10: error: template argument 1 is invalid
  main.cpp:10:1: error: expected unqualified-id at end of input
  </code></pre>
  
  <p><br>
  I am using g++ with -std=c++11 as a compiler option on linux. Is there anyway to do what I am trying to do? 
  Thanks.</p>