title: Way to convert an overloaded function into a tuple of function pointers
body: <p>Suppose I have an overloaded function set like so:</p>
  
  <pre><code>void foo(int);
  void foo(float);
  void foo(double);
  </code></pre>
  
  <p>What I want to do is create a tuple of function pointers to each of the functions:</p>
  
  <pre><code>auto ptrs = std::make_tuple(static_cast&lt;void (*)(int)&gt;(foo),
                              static_cast&lt;void (*)(float)&gt;(foo),
                              static_cast&lt;void (*)(double)&gt;(foo));
  </code></pre>
  
  <p>But I want to not have to specify each of the overloads.....What I really want is to say something like this:</p>
  
  <pre><code>auto ptrs = magic_function(foo);
  </code></pre>
  
  <p>Where <code>magic_function</code> somehow figures out what all the overloads are and acts upon that information.......</p>
  
  <p>Is this possible, or is this wishful thinking?</p>