配列変数への代入
GCC ver3.0以前のC++フロントエンドでは、型が全く同じ配列間で代入することができる。
例
int a[N],b[N];
a = b;
このとき、aとbはcv修飾も含め全く同じ必要があるため、極めて使いにくい。
また、コンストラクタを定義していないクラスに対して、この拡張機能を使うと、
ユーザ定義の代入演算子を無視して、ビット単位のコピーが行われるため、
この機能を使うことは激しくお勧めしない。
(まぁ、このバグ自体は、標準C++の範囲内でも発現するのだが。)
struct foo { foo& operator=(const foo&); // ... }; struct bar { foo data[2]; }; int main() { bar a, b; a = b; // fooの代入演算子は呼ばれない。 }
このバグは、version 3.3で直されている。