-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
safe_dist関数をrenameしてabs_diffに #91
Comments
safe_distを完全に削除しても良いと思います。 |
スレッド生成とかで100%安全に差の絶対値を計算する需要もあると思うので、とりあえずdeprecatedにしてあとで、 C/C++はnull安全になる前に安全に差の絶対値を計算できるようになるべきではないか#つまり安全に差の絶対値を計算できるようにはどうすればいいのか を持ってこようかと思っています。
といっていて、怖いのでまだこちらに入れるつもりはありませんが。 |
ごめんなさい。 |
まず、非負整数を保証できる場合はabs_diffで十分です。 ただ、safe_distの場合強制的にunsignedに持っていくのが望ましい挙動かという問題と、浮動小数点数のときどうしよう、という話があり、またまだバグっている疑いがあるため、まだ持ってこれないので、とりあえず今はN4318のabs_diffを呼ぶようにしておけばコーナーケースをつかなければUndefined Behaviorにならないのでまあいいかなと思っています。 実際問題、[INT_MIN, INT_MIN]と[INT_MAX,INT_MAX]の距離を求めるようなユーザーがどれだけいるかという・・・。 じゃあ名前変えないで放置でいいのでは、という話がありますが、UBを防げないのに ああ、あとは現状の利用箇所であるdistanceは当たり判定なので使われることを想定しているので、あまり例外を使いたくない(=noexceptにしたい)という話もあります。 |
うーん。
であってるでしょうか?間違ってたら指摘してください。 |
Qiitaの実装は例外投げてるので(バグっているという指摘を除けば)UBにはならないです
速度か安全かというところ・・・。いっそassertを使う |
それで良いような気がします。当たり判定は高速に動作させるのが良いですし。 |
うーん、その場合assertを使う方はconstexprにできないな・・・。やむを得ないか。 |
現在
https://github.com/Nagarei/DxLibEx/blob/a02079141b420889e40a9455f7e8edae28ab7a82/dxlibex/algorithm/safe_dist.hpp
に
safe_dist
関数があるが、これを[PDF] N4318: Proposal to add an absolute difference function to the C++ Standard Library
に合わせた仕様のものにする
提案文章では
となっているが、
decltype(auto)
はVS2013では動かない&constexpr
になっていないので、まあ頑張るしかないだろう。The text was updated successfully, but these errors were encountered: