title: auto specifier with function pointer - C++
body: <p>Below code has argument(with <code>auto</code> specifier) of function pointer,</p>
  
  <pre><code>void g( bool(*fptr)(const auto) ){
    //
  }
  
  bool f(const int a){
    //
  }
  int main(int argc, char *argv[])
  {
    g(&amp;f); // Error
  }
  </code></pre>
  
  <p>works fine.</p>
  
  <hr>
  
  <p>With this code,</p>
  
  <pre><code>bool k(const auto); // Compiler accepts declaration with auto specifier
  auto h(auto&amp; output, const auto&amp; value) // Compiler accepts definition with auto specifier
  {
     // output &lt;&lt; value &lt;&lt; "\n";
  }
  typedef bool(*fptr)(const auto); // Error 
  void g( fptr f ){
    //
  }
  
  bool f(const int a){
    //
  }
  int main(int argc, char *argv[])
  {
    g(&amp;f);
  }
  </code></pre>
  
  <p><code>g++ -std=c++14</code> says, <code>error: non-function ‘fptr’ declared as implicit template</code></p>
  
  <hr>
  
  <p><strong>Question:</strong></p>
  
  <p>Why C++ compiler does not allow <code>auto</code> with function pointers?</p>