vector ::参照はbool?この専門化は、他のデータ型のベクトルと比較して行動の違いを導入します。 STD :: Vector の要素への参照を渡そうとすると、calliftoggledが発生します。これは、Vector ::参照によって返される参照型は、予想されるbool&。これは、ブール値のビットワイズ表現を使用してパフォーマンスを最適化するために行われます。ライブラリ: Boost Containers Libraryは、構造内のBool値への真の参照を提供するVector の専門的なバージョンを提供します。これにより、ラッパーへの参照を渡すことができます。これにより、基礎となるブール値への間接的なアクセスが提供されます。
struct a
{
void foo(){}
};
テンプレート
void calliftoggled(char v1、char&v2、t&t)
{
if(v1!= v2)
{
v2 = v1;
t.foo();
}
}
int main()
{
std :: vector v = {false、true、false};
const char f = false;
a;
calliftoggled(f、v [0]、a);
calliftoggled(f、v [1]、a);
calliftoggled(f、v [2]、a);
}