環境
- C++11
- Visual Studio 2017
質問内容
std::vector<bool> の operator[] で取得した各要素の参照に対して &= 演算を行いたいのですが、コンパイルエラーとなってしまいます。
以下の例で bool 型の変数だと問題ないのに、std::vector<bool> ではコンパイルエラーになってしまうのは、どのような理由なのでしょうか。
#include <iomanip> #include <iostream> #include <vector> int main() { // bool 型の変数 { bool flag = true; flag &= false; std::cout << std::boolalpha << flag << std::endl; } // std::vector<bool> { std::vector<bool> flag = {true, false, true}; flag[0] &= false; // コンパイルエラー C2676 // flag[0] = flag[0] & false; だと OK } }
エラー: C2676: 二項演算子 '&=': 'std::_Vb_reference<std::_Wrap_alloc<std::allocator<std::_Vbase>>>' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
すみませんが、よろしくおねがいします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/02 09:51
2019/04/02 10:03
2019/04/02 11:25
2019/04/02 11:50
2019/04/02 13:45
2019/04/02 20:12