構造体の初期化と代入

自爆だけではくやしいので、記憶から消えかかってたことのメモ。
$B=i5i(BC$B8@8l(BQ&A(14)にあるように、C (C++を含む) 言語での構造体 (struct) の初期化は{}を使った配列の初期化と同様の書き方ができる。しかし、代入のときに、その記述はできない。

struct point {
  float x;
  float y;
};

struct point p = {1.0, 2.3}; // OK
struct point q;
q = {4.5, 6.0}; // NG: compile error

こういった初期化を含むコードを、構造体の初期化をサポートしていない処理系に移植するときは、泣くしかない。