title: C++11 std::unique_ptr deleter
body: <p>I used the codes as follow, but g++ give me errors.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;memory&gt;
  
  using Func = void (*)(void *p);
  
  class A {
  };
  
  class B {
      std::unique_ptr&lt;A, Func&gt; b = std::unique_ptr&lt;A, Func&gt;(nullptr, nullptr);
  };
  
  int main()
  {
  
  }
  </code></pre>
  
  <p>g++ error messages.</p>
  
  <pre><code>test.cc:10:50: error: expected ‘;’ at end of member declaration
  std::unique_ptr&lt;A, Func&gt; b = std::unique_ptr&lt;A, Func&gt;(nullptr, nullptr);
                                                ^
  test.cc:10:50: error: declaration of ‘std::unique_ptr&lt;A, void (*)(void*)&gt; B::Func’ [-fpermissive]
  test.cc:4:31: error: changes meaning of ‘Func’ from ‘using Func = void (*)(void*)’ [-fpermissive]
  using Func = void (*)(void *p);
                             ^
  test.cc:10:54: error: expected unqualified-id before ‘&gt;’ token
  std::unique_ptr&lt;A, Func&gt; b = std::unique_ptr&lt;A, Func&gt;(nullptr, nullptr);
                                                    ^
  test.cc:10:47: error: template argument 1 is invalid
  std::unique_ptr&lt;A, Func&gt; b = std::unique_ptr&lt;A, Func&gt;(nullptr, nullptr);
                                             ^
  test.cc:10:47: error: template argument 2 is invalid
  </code></pre>
  
  <p>g++ version</p>
  
  <pre><code>root@ubuntu-linux:~/trafficserver/iocore/net/quic# g++ test.cc -std=c++11^C
  root@ubuntu-linux:~/trafficserver/iocore/net/quic# g++ -v
  gcc version 4.9.4 (Ubuntu 4.9.4-2ubuntu1~14.04.1) 
  </code></pre>
  
  <p>It seems like bad delete function.</p>