C++ macro and template with multiple arguments error
<p>I have this simple (useless) code to demonstrate the problem:</p>

<pre><code>template&lt;typename _Tx, typename _Ty&gt;
struct foo{};

#define TO_STRING(Type) #Type

int main()
{
    std::string sInt = TO_STRING(int);
    std::string sfoo1 = TO_STRING(foo&lt;int, float&gt;); //warning and unexpected value - "foo&lt;int"
    std::string sfoo2 = TO_STRING((foo&lt;int, float&gt;)); //no warning, still unexpected value "(foo&lt;int, float&gt;)"
}
</code></pre>

<p>Is there a way to pass templates with multiple arguments to macros without using 
<code>()</code> ?</p>
