[Assign] Error using list_of() with Visual C++ 2010 Beta 1
In the Boost.Assign documentation, the following example of list_of() is given: const list<int> primes = list_of(2)(3)(5)(7)(11); However, I have tended to write this instead: const list<int> primes(list_of(2)(3)(5)(7)(11)); This is causing problems with the Microsoft Visual C++ 2010 Beta 1 compiler. Using Visual C++ 2008, both lines compile fine but with 2010 Beta 1, the second produces the following error: error C2668: 'std::list<_Ty>::list' : ambiguous call to overloaded function with [_Ty=int] could be 'std::list<_Ty>::list(std::list<_Ty> &&)' with [_Ty=int] or 'std::list<_Ty>::list(unsigned int)' with [_Ty=int] while trying to match the argument list '(boost::assign_detail::generic_list<T>)' with [T=int] Is this: a) My fault? Should I be using copy initialization rather than direct initialization? b) A problem with the 2010 beta compiler? or c) A problem with Boost.Assign? Thanks
Paul Baker skrev:
In the Boost.Assign documentation, the following example of list_of() is given:
const list<int> primes = list_of(2)(3)(5)(7)(11);
However, I have tended to write this instead:
const list<int> primes(list_of(2)(3)(5)(7)(11));
This is causing problems with the Microsoft Visual C++ 2010 Beta 1 compiler. Using Visual C++ 2008, both lines compile fine but with 2010 Beta 1, the second produces the following error:
error C2668: 'std::list<_Ty>::list' : ambiguous call to overloaded function with [_Ty=int] could be 'std::list<_Ty>::list(std::list<_Ty> &&)' with [_Ty=int] or 'std::list<_Ty>::list(unsigned int)' with [_Ty=int] while trying to match the argument list '(boost::assign_detail::generic_list<T>)' with [T=int]
Is this:
a) My fault? Should I be using copy initialization rather than direct initialization?
Well, if it works more portably, then why not.
b) A problem with the 2010 beta compiler?
I really don't know. Try to ask a question on some newsgroup with some C++ gurus.
or c) A problem with Boost.Assign?
Well, I think Boost.Assign does everything it can. -Thorsten
I've been discussing this issue with one of the Visual C++ developers; they believe that part of the problem is that "Boost[.Assign]'s code is ambiguous according to the [C++0x] Working Paper". Does anyone know whether this is, in fact, the case?
2009/9/30 Paul Baker
I've been discussing this issue with one of the Visual C++ developers; they believe that part of the problem is that "Boost[.Assign]'s code is ambiguous according to the [C++0x] Working Paper".
Does anyone know whether this is, in fact, the case?
This is easy to believe, because I know for sure that direct-initialization
of vector from list_of is ambiguous under the rules of current C++ standard.
#include <vector>
#include
participants (3)
-
Paul Baker
-
Roman Perepelitsa
-
Thorsten Ottosen