title: match against template template type parameter
body: <p>Say I would like to type-match any container with a specific member (a constraint) - but also bind type variables to both the container and the member. For example let <code>T</code> and <code>U</code> be the template type variables corresponding to class and member <code>Someclass.member</code>. Is this possible?</p>
  <p>Let's simplify things by templating the container. This moves the member type into the type system as the template type parameter which allows removing the constraint. Now can I bind the type variables to both the template type and the template type parameter? For example let <code>T</code> and <code>U</code> be the template type variables corresponding to the templated container <code>T&lt;U&gt;</code>. Is this possible?</p>
  <p>For example,</p>
  <pre><code>template &lt;typename T&gt;
  struct S1 {
      T a;
      int b;
  };
  
  struct S2 {
      S1&lt;int&gt; a;
      S1&lt;double&gt; b;
  };
  
  void cb(auto*);
  
  // Many things have been tried
  template&lt;T&lt;U&gt;&gt;
  template&lt;template&lt;typename U&gt; typename T&gt;
  void caller(T&lt;U&gt;*, void (*)(U*));
  
  template&lt;S1&lt;T&gt;&gt;
  void caller(S1&lt;T&gt;*, void (*)(T*));
  
  template&lt;T&gt;
  void caller&lt;S1&lt;T&gt;&gt;(S1&lt;T&gt;*, void (*)(T*));
  </code></pre>