2016-03-29 8 views
1

bitset<>のビットが設定されているかどうかを確認するために、堅牢な実行時チェック版であるbitset::at(x)を使用しました。しかし、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 ::'に物を追加することは、非準拠の動作です。 * *このような機能を使用することも不適合な動作です。マイクロソフトでは、あなたの問題を修正する必要があります。 ;-) – DevSolar

+0

@DevSolar実装が 'std'に* stuff *追加するのは実際には不適合ですか?私はこれがどこの標準でも綴られているとは思えません。 – Angew

答えて

5

あなたはおそらくstd::bitset::test()を探しています。これはビットをチェックする正しいメンバ関数ですが、指定されたインデックスが有効な位置でない場合はstd::out_of_rangeをスローします。決してat()はなかった。

+0

はい、それは同じです。 私はVS9、VS10、VS12、VS14を見ましたが、bitset :: at()はVS12まであり、VS14にはっきりと入っています。だから私は@DevSolarが言うように私のコードを修正するようになりました.. :( –