title: Provide default arguments for subscript operator and function call operator
body: <p>In the following code, I have provided <strong>default arguments</strong> for <strong>array subscript operator</strong>.</p>
  
  <pre><code>struct st 
  {
      int operator[](int x = 0)
      {
          // code here
      }
  };
  </code></pre>
  
  <p>But, compiler generated an error :</p>
  
  <pre><code>error: 'int st::operator[](int)' cannot have default arguments
       int operator[](int x = 0)
  </code></pre>
  
  <p>But, If I provide default arguments for <strong>function call</strong> operator.</p>
  
  <pre><code>struct st 
  {
      int operator()(int x = 0)
      {
          // code here
      }
  };
  </code></pre>
  
  <p>It's working fine.</p>
  
  <p>So, I have a questions:</p>
  
  <ul>
  <li>Why doesn't allowed default arguments for the array subscript operator?</li>
  <li>Why does allowed default arguments for the function call operator?</li>
  </ul>