ちょっと間が空いた。
さて、ここまでを踏まえれば、最初の記事に載せた
はほぼ理解できる。
- 組み込みの
float
とユーザー定義のvector2
の両方で使えるように、2項演算子*=
をオーバーロードしたい - しかし、
float
同士の*=
演算を、後付けで定義することができない - そこで、以下のハックを使う
- ユーザー定義型
Overloads
に、3項演算子?<-
を定義する
- ユーザー定義型
- 以上の準備ができたなら、グローバルレベルでのインライン演算子定義で、
*=
を実装し、Overloads
型の?<-
演算子にぶん投げる
なんとまあ。分かってしまえば何ということはなかった。?<-
を使っているのは単にそれが3項演算子だからってだけのようだし、Overloads
型が値が1つしかない判別共用体であることにも大きな意味はなかった。