title: Ambiguous call with list_of in VS2010
body: <p>I am trying to convert a projet from VS2008 to 2010 but am hitting  problem because of added move constructors (and probably the fact that there are nested list_of's here). The following code snippet shows the error (in the actual code these constructs are used to initialise some statics):</p>
  
  <pre><code>enum some_enum {R, G, B};
  
  typedef std::pair&lt;some_enum, some_enum&gt; Enum_Pair;
  typedef std::vector&lt;some_enum&gt; Enum_list;
  typedef std::pair&lt;Enum_Pair, Enum_list&gt; Some_Struct;
  typedef std::list&lt;Some_Struct&gt; Full_Struct;
  
  #define MAKEFULLSTRUCT(First_, Second_, some_enums)\
      (Some_Struct(Enum_Pair(First_, Second_), list_of (some_enums) ))
  
  int main()
  {
      int i = G;
      Full_Struct test_struct = list_of
          MAKEFULLSTRUCT(R, R, R).to_container(test_struct);
  }
  </code></pre>
  
  <p>which leads to </p>
  
  <pre><code>error C2668: 'std::vector&lt;_Ty&gt;::vector' : ambiguous call to overloaded function
  with  [_Ty=some_enum]
  vector(593): could be 'std::vector&lt;_Ty&gt;::vector(std::vector&lt;_Ty&gt; &amp;&amp;)'
  with  [ _Ty=some_enum]
  vector(515): or       'std::vector&lt;_Ty&gt;::vector(unsigned int)'
  with  [ _Ty=some_enum]
  while trying to match the argument list '(boost::assign_detail::generic_list&lt;T&gt;)'
  with  [ T=some_enum ]
  </code></pre>
  
  <p>Is there some way to resolve this while still using boost::list_of? Or do I have to switch to another initialisation mechanism?</p>