title: What happens when call a pointer to data member with arguments
body: <p>From <a href="https://en.cppreference.com/w/cpp/named_req/Callable" rel="nofollow noreferrer">Cppreference</a>, I found it noted that</p>
  <blockquote>
  <p>Pointers to data members are Callable, even though no function calls take place.</p>
  </blockquote>
  <p>However, when I test following code</p>
  <pre class="lang-cpp prettyprint-override"><code>#include &lt;iostream&gt;
  #include &lt;functional&gt;
  using namespace std;
  class CTest
  {
  public:
      CTest() : n(0) {}
      ~CTest() {}
  public:
      int n;
  };
  
  int main() {
      CTest o;
      auto f = std::bind(&amp;CTest::n, o);
      f(1) = 2;
      cout &lt;&lt; f() &lt;&lt; endl;
      return 0;
  }
  </code></pre>
  <p>I found that I can call <code>f</code> with any arguments, not limited by count or type.</p>
  <p>So, why can I insert almost any thing into <code>f(...)</code>? Is the syntax like</p>
  <pre class="lang-cpp prettyprint-override"><code>template&lt;class... Args&gt;
  int f(Args&amp;&amp;... args) {
      return *pointer_to_data;
  }
  </code></pre>