vector<bool> vec_bool
がある場合、|=
割り当て演算子を使用してベクトルの内容を変更することはできません。ラインなぜ離接代入演算子| =はboolのベクトルでは機能しないのですか?
bool a = false;
a |= true;
a |= vec_bool[0];
vec_bool[0] = vec_bool[0] | vec_bool[1];
vec_bool[0] = vec_bool[0] || vec_bool[1];
vector<int> vec_int(3);
vec_int[0] |= vec_int[1];
がいないのに対し、ライン
vec_bool[0] |= true;
vec_bool[0] |= vec_bool[1];
所与のコンパイルエラーです。これの理由は何ですか?
(GCCによって)指定されたエラーがある:それはstd::vector
の主要専門のためのものであるように
test.cpp:21:17: error: no match for ‘operator|=’ (operand types are ‘std::vector::reference {aka std::_Bit_reference}’ and ‘bool’)
['std :: vector'](http://en.cppreference.com/w/cpp/container/vector_bool)は*普通の*ベクトルではないことに注意してください。これは 'bool'の実際のベクトルではありませんが、C++仕様で実装が指定されていないビットのベクトルによく似ています。 –
[なぜstd :: vectorに.data()がないのですか?](https://stackoverflow.com/questions/46115669/why-does-stdvectorbool-has-no-data) –
それについての詳細はhttp://en.cppreference.com/w/cpp/container/vector_boolをご覧ください。 – cbuchart