title: How to create a pointer to member which does not perform virtual calls?
body: <pre><code>#include &lt;iostream&gt;
  
  struct CL1
  {
      virtual void fnc(){std::cout&lt;&lt;1;}
  };
  
  struct CL2: CL1
  {
      void fnc(){std::cout&lt;&lt;2;}
  };
  
  
  int main()
  {
      auto pf = &amp;CL1::fnc;
      CL1* pcl = new CL2;
      (pcl-&gt;*pf)(); //prints "2"
  }
  </code></pre>
  
  <p>Here is a pointer to member function <code>fnc</code>, which calls version of a derived class. How can I create a pointer which points just to CL1::fnc, without using of a virtual table?</p>