自動指定子を使用して、戻り値がvector<bool>::back()
から初期化される変数を作成する場合、変数に参照修飾子があります。ベクトルの参照修飾子とみなされるVC++の自動指定子<bool> :: back
int main()
{
bool b = true;
bool & j = b;
auto k = j;
k = false; // k is of int type. So, j and i are unaffected.
std::vector<bool> vec = { true };
auto l = vec.back();
vec.pop_back();
l = false; // I get a debug assertion here.
}
それはタイプだが、変数lが、私が代わりにブール値のint型を使用している場合は、自動指定子は、同様のベクターのために働くタイプstd::_Vb_reference<std::vector< bool, std::allocator<bool>>::_Alty >
を持っているとして、k個の変数がbool
を持っています。
VC++のバグですか? 私はMicrosoft Visual C++ 2013を使用しています。
'std :: vector < bool >'はコンテナではありません – Danh