一般化を考えてみる
例外なしで考えてみる
1.
A ||->f B
= (bool)A ? f(A) : B
とか?
2.
A ||-> B
= (bool)A ? A() : B
でA()はオーバーロードとか?
3.
A ||-> B
= (bool)A ? (typeof(B))A : B
でキャストをオーバーロードとか?
4.
A ||-> B
= (bool)A ? get
でgetをオーバーロードとか?
5.
A ||->(a,b,c) B
= (bool)A ? A(a,b,c) : B
で任意の関数に使えるとか?
ひどい構文
built-inだったら2.がなんとか許せるかなー
関数ポインタにも使えるので
tupleとか多値だと
2値だけ特別扱いになってなんかbuilt-inらしくない
1.の形式ならそうでもないか
でもこの構文パースが紛らわしいんだよな
何にせよ
「値とショートカットの判断基準が異なる||みたいな演算子」
ってものがあれば
それのオーバーロードでなんとでもなりそうなそうでもなさそうな