- 1 名前:デフォルトの名無しさん [2022/04/15(金) 08:39:32.42 ID:WMzvufu2.net]
- 前スレ
C++相談室 part158 https://mevius.5ch.net/test/read.cgi/tech/1645239402/
- 2 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:42:10.92 ID:WMzvufu2.net]
- 全スレ159だったわ
タイトルだけ間違えた
- 3 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:46:23.30 ID:wykOop5a.net]
- 乙です。
- 4 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:50:45.87 ID:xDiQzMrD.net]
- おつ
- 5 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:04:13.20 ID:1joR/OE7.net]
- >>2
どんまい、乙
- 6 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:12:06 ID:pOJAVr49.net]
- グローバル変数と静的変数は
・書き換えられうる場合は排他制御が必須 ・初期化のみの場合でもその初期化の排他制御が必須 ・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される
- 7 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:23:58.05 ID:xDiQzMrD.net]
- まとめると、main開始してからリソース用意して適当に渡せよってことよ
原則としてグローバル変数もシングルトンも避けたほうが良い
- 8 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 12:30:29.25 ID:hAkRYyug.net]
- グローバル変数を避ければシングルトンがmain開始前に呼び出されること無いだろ。
グローバル変数だけ避ければいい。
- 9 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 12:37:29.85 ID:1+gF2L/G.net]
- シングルトンなんてグローバル変数と同じ
避けたほうが良い
- 10 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 13:17:57.26 ID:JW7HV0lo.net]
- シングルトンの中に書き換わる変数を持っていたらデータ競合が起こりうるよな
- 11 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:34:09.27 ID:wykOop5a.net]
- >>9
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?
- 12 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:49:11.91 ID:rZhfm+p8.net]
- >>11
それほんとにシングルトンのこと話してるの? モジュール間の情報共有はシングルトンがないと無理って言ってるに等しい気がするけど
- 13 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 16:34:54.97 ID:WyYUxIA+.net]
- >>11 「管理」が何のことを言ってるのかわからないけど、たぶんひきすうをつかえばいいと思うんだ。
- 14 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 16:52:25.27 ID:2FVuY2vb.net]
- 引数ってこういうことか?
struct singleton_t { }; singleton_t& get_singleton() { static singleton_t the_singleton; return the_singleton; } void func1(singleton_t&); singleton_t& func2(); int main() { func1(func2()); } func2なんか使わずにfunc1の中でget_singletonを呼び出せば済むことだし だったらthe_singletonをグローバルにするのと大差なくねって
- 15 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:46:49.16 ID:shXIYNIj.net]
- >>12
>>9の主張「シングルトンとグローバル変数は避けたほうが良い」を受けての話ね。 当然グローバル変数も無しで、さらにシングルトン無しでどうやってグローバルなリソースを管理するのかな?と。
- 16 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:49:50.97 ID:RJmakPbV.net]
- まあ引数で渡せばいいわけだが…
- 17 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:53:05.56 ID:PiHpabQE.net]
- >>15
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?
- 18 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:55:09.07 ID:shXIYNIj.net]
- >>16
それ何て純粋関数型プログラミング?
- 19 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:05:45.76 ID:gTMTzKSQ.net]
- システム全体のリソースならグローバルでいいだろ
グローバル変数を導入するメリットの方が勝つから なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ
- 20 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:07:59.29 ID:shXIYNIj.net]
- >>19
システム全体じゃないリソースてどんなのあったっけ?
- 21 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:15:16.00 ID:RJmakPbV.net]
- リソースって何を指してるんだろう…
- 22 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:19:31.51 ID:RJmakPbV.net]
- まあ寿命がはっきりしないオブジェクトって嫌なもんだよ
わかってもらえるとは思わんけど
- 23 名前:デフォルトの名無しさん [2022/04/15(金) 20:45:25.17 ID:aidqFE7S.net]
- 前スレでクラス内部にinstanceを持たせて運用する事を質問した者です。
(注)前スレ:943 :ユニークポインタをシングルトンの様な仕様に置き換え std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>(); ↓ static Hoge& GetInstance(){static Hoge temp;return temp;} 上記の仕様をさらに、 template <class T> inline T Instance; というテンプレートinstanceで使用できるようにアドバイスを頂き、その仕様に変更したところ、運用自体は問題ないのですが、コンストラクターの呼び出し位置がおかしい感じになってしまいますた。 インラインなのでコンパイル時?(inittermという関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。 これは明示的に回避できるのでしょうか? また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか? クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが…… 度々申し訳ございますん。
- 24 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:08:51.51 ID:ZOmTtyVU.net]
- 実際に1個しか存在しないものはシングルトンの表現が合ってる
GPUとかな
- 25 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:22:11 ID:o8nSddd2.net]
- inline変数は(MSVC16で確認する限り)1つの.dll内で同じ実体を共有する
dllをまたぐと別の実体になる .hに書いてもリンク時に多重定義で怒られない その言い方だとmainを呼び出す前の初期化処理で死んでる感じか
- 26 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:25:54 ID:lFYUjAWg.net]
- シングルトンにしてもグローバル変数にしても排他制御が必要な点で同じだよな
- 27 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:31:24.48 ID:o8nSddd2.net]
- コンストラクタ実体を含んだdllをロードする前にinline変数の初期化が走るというのが問題なら、
GetInstanceのテンプレート実装に逃げるか... template<class T> T&GetInstance(){static _back;return _back;} int main(){ GetInstance<Hoge>().Func(); } 一応言っておくがデータをケチる目的のはずだからinline変数もGetInstanceテンプレートも「本物」のグローバル変数ではない dllをまたいだら別の実体だ
- 28 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:14:55.32 ID:zMpb+zG7.net]
- 円周率みたいな定数ってどのライブラリのやつ使ってますか?
- 29 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:21:34.04 ID:0DFy/IGY.net]
- <numbers>
C++20必須だが
- 30 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:15:01 ID:ZOmTtyVU.net]
- 古いC++ならe=exp(1.0)、π=6*asin(0.5)
- 31 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 06:56:47 ID:cvz/IVkr.net]
- numbersって型変えた時ちゃんと直してくれるの?
- 32 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 16:00:35.82 ID:36AETGkW.net]
- >>31
変数テンプレートだからこっちが型を指定する auto x = std::numbers::pi_v<double>; デフォはdouble namespace std::numbers { inline constexpr double pi = pi_v<double>; }
- 33 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:48:06 ID:vYse36AQ.net]
- なおpi_v<int>はゆとり歓喜の3ではなくis_floating_pointに阻まれる模様
- 34 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 19:53:49.89 ID:pxnrcQ3X.net]
- 未だに円周率3とか言ってるおじいちゃんいるのか・・・
- 35 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:06:23.56 ID:36AETGkW.net]
- ジジイを馬鹿にするのは結構だが若いなりに何か引っさげているのか?
俺は8bit機がこれから黄金期に差し掛かるあたりでお前らのような立場だった ハッタリではなく当時のトレンド引っさげてジジイたちの死角を突くことで今の地位を得たが 口だけ達者でこれから沈みゆくだけな連中なら全然羨ましくねえぜ
- 36 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:44:57.02 ID:YPs7FevK.net]
- 世代ってより情弱ぶりを揶揄されてるのに気付かないようじゃ虚しいな
- 37 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:48:37.77 ID:36AETGkW.net]
- そもそも誰か円周率が3だなんて主張してるか?
情弱って攻撃用ワード使って脅しかけても説得力ねえとバカにしか見えねえんだけど
- 38 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:50:03.87 ID:9kZcaiqY.net]
- >>34
ジジイ、ジジイか‥‥ それじゃ、お前はなんだ?この餓鬼が 俺はお前さんがこの世に落っこってくる前からバグ書いてるんだ
- 39 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:51:51.80 ID:fE0J8eTv.net]
- 先輩パネーっすね
- 40 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:23:19.58 ID:gltC/pf5.net]
- どうしてもintのπを定義しようと思ったら、4や2ってわけにはいかないから3にするしかないと思う
- 41 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:35:43.96 ID:MoK8GTpb.net]
- どうしても偶数のπを定義しようと思ったら、4にするしかないと思う。
- 42 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:45:10.61 ID:36AETGkW.net]
- 全否定はしていない
これならジジイを馬鹿にする資格があると示しているのに 応答なしか・・・誠に残念 煽られても好意的に対応したが無駄だったか
- 43 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 22:22:53.11 ID:IM94y/ni.net]
- 20年前のフェイクニュースネタではしゃぐなよ
- 44 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 22:52:39.15 ID:R//Q6DgO.net]
- 「状況によって『およそ 3』で計算すればよい」という指導は存在する。
小学生は有効精度の概念を知らんから どういう場合にどの程度の概算でよいのか自分で判断できんのよ。 「およそ 3」って言ったら 3 で計算するのを正解だと思っちゃうやつが少なからず出てきてしまう。 現実的な精度との兼ね合いで言ったら 3.14 で教えておくのがおおよそ手ごろなんやろね。
- 45 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 23:10:11 ID:+A5PZLb9.net]
- 喜べお前ら
こいつを追加するだけでpi_v<int>が使えるようになるぞ template<>struct std::is_floating_point<int>:std::true_type{};
- 46 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 23:16:32.04 ID:NFUA2B25.net]
- >>44
> 「状況によって『およそ 3』で計算すればよい」という指導は存在する。 指導が何を指してるのか知らんけどおよそなんてどこから出てきたんだよw 円周率3の話は 小学校学習指導要領 (平成元年3月)の下記の文言が独り歩きしたものだぞ 円周率としては3.14を用いるが、目的に応じて3を用いて処理できるよう配慮する必要がある。 https://www.mext.go.jp/a_menu/shotou/old-cs/1322329.htm
- 47 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 00:51:59.98 ID:B91+2VD/.net]
- 文脈的にたいして変わらない気もするけど
そんな違うものか?
- 48 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 03:44:03.45 ID:GgR0k3G6.net]
- >>46
3.14だっておよそでしかない およそ3で全然問題ないと思うね。 それより 1.6+2.4 = 4.0 と答えたら減点するアホ文系教師を文科省はなんで放置するのかね? 掛ける順番とかな。工数とかシランだろな多分 単位とかでもあほ文系小学校教師が理解してるとは到底思えない
- 49 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 08:47:30.67 ID:+WDep4l2.net]
- >>48
小学校の先生が悪いんじゃない 小学校の先生を指導監督する文部省の官僚に問題があるとおもいますよ、ハノンQZ
- 50 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 10:32:47.71 ID:1NqFVDwl.net]
- >>46
そこだけ見て「ゆとりも3.14で教わってる」って誤解されてるけど 一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ 最初に「円周率とは」で一度3.14と教えた後の計算問題は全部3でやるしかなかった
- 51 名前:デフォルトの名無しさん [2022/04/17(日) 10:40:02.85 ID:bm11jv7N.net]
- 算数教育を破壊された影響は凄まじいな
マスゴミの煽動記事みて何人に1人の奇病なのかもわからないバカばっかりになっちまった
- 52 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:00:54.26 ID:xNW3vj+F.net]
- 現実には3で十分なわけよ
わずか数%の違いしかなく困らない どうしても必要なら3.1でいい これならわずか1%強の違いしかない 逆に工業で必要とする時は3.14でも足りないこともある つまり3.14にこだわっているやつこそバカであると断言できる
- 53 名前:デフォルトの名無しさん [2022/04/17(日) 11:22:48.55 ID:RqkDCOAY.net]
- コンピュータの場合、累積する誤差を
- 54 名前:少なくするよう定数を求めるのが最も重要なわけで。
統計的に3.17がπとして相応しいことがわかっています。 [] - [ここ壊れてます]
- 55 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:27:42.82 ID:9gjwfasM.net]
- そら分かる子はいいよ
ほっといても算数なんてすぐ分かるやろ 数というもんの抽象性も理解できるし かける順番にこだわることのアホさも自分で分かるやろ でも ひとクラス何十人のうちの算数分からん子 知能指数もボーダーの子 発達障害の子 その子らになんとかして分かってもらおうとすると あの手この手でいろいろやってみるんやろな
- 56 名前:デフォルトの名無しさん [2022/04/17(日) 11:29:26.25 ID:RqkDCOAY.net]
- 共産主義じゃないんだから馬鹿な子は馬鹿な大人に育てば良い。
みんな違ってみんな良い。
- 57 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:30:31.73 ID:n4FXzdR7.net]
- >>50
> 一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ だからそれもフェイクだっつーのw (1)内容の「A数と計算」の(3)及び(4)については、乗数や除数が3位数である場合の指導は、2位数までの考え方を基にして児童に考え出させるようにするとともに、複雑な計算を避けるものとする。 だからこれに従うと円周率は3.1となるはず これと上に書いた「目的に応じて3で計算」を(多分わざと混ぜて)某学習塾が 『ウッソー!?円の面積を求める公式 半径×半径×3!?』 『円周率を3.14ではなく、「およそ3」として円の求積計算を行います』 って広告打ったのが元凶と言われてる
- 58 名前:デフォルトの名無しさん [2022/04/17(日) 11:34:11 ID:RqkDCOAY.net]
- 円周率なんて生きてく上で必要ない。
- 59 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:50:12.40 ID:0uPuuShy.net]
- なんのスレやねん
- 60 名前:デフォルトの名無しさん [2022/04/17(日) 14:31:08.08 ID:gu8d6tY+.net]
- お礼と報告が大変遅くなりましたがID:aidqFE7S でございます。
この度は有用なアドヴァイス大変ありがたく承っております。 >>25 mainで走らせている実処理の前に、インライン変数のコンストラクタが起動しているので、リンカ?の際に記述と同時に外部結合?させているのではないかとしか推察できませんでした…… 質問が理解できていないかもしれないのですが東方初学者ですので何卒。 >>27 受け渡しを省略したいという助平心でございます…… この記述で動作確認しました。 ありがとうございます! テンプレートは食わず嫌いでしたが、使ってみると奥深いものですね。 関数定義にstatic T& Instance();と記述したらちゃんと内部結合?になっていました。凄い。 本物のグローバル変数とはdllを跨いでも使える変数なのでしょうか? dellについて少し調べたのですがよくわかりませんでした。 クラス内部の静的変数はプログラムのどこからでも一位だと思っていましたが、外部結合のstaticは役割が違うのかしら。 もうちょっと調べてみます。 ありがとうござまいした。
- 61 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 14:39:47.64 ID:smuc31S1.net]
- >>59
使えるよ、シンボルが見えるなら。 でも疎結合の方が絶対に良いので使わんほうがいいよ
- 62 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:27:41 ID:98II7f1E.net]
- 試したことないけどあれって全く関係ないdllからアドレス指定して値書き換えたり出来るの?
- 63 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:35:49.78 ID:smuc31S1.net]
- リンクできてれば大丈夫よ
マネージドなやつが混ざってたらやらん方がええかもね
- 64 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 16:23:54 ID:wFJvf5tq.net]
- このスレ永久に同じ奴の自演でループしてるな
いつも同じ間違いで止まってるし
- 65 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 00:21:25.50 ID:6Qt778/v.net]
- msvcのstd::lerp妙に遅かったから実装見たらめっちゃ厳重に引数チェックしてた
秒間何億回も呼び出す用途想定してないのか実装がまずいのか…とりあえず自分で書き直したわ
- 66 名前:デフォルトの名無しさん [2022/04/18(月) 07:14:50 ID:t3NwdXGg.net]
- デバッグビルド?
- 67 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 07:52:49.52 ID:wKhqv1yX.net]
- 引数が有限でない場合の処理が入ってるからだろ
そもそもそんなものを使おうとする方がどうかしてる
- 68 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 08:47:21.12 ID:UwAS9GUd.net]
- どんなチェックするとそんな負担になるの?
- 69 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:07:36 ID:Mq4dF/46.net]
- 場合分けはしているが、仕様に対して過不足ない実装だと思う。
https://github.com/microsoft/STL/blob/472161105d596192194d4715ccad307c6c163b4a/stl/inc/cmath#L1234-L1326
- 70 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:18:05.41 ID:Dpn9nQkn.net]
- >>68
明らかに無駄だな 無チェックな関数を提供すべき チェック不要な自明な使い方で速く動くことがあるべき姿 もし必要ならば自分でチェックすれば良いしチェック用関数を提供してもよい
- 71 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:44:52.69 ID:Mq4dF/46.net]
- >>69
どれが (言語仕様上) 必要ない部分なのか具体的に示して。 俺には見つけられない。 それとも言語仕様が過剰であるという意味?
- 72 名前:デフォルトの名無しさん [2022/04/18(月) 09:53:11 ID:t3NwdXGg.net]
- 配列の範囲チェックと似たような話だろ
- 73 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:56:20 ID:OY9HJtti.net]
- 一般的に渡ってきた引数に対してチェックをせず処理する関数と厳重にチェックしてから処理する関数の二つを提供すればいいんじゃない?
もちろん後者はチェックしてから前者を呼び出すことになる チェック不要が自明な時や何度も呼び出す時は前者で十分
- 74 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 10:05:07 ID:s/nYZOWf.net]
- しかしニッチな機能だね
使うときは使うんだろうけど、これをあえて標準で用意するのは不思議
- 75 名前:デフォルトの名無しさん [2022/04/18(月) 10:06:44 ID:t3NwdXGg.net]
- スクロールバーやプログレスバーで使いそう
過去にそのあたりのコード書いた当時あったらなって
- 76 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 10:30:18.10 ID:Mq4dF/46.net]
- >>72
一般論としてはそうだが、論点はそこじゃない。 MSVC の std::lerp は定義域のチェックをやっていない。 なので >>69 の言う「チェック」は引数の妥当性のチェックのことではない。
- 77 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 11:30:20.45 ID:wKhqv1yX.net]
- >>73
たいていの用途で必要なのは const auto _Candidate = _ArgA + _ArgT * (_ArgB - _ArgA); だけだからなぁ 誰がなんのためにこれを入れようと思ったのかよくわからんね
- 78 名前:デフォルトの名無しさん [2022/04/18(月) 12:37:29.31 ID:s8zWy/Nc.net]
- using L=numeric_limits<double>;
a=L::max();b=L::lowest(); この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
- 79 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 16:42:06.25 ID:6Qt778/v.net]
- >>76
その式の形だとFMA命令に最適化されて良さそうだな
- 80 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 17:19:17.33 ID:pd6PCcNf.net]
- そもそも何億回も呼び出すなら<math>のfma(...)使うんじゃねえの
<cmath>はどんな引数つっこまれても何とか対処しなきゃならんのが絶対条件
- 81 名前:デフォルトの名無しさん [2022/04/18(月) 19:27:11.79 ID:DmcgzGUS.net]
- using L=numeric_limits<double>;
a=L::max();b=L::lowest(); この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
- 82 名前:デフォルトの名無しさん [2022/04/18(月) 20:05:50.33 ID:t3NwdXGg.net]
- >>79
sqrt(-1.0)でcomplex返さにゃならんの?
- 83 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 04:23:27 ID:M6r3Rc52.net]
- nanだのinfだの>>81だのをグチャグチャとチェックしたがる奴は無能
最初からそういうのが発生しないように計算するべき
- 84 名前:デフォルトの名無しさん [2022/04/19(火) 06:18:55.90 ID:0L/+n52g.net]
- ゼロ除算とかね
- 85 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 14:44:51.44 ID:0UVfIqO/.net]
- libc遅いだの愚痴りながら低レイヤーのコード書いてる時が正直一番楽しい
- 86 名前:デフォルトの名無しさん [2022/04/19(火) 14:50:47.69 ID:0L/+n52g.net]
- 人によるけどね
俺もマシン寄りのところが好き
- 87 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 23:13:42.68 ID:fQcWHs5l.net]
- MC++Dが20年前に発売されたってすげーな
アンドレイって天才だろ
- 88 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 19:24:03.82 ID:q+GeEjNV.net]
- 移住して快適な掲示板
NEXT2ch 3ch 45ch 明和水産 などへ
- 89 名前:デフォルトの名無しさん [2022/04/20(水) 20:22:28.34 ID:Cwlkz3kl.net]
- 二度と帰ってくるなよ
- 90 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 21:01:40.29 ID:q+GeEjNV.net]
- 居座るなら二度と文句言うなよ
- 91 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 22:15:36.38 ID:4qIYThBV.net]
- >>89
早速帰ってきてて草
- 92 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 08:12:05.34 ID:lT6JRJu8.net]
- 今どき戻り値intでエラーコードとか使うなよCの書き方じゃねぇかとか思ってた
だけどC++17のvariantでエラーコード返したり、optional使ってエラー表現してるコードを見てちょっと感心した しかしとはいえこういうやり方と例外ぶん投げるやり方ってどっちがいいんだろう?ググっても割りと論争あってよくわからんかった
- 93 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 08:41:18.15 ID:uyGzUV2B.net]
- >>91
制御フローを変更する必要がある場合は例外、それ以外(エラーもフローの一部の時)はoptionalでいいんじゃない? 例外は性能ペナルティーあるし、あんまり使うものじゃないと思うわ。 例えばメモリ確保失敗とかはプログラムの続行が難しいから、安全に終了するメモリ異常時の終了フローに移行できるよう例外を使うといいかと。
- 94 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:00:35.99 ID:9qc6sZDy.net]
- 一部で悪名高い例外はマルチスレッドでこそ重宝すると思うんだが
- 95 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:09:09 ID:3fppYdMF.net]
- 例外はやばいエラーと普通のエラーを分けて欲しいわ
後者はあんまり遠くへ飛ばんでほしい
- 96 名前:デフォルトの名無しさん [2022/04/21(木) 09:18:47.88 ID:TFObbQ1T.net]
- 異常系は例外、準正常系はエラー
という方針がええな
- 97 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:50:55 ID:uYH/mfeQ.net]
- ここだけの話ちゃんとした例外処理書かれたコード読んだ事がない
- 98 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:09:48 ID:Ex423fK8.net]
- 例外って、移行の処理を全く出来なくね
try{ a(); b(); c(); } catch(...) { } a()がコケても、何がしかの条件をかえてb()いこうを実行したいときなんて不便 try tryなんてやりだしたら、各関数の戻り値をifで判断しているのと同じだし
- 99 名前:デフォルトの名無しさん [2022/04/21(木) 11:15:18 ID:Nb12Wot+.net]
- 言い出したらキリないからだろ
a()がコケたあとC()から再開とか無数にあるから try { a(); b(); c(); } catch(std::exception& e) { if(dynamic_cast<f*>(&e)) { if(dynamic_cast<g*>(&e)) { b(); } c(); } }
- 100 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:17:35 ID:9+GFB0OX.net]
- 例外処理でどこまでカバーするかってのは初期には色々と検討されてる。
でも結局のところ「あきらめて終わる」「条件を変えてやり直しする」が圧倒的多数で その他は言語機能としてサポートする必要ないレベルのレアケースだと判断された。 >>97 そういう場合は諦めて try をネストしたり連鎖したりしてなんとかしろってことだ。 少なくとも言語仕様をより複雑にするほどではない。
|

|