title: Is there a way to pass templated function signature as a template template parameter
body: <p>By using template template parameters one can pass to a class a templated class without specifying types on its parameters. I was wondering is there a way to pass into a template template parameter a templated signature of a function to be able to specialize which variant of the function is to be considered forward. </p>
  
  <p>To be clear - I know I cannot do that:</p>
  
  <pre><code>template &lt;class T&gt;
  void foo() { /*...*/ }
  
  template &lt;template &lt;class...&gt; class FooType&gt;
  struct Foo { /*...*/ };
  
  int main() {
      Foo&lt;decltype(foo)&gt; f;
  }
  </code></pre>
  
  <p>But somehow I would like to be able to pass templated signature of function to <code>Foo</code>. Is it even possible?</p>