title: How to write std::bind with constructor
body: <p>EDIT: I understand I could create a named function to solve the problem. I just want to learn some arcane C++ template syntax from you gurus.</p>
  
  <hr>
  
  <p>Given this setup (the vector is guaranteed to be initially empty)</p>
  
  <pre><code>typedef vector&lt;list&lt;int&gt;&gt; V;
  V v;
  </code></pre>
  
  <p>I want to create a partial application like this:</p>
  
  <pre><code>auto f = [&amp;v](int value) { v.push_back(list&lt;int&gt; { value }); };
  </code></pre>
  
  <p>Unfortunately, in our working environment, we can't use lambda (with gcc 4.4). Can anyone help me writing an equivalent version using <code>std::bind</code>?</p>
  
  <p>So far I come up with several attempts (using Visual Studio):</p>
  
  <p>1.</p>
  
  <pre><code>auto f = bind&lt;void (V::*)(const V::value_type&amp;)&gt;(&amp;V::push_back, &amp;v, list&lt;int&gt;(1, placeholders::_1));
  </code></pre>
  
  <p>with error</p>
  
  <pre><code>'&lt;function-style-cast&gt;': cannot convert from 'initializer list' to 'std::list&lt;int,std::allocator&lt;_Ty&gt;&gt;'
  </code></pre>
  
  <p>2.</p>
  
  <pre><code>auto f = bind&lt;void (V::*)(const V::value_type&amp;)&gt;(&amp;V::push_back, &amp;v, list&lt;int&gt;::list(1, placeholders::_1));
  </code></pre>
  
  <p>with error</p>
  
  <pre><code>'std::list&lt;int,std::allocator&lt;_Ty&gt;&gt;::list': none of the 10 overloads could convert all the argument types
  </code></pre>
  
  <p>3.</p>
  
  <pre><code>auto f = bind&lt;void (V::*)(const V::value_type&amp;)&gt;(&amp;V::push_back, &amp;v, list&lt;int&gt; { placeholders::_1 });
  </code></pre>
  
  <p>with error</p>
  
  <pre><code>'initializing': cannot convert from 'initializer list' to 'std::list&lt;int,std::allocator&lt;_Ty&gt;&gt;'
  </code></pre>
  
  <p>4.</p>
  
  <pre><code>auto f = bind&lt;void (V::*)(const V::value_type&amp;)&gt;(&amp;V::push_back, &amp;v, list&lt;int&gt; { (const int&amp;) placeholders::_1 });
  </code></pre>
  
  <p>this compiles, but the vector created by <code>f(10)</code> would have a list with the first element equals to 0, not 10. It looks like the list is a default created one.</p>