Более чем одна конструкция соответствует списку аргументов - PullRequest
0 голосов
/ 13 октября 2011

Я пытался скомпилировать его с VS2010

long long min = std::numeric_limits<int>::min();
unsigned long long max = std::numeric_limits<int>::max();


std::bitset<64> minimal(min);//here I'm getting the error  
cout << "minimal: " << minimal;  
error:  
error C2668: 'std::bitset<_Bits>::bitset' : ambiguous call to overloaded function  
1>          with  
1>          [  
1>              _Bits=64  
1>          ]  
1>          c:\program files\microsoft visual studio 10.0\vc\include\bitset(136): could   be 'std::bitset<_Bits>::bitset(_ULonglong)'  
1>          with  
1>          [  
1>              _Bits=64  
1>          ]  
1>          c:\program files\microsoft visual studio 10.0\vc\include\bitset(127):   or       'std::bitset<_Bits>::bitset(int)' 
1>          with  
1>          [  
1>              _Bits=64  
1>          ]    
1>          while trying to match the argument list '(__int64)'    

Почему?Очевидно, что этот аргумент имеет тип long long, и для этого типа должен использоваться конструктор.Я не понимаю, что происходит.

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Я не вижу long long как одну из опций, которые вам даны в этом списке.Я вижу только:

  • _ULonglong
  • int
  • _int64

Почему бы вам не разыграть min unsigned long longи посмотрим, исправит ли это.Или, что еще лучше, используйте тип без знака - есть ли у вас битовый набор с отрицательным числом элементов?: -)

2 голосов
/ 13 октября 2011

Это ошибка в VC2010, и она была исправлена ​​в VC2011.

Вот Отчет об ошибке обратите внимание на комментарии там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...