2016-03-29 2 views
1

Я использовал bitset::at(x), проверенную версию, проверенную, установлен ли какой-либо бит из bitset<>. Но в VS2015, я получаю эту ошибку:std :: bitset :: at() исчезают в VS2015

std::bitset<6> bTestFlag; 
int b = bTestFlag.at(3); // Error C2039 'at': is not a member of 'std::bitset<6>' 

Почему это исчезло в VS2015?

+2

Поскольку это не соответствует стандарту: http://en.cppreference.com/w/cpp/utility/bitset – knivil

+2

Добавление элементов в 'std ::', не определенных стандартом, является несоответствующим поведением. * Использование * таких функций также является несоответствующим поведением. Microsoft исправила свою сторону, теперь вам нужно исправить вашу. ;-) – DevSolar

+0

@DevSolar Это действительно несоответствие для реализации, чтобы * добавить * материал в 'std'? Кажется, я не могу найти это в стандарте. – Angew

ответ

5

Возможно, вы ищете std::bitset::test(). Это правильная функция-член, которая проверяет бит, но выбрасывает std::out_of_range, если предоставленный индекс не является допустимой позицией. Никогда не было at().

+0

Да, это то же самое. Я просмотрел VS9, VS10, VS12, VS14, bitset :: at() до VS12 и окончательно ушел в VS14. Так что теперь я должен исправить свой код, как говорит @DevSolar .. :( –

Смежные вопросы