title: why using struct template operator() without paramter cause a vs error: illegal use of this type as an expression
body: <pre><code>struct teststruct
  {
      template&lt;class C&gt;
      auto operator()()
      {
          printf(&quot;hello world&quot;);
      }
  };
  
   teststruct T;
   T&lt;teststruct&gt;();
  </code></pre>
  <p>that casue an error :Severity Code  Description Project File    Line    Suppression State
  Error   C2275   'teststruct': illegal use of this type as an expression</p>
  <p>but using</p>
  <pre><code>struct teststruct
  {
      template&lt;class C&gt;
      auto operator()(C*)
      {
          printf(&quot;hello world&quot;);
      }
  };
  
   teststruct T;
   T((teststruct*)(0));
  </code></pre>
  <p>this Compiled succeeded</p>
  <p>i dont need one useless paramter in my function so i perform first method,
  is there some way  to make first method  work? thanks</p>