title: How to declare/define a class with template template parameters without using an extra template parameter
body: <p>Consider the following use of template template parameters...</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  template &lt;typename X&gt;
  class A
  {
      X _t;
  public:
      A(X t)
          :_t(t)
      {
      }
      X GetValue()
      {
          return _t;
      }
  };
  
  template &lt;typename T, template &lt;typename T&gt; class C &gt;
  class B
  {
      C&lt;T&gt; _c;
  public:
      B(T t)
          :_c(t)
      {
      }
      T GetValue()
      {
          return _c.GetValue();
      }
  };
  
  using namespace std;
  
  int main()
  {
      B&lt;int, A&gt; b(10);
      cout&lt;&lt;b.GetValue();
      return 0;
  }
  </code></pre>
  
  <p>Is there a way by which the template parameter T can be removed? For example is there a way to make the following work?</p>
  
  <pre><code>//Does not compile
  template &lt;template &lt;typename T&gt; class C &gt;
  class B
  {
      C _c;
  public:
      B(T t)
          :_c(t)
      {
      }
      T GetValue()
      {
          return _c.GetValue();
      }
  };
  
  int main()
  {
      B&lt; A&lt;int&gt; &gt; b(10);
      cout&lt;&lt;b.GetValue();
      return 0;
  }
  </code></pre>