title: Using class constructor as callable object
body: <pre><code>class C {
  public:
      C() {}
  };
  
  template&lt;typename T&gt;
  void func(T f) {}
  
  int main() {
      func(C);
  }
  </code></pre>
  
  <p>How to fix the compilation error "2.cpp:9:15: error: expected primary-expression before ‘)’ token
           func(C);"?</p>
  
  <p>Passing class as parameter seems ridiculous, but I want to compile function like thread, since "thread(C)" works fine:</p>
  
  <pre><code>#include &lt;thread&gt;
  
  class C {
  public:
      C() {}
  };
  
  template&lt;typename T&gt;
  void func(T f) {}
  
  int main() {
      std::thread(C);
  }
  </code></pre>