title: C++ template specialization with templated parameter
body: <p>I try to write a templated class called Null as below;</p>
  
  <pre><code>template &lt;class Type&gt;
  class Null;
  
  template &lt;&gt;
  class Null&lt;std::string&gt; {
    public:
      Null() {}
      operator std::string() const {
          return std::string();
      }
  };
  </code></pre>
  
  <p>so far works good for string</p>
  
  <p>but I want to write something like</p>
  
  <pre><code>template&lt;&gt; class Null&lt;boost::shared_ptr&lt;T&gt;&gt;
  {
  public:
      NUll(){}
      operator boost::shared_ptr&lt;T&gt;() const
      {
          return boost::shared_ptr&lt;T&gt;();
      }
  };
  </code></pre>
  
  <p>But it won't compile, I tested other ways and couldn't work it out. How can I do this right?</p>