配列変数への代入

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で直されている。