TupleとopEquals()const他についての議論

D言語の開発について、Tupleのバグとその直し方~解決までの議論。
3
SHOO @mono_shoo

std.concurrency の receive の引数にVariant型混ぜることできなくなってしまったの…?

2012-09-18 21:35:28
はるえす@イカのフレンズ @Rayerd

あれ?そうなんだ RT @mono_shoo std.concurrency の receive の引数にVariant型混ぜることできなくなってしまったの…?

2012-09-18 21:43:28
SHOO @mono_shoo

http://t.co/C2OSuscD #dlang 以前はできた。けどこれが今はできない…

2012-09-18 21:48:17
SHOO @mono_shoo

以前 == 最新リリース という方程式 #dlang

2012-09-18 22:02:46
SHOO @mono_shoo

http://t.co/cKlrpE0v もっと単純な話、VariantがTupleに詰められなくなってる。これはヤバイRegressionじゃないの?

2012-09-18 21:53:45
SHOO @mono_shoo

const opEquals ってなんだよ…?

2012-09-18 22:01:45
ようけい @youxkei

でもstd.typecons.TupleのopEqualsにconstがつけば、いろんな場所にconstがつけられて嬉しい

2012-09-18 22:07:39
ようけい @youxkei

opEqualsにconstを強制、みたいなことをしないと、任意のRangeを受け取るみたいなライブラリを書くときに全くconstが付けられなくて悲しい

2012-09-18 22:14:40
SHOO @mono_shoo

@youxkei うん、嬉しいのは嬉しいのだけど、constを強制するのは現状NGでは…?

2012-09-18 22:10:49
SHOO @mono_shoo

opEquals って const じゃなくて inout じゃダメなの

2012-09-18 22:08:17
ようけい @youxkei

@mono_shoo 結果をキャッシュしておくとかありますからね・・・難しいです

2012-09-18 22:11:53
SHOO @mono_shoo

@youxkei 個人的にはキャッシュなんぞいらんと思っている。キャッシュで高速化したいならそれ相応の関数を用意するべき。普段プログラミングする上で滅多に使わない機能(出典:私)が、opEqualsにconstを強制させるという美くしく単純な仕様を覆す理由に足るとは到底思えない。

2012-09-18 22:37:45
hara kenji @9rnsr

@mono_shoo Tuple.opEquals() const は、単にconst付けたりinout付けたりだと、(クラス型みたいな)mutableなopEqualsしか持ってない型で駄目になるので、オーバーロードを追加する方向で修正された。

2012-09-18 22:11:19
hara kenji @9rnsr

@mono_shoo 今のVariantはconstについてほとんど考慮されていないので、いままではたまたま動いていただけと考えるべき。

2012-09-18 22:12:11
SHOO @mono_shoo

@9rnsr この実装だとopEquals() constしか持ってない型でコンパイルエラーになるのでは?

2012-09-18 22:12:50
SHOO @mono_shoo

http://t.co/1RIobD3v 要するにこれがダメだとまずくない?ということ。

2012-09-18 22:15:08
SHOO @mono_shoo

@9rnsr あれ…? mutableなopEqualsしか持っていない型で問題が起こっているのだけど…? あとどうやらVariantは関係ないっぽい

2012-09-18 22:24:02
SHOO @mono_shoo

テンプレートthisパラメータで回避するか、opEquals() constが定義されている時のみ定義するようにconstraint-ifで制限かけないとイカンのでは?

2012-09-18 22:26:03
hara kenji @9rnsr

おそらくそれ相当のものが必要ですね… RT @mono_shoo: テンプレートthisパラメータで回避するか、opEquals() constが定義されている時のみ定義するようにconstraint-ifで制限かけないと

2012-09-18 22:26:49
SHOO @mono_shoo

この手の作りこみ欠陥、他にもありそうな気がする。

2012-09-18 22:29:56
SHOO @mono_shoo

これ、何かしらの方法をイディオム化したほうがいいのでは。

2012-09-18 22:31:31
SHOO @mono_shoo

opEqualsにキャッシュ機能なんぞつけんでいいからとにかくconst強制しろという自分勝手な自己主張はさておき、現状そうなっていないのでいまのtupleの実装はマズイ。ばぐじろう

2012-09-18 22:43:52
hara kenji @9rnsr

@mono_shoo すいません、bugzillaへのfilingお願いします。私のほうはtemplate constraintを直し中なのですが、無関係なコンパイラのバグを見つけてしまいました…

2012-09-18 22:51:10