1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net] ※前スレ C++相談室 part153 https://mevius.5ch.net/test/read.cgi/tech/1602339500/ テンプレここまで
562 名前:R思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!! だから!それ以上この話はやめろぉおおおお!!! [] [ここ壊れてます]
563 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:21:36.41 ID:rZdEmaWa.net] >>545 馬鹿でも扱えるくらい綺麗なコードが天才のコードだと思う C++は表現豊かな言語だから...他の言語も触ると、綺麗な記述方法を学ぶ良い機会になるよ
564 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:56:25.58 ID:58EQLFGq.net] >>552 が扱えるかどうかが天才か否かの基準か!
565 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:01:56.11 ID:S9Y30hRK.net] 綺麗かどうかじゃない 何を実現したのかだ 綺麗に書くのはエチケットだが一番大事なことではない
566 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:11:21.64 ID:f5ipo2xA.net] >>553 銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する
567 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:21:29.14 ID:58EQLFGq.net] 行政が法律に基づき行うなら問題無い 人が作った法律なら人が改正することができる
568 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:22:17.24 ID:S9Y30hRK.net] スレ違い板違い失せろ
569 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:28:25.66 ID:58EQLFGq.net] >>557 は >>555 に対するレス
570 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:30:29.13 ID:f5ipo2xA.net] 自作自演?
571 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:36:26.06 ID:oR/8CbQ7.net] やらかしちゃいましたねー 人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました こういうウッカリ屋はプログラミングでも不具合を引き起こします 馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう
572 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:38:50.88 ID:oR/8CbQ7.net] >>560 他にもテストの自動化、バージョン管理ツールの導入等もして不具合が流出しない仕組みを揃えておきましょう 以上
573 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:54:20.22 ID:bwIKlxQ8.net] std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する にはUTF-8での文字の境界を正しく認識しないと駄目ですよね? それは一般的にはどう処理するものなのでしょうか。 UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、 さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。
574 名前:はちみつ餃子 mailto:sage [2021/02/06(土) 17:05:10.96 ID:N9CbrPsc.net] >>562 コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。 高度なものになると ICU などのライブラリを使う。 書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから よほどの根性がないと自分ではどうにもならないと思う。
575 名前:蟻人間 mailto:sage [2021/02/06(土) 17:07:58.83 ID:gG6zzvvp.net] >>562 Windowsだったら #include <windows.h> MultiByteToWideChar(CP_UTF8, 0, ...); MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...); WideCharToMultiByte(CP_UTF8, 0, ...); IsTextUnicode(...); などが使えると思われます。
576 名前:デフォルトの名無しさん [2021/02/06(土) 17:41:00.54 ID:GfZyzG1j.net] スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。 きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。 ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。 事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。
577 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:44:16.27 ID:+KPQZs33.net] https://youtu.be/wN0x9eZLix4
578 名前:蟻人間 mailto:sage [2021/02/06(土) 17:50:18.63 ID:gG6zzvvp.net] https://ja.wikipedia.org/wiki/UTF-8 >任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。
579 名前:蟻人間 mailto:sage [2021/02/06(土) 17:55:50.63 ID:gG6zzvvp.net] つまり、 uint8_t utf8_byte = ...; if (!(utf8_byte & 0x80)) { // 1バイト文字。 } else if ((utf8_byte & 0xC0) == 0xC0) { // マルチバイト文字の先頭バイト。 } else { // マルチバイト文字の非先頭バイト。 }
580 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:11:29.66 ID:6eQmSTNr.net] プログラミングのお題スレ Part18 https://mevius.5ch.net/test/read.cgi/tech/1594702426/453 UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています こういう規則か?
581 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:16:40.60 ID:S9Y30hRK.net] >>561 殺虫剤のパラドックスって知ってる?
582 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 20:33:00.74 ID:zn5WrP4C.net] >>570 恥の上塗り?w ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。 https://note.com/akiyama924/n/nc006015de2d2
583 名前:デフォルトの名無しさん [2021/02/06(土) 21:07:07.97 ID:GfZyzG1j.net] テストロボットだぞ、ガシャーン!ガシャーン!
584 名前:デフォルトの名無しさん [2021/02/06(土) 21:08:55.93 ID:GfZyzG1j.net] 片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。 なんでWindowsにこだわるんだろ。
585 名前:蟻人間 mailto:sage [2021/02/06(土) 22:54:31.87 ID:gG6zzvvp.net] >>573 JavaScriptで動くものはすでにある。 https://katahiromz.github.io/xword.js/ あるが、ビジネスとして展開する能力がない。
586 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:50:48.27 ID:58EQLFGq.net] クレブナー基底で解くやつ!
587 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:07:42.85 ID:HYoiJUgB.net] >>571 質問に答えてねw
588 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:47:27.09 ID:jX/y7Db/.net] >>576 ん? どの質問? >>570 ならリンク先読めばいいだけだろ 恥ずかしくて読めないのかもしれないけどw
589 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:26:36.56 ID:HYoiJUgB.net] >>576 俺の質問にアンカーつけといてどの質問はねえだろ 恥ずかしくてとぼけてんのおまえさんだろ
590 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:29:49.52 ID:p49/UnNX.net] テストはやらないよりもやったほうがはるかに良い 前の版通ったテストが最新版でも通るという品質は担保される 殺虫剤のパラドックスよりも恐れなければならないのは いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方 ※ 個人の感想です
591 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:49:47.79 ID:m5BD34IK.net] >>578 別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ
592 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:57:32.70 ID:HYoiJUgB.net] >>580 おまえさん、こう言ったんだぜ > 不具合が流出しない仕組みを揃えておきましょう 流出しなくなんかならねえ 不具合はポカミスばかりとは限らない おまえさんのような浅はかな思想で突っ走った先に 碌でもない結末が待っていることだってある 揃えられるものなら揃えてみな 自分ができねえことを他人に言うな
593 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:11:28.01 ID:p49/UnNX.net] 人は思い込みを反証することで生
594 名前:きていける だが完璧に反証できないこともある ユニットテストはそのかけがえのないものを教えてくれた [] [ここ壊れてます]
595 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:41:41.73 ID:m5BD34IK.net] >>581 え?それ俺じゃないけど テストやればバグが無いといえるわけじゃないから安心するなってだけで、テストするなって話じゃないよね 主旨は同じだよね 何が気に入らないの?
596 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:00:05.54 ID:HYoiJUgB.net] ああ、俺じゃないで逃げるのか 情けねえやつだな
597 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:07:20.85 ID:jX/y7Db/.net] >>578 アンカーつけてると言うなら > >>570 ならリンク先読めばいいだけだろ って書いてあるだろ よほどアホでもない限りそんなアホなこと言うわけ無いと思ったからどれ? って聞いたんだけど、想像以上のアホだったってことかな?w
598 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:10:29.25 ID:jX/y7Db/.net] >>581 不具合はなくせないから仕組みも努力もいらんと言うならそれでいいんじゃね? お・ま・え・ん・と・ろ・こ・で・は w
599 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:13:42.72 ID:2AGAGJ05.net] マスクも手洗いもコロナを100%防げるわけじゃないから マスク付ける必要も手を洗う必要もないね
600 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:20:21.65 ID:HYoiJUgB.net] テストツールいらねえなんて言ってねえぜ テストツール万能論はアホの考えだと言っている
601 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:21:25.49 ID:HYoiJUgB.net] で、身に覚えのあるやつが返事してるから ニヤニヤ笑ってるのさ
602 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:48:37.66 ID:2AGAGJ05.net] 「テストツール万能論」を主張したレスなんて一つも見えないんだけど 存在しないものを見てニヤニヤしてる変態こわい
603 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:56:59.83 ID:HYoiJUgB.net] それを>>587 がぬかすとは笑止な
604 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:11:45.24 ID:0QEz1MW7.net] 構い過ぎじゃね?
605 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:52:54.07 ID:jX/y7Db/.net] >>591 まさかと思うけど>>587 がマジで言ってるとか思ってないよね?w
606 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:03:05.54 ID:2AGAGJ05.net] ああ・・・そういうことね・・・すまん触るべきじゃなかった
607 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:47:28.22 ID:p49/UnNX.net] すまんで済んだらユニットテストは要らんわ!
608 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:09:34.56 ID:qbLU6RFF.net] 野菜食えで馬鹿みたいにブチギレるホリエと一緒やな
609 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:05:54.73 ID:HYoiJUgB.net] >>593 奴は「必要ないね」とぬかしたんだ 別に武漢熱に話をすり替えようとすり替えまいとそこは関係ない
610 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:41:29.20 ID:yi1XmM9H.net] >>597 文章を字面通りにしか解釈できない人?
611 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:31:48.90 ID:jcLu/xd9.net] vectorを参照渡しするときの方法について教えてくください class sansyo { private: std::vector<short> _stdSansyo; public: void setSansyo(std::vector<short>& sansyo); } ;void sansyo::setSansyo(std::vector<short>& sansyo) { _stdSansyo = sansyo; _stdSansyo[5] = 500; } int main() { std::vector<short> moto; sansyo cSansyo; for (int i = 0; i < 10; i++) { short tmp = i * 2; moto.push_back(tmp); } cSansyo.setSansyo(moto);//ここで参照渡しのはず for (int i = 0; i < 10; i++) { std::cout << "値=" << moto[i] << "\n"; //値が変わっていない } } こんなふうに、参照渡しにしてみたのですがどうも参照渡しになっていないでそのまま新しいvectorが作られちゃったぽいのですが これだとメモリを倍使っちゃってるし、時間も掛かってますよね どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう
612 名前:蟻人間 mailto:sage [2021/02/07(日) 16:37:08.22 ID:sfdJNFTq.net] >>599 右辺値参照かstd::swap
613 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:13:26.18 ID:8CWTHaUD.net] >>600 サンプル貼ってよ
614 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:21:04.63 ID:jcLu/xd9.net] std::swapも右辺値参照も全然上手く行きそうになかっのたで 宣言をポインタにして private: std::vector<short> *_stdSansyo; void sansyo::setSansyo(std::vector<short>& sansyo) { _stdSansyo = &sansyo; sansyo[6] = 100; _stdSansyo->data()[5] = 50; } 関数をこんなふうに書き換えたら、ちゃんと参照だけで動いたのでもういいや けど右辺値参照とstd::swapの例も出してくれたらこれから色々いたスカリマス
615 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:24:59.07 ID:8CWTHaUD.net] >>600 ほれほれ 貼れんのか
616 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:28:56.01 ID:yi1XmM9H.net] >>599 参照渡し自体はできてるはず。 ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。
617 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:29:10.92 ID:jX/y7Db/.net] >>598 もうそう言うことにしないと自我が保てないんだろw
618 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:59:39.88 ID:p49/UnNX.net] sansyo::_stdSanshoをどうしても参照にしたいならこうするしか、 class sansho { private: std::vector<short> _stdSansyo; public: sansho(std::vector<short>& src) : _stdSansyo(src) { } void setSansyo(std::vector<short>& sansyo); }; void sansyo::setSansyo(std::vector<short>& sansyo) { _stdSansyo[5] = 500; } int main() { std::vector<short> moto; sansyo cSansyo(moto); //ここで参照渡し for (int i = 0; i < 10; i++) { short tmp = i * 2; moto.push_back(tmp); } cSansyo.setSansyo(moto); // moto[5]に500が入りまくり for (int i = 0; i < 10; i++) { std::cout << "値=" << moto[i] << "\n"; //値が変わった!(予定 } };
619 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:00:52.99 ID:HYoiJUgB.net] >>598 だったら何だとぬかす気だ? > 存在しないものを見てニヤニヤしてる変態こわい > 文章を字面通りにしか解釈できない人? 要するに話になんない奴ってことだろ 言ったことにも裏の意味にもコメントされたくない じゃあ相手しねえでやるから黙ってろゴミ
620 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:02:35.24 ID:p49/UnNX.net] 訂正orz 誤: private: std::vector<short> _stdSansyo; 正: private: std::vector<short>& _stdSansyo; もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ! という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして ポインタを持つようにすべき
621 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:10:05.07 ID:p49/UnNX.net] ちゅかもっと大きな一般原則としてつぎのどっちかにすべき (1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない (2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる ※ 個人の感想です つまり出題が悪い。出し直し
622 名前:はちみつ餃子 mailto:sage [2021/02/07(日) 18:10:05.98 ID:hHDgzHUe.net] >>602 元の考え方を変えずに動作させるにはその方法は十分に妥当だと思うよ。 ただ、もっと複雑なプログラムになったときにうっかりデータよりポインタのほうが 長生きすることになっても発見しづらいデザインになっている。 可能なら全体のデザインを見直すべきという話で、 いっそ所有権を渡してしまったほうが間違いにくいかもねという意味で右辺値参照や swap の話題が出ているので、 >>599 をベースにして右辺値参照や swap を使う例に書き換えるのは難しい。 別物になってしまう。
623 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:11:12.01 ID:yi1XmM9H.net] >>607 自分以外の複数の人を同一人物だと思っちゃう人?
624 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:14:03.86 ID:p49/UnNX.net] >>611 ネットの総意とか言い出しちゃう人?
625 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:16:20.19 ID:p49/UnNX.net] 検証不能な事物を錦の御旗にするような人間が ソフトウェアのテスト推しなのは 大いなる矛盾である氏ね
626 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:18:25.00 ID:HYoiJUgB.net] >>611 あの流れで > 文章を字面通りにしか解釈できない人? なんてぬかすやつは複数ID自演厨と見なされて当然だ 疑われたくなければ口の利き方に気をつけな 疑いは晴れてない この後の発言にも気をつけるんだな
627 名前:デフォルトの名無しさん [2021/02/07(日) 18:24:44.17 ID:4v/nAOdw.net] >>566 なにこれ
628 名前:デフォルトの名無しさん [2021/02/07(日) 18:29:05.24 ID:U/6f7Qk0.net] 参照をフィールドに保持するのは、一部のパーサーくらいでは? しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。
629 名前:デフォルトの名無しさん [2021/02/07(日) 18:31:34.10 ID:U/6f7Qk0.net] むかし5chで誰かが、プログラムを書くときは必ずテストしてるはずなんだって言ってましたが。 それを単体テストとして書いておけばずっと使えて便利だよと。 その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。
630 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:06:50.71 ID:n+epGkV9.net] >>616 想像力が足りなすぎ >>617 想像力が豊かすぎ
631 名前:デフォルトの名無しさん [2021/02/07(日) 20:53:42.20 ID:U/6f7Qk0.net] バッドエンディングですね。
632 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:03:56.50 ID:ZOvCZ0cx.net] グローバル変数使うなとは言わないけどコメントもないのはキツい grep掛けて検索しても訳分からん ポインタで飛び火してるときなんてもう…
633 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 22:09:55.11 ID:IiZq+u+t.net] 演算子オーバーロードの厄介さはキーワード検索で拾いにくいこと。 反復子もそうだが。ま、言い出したらきりないが。
634 名前:仮トリップ mailto:sage [2021/02/07(日) 22:57:26.65 ID:HI2f2oIL.net] >>561 を書いたのは私なんだけどなぁ... 面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ
635 名前:仮トリップ mailto:sage [2021/02/07(日) 23:02:22.83 ID:HI2f2oIL.net] ちなみに、>>561 以降は何も述べてない。 私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。 殺虫剤のパラドックス?それがどうした? 私はテストコードを書いて不具合を激的に抑えているが? 殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。
636 名前:蟻人間 mailto:sage [2021/02/07(日) 23:09:32.25 ID:sfdJNFTq.net] >>622-623 自我の芽生え、おめでとう! では、かえるの歌を歌います。 【...JASRAC権利関係の為、自主検閲...】 ♪パパーン (全員でクラッカーを鳴らす)
637 名前:デフォルトの名無しさん [2021/02/07(日) 23:20:12.91 ID:IiZq+u+t.net] 殺虫剤のパラドックスなんてものは存在しない。 ただの退行テスト不足だ。
638 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:24:22.18 ID:PnrMZIJR.net] 殺虫剤のパラドックスって言いたかっただけやろw そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前 摘出できたら単なる修正漏れだしw JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う
639 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:42:41.05 ID:HwnOmmQF.net] 蒸し返さなくていいから……
640 名前:デフォルトの名無しさん [2021/02/08(月) 07:03:25.17 ID:nKLqWVxG.net] 虫返さないですと!?
641 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:05:43.31 ID:NGjwD54G.net] >>610 そもそも>>600 は的外れだと思うんだが メンバの方を参照かポインタで持つ、で終わりだろ 3行目以降完全に蛇足
642 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:20:50.36 ID:VJ9lplXi.net] >>627 ,628 そういうのは無視しろ
643 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:00:56.57 ID:zDqHH6LK.net] スルーの法則
644 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:43:41.70 ID:DuebuhTc.net] >>602 >>599 誰か 永続的に使用するなら shared_ptr
645 名前:で受け取れ。今のままだとsetSansyoを呼び出す側が所有権手放していいのかわからなくて困るだろ。 て指摘した? 今や生ポインタなんて性能優先のときに内部的に使用するもんで、インターフェイスで使用するもんじゃない。 あと、参照も関数内だけで使用する引数に使うもんで、永続的に所有する引数に使うもんじゃない。 [] [ここ壊れてます]
646 名前:デフォルトの名無しさん [2021/02/08(月) 14:04:18.90 ID:VJ9lplXi.net] コンストラクタでなら参照型のメンバ変数に保存できる。ほとんどの人はやらないけど。
647 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:54:29.18 ID:DuebuhTc.net] >>633 できるのと実際に実装するのは別の話だわな。 所有権の無いオブジェクトの参照を保存するなんて狂気の沙汰だ。
648 名前:デフォルトの名無しさん [2021/02/08(月) 19:12:34.60 ID:nKLqWVxG.net] アイキャンユーキャン。
649 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:51:28.21 ID:U8Md53kE.net] >>633 クラス間に親子関係のようなものがあって、子の生存期間が常に親の生存期間内にあるような場合は、親への参照をメンバ変数とすることは普通にあると思うけど。例えば>>484 とか
650 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:15:43.14 ID:NGjwD54G.net] shared_ptr(またはスマポ)至上主義の変なやつ以前から居るんだよな 相手にするな
651 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:37:27.20 ID:UsSsiWeS.net] ナマポ使ったほうが良い場面なんて皆無でしょう
652 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:48:31.75 ID:2GJiXyxS.net] 出たwナマポ完全否定奴w
653 名前:デフォルトの名無しさん [2021/02/08(月) 21:58:57.06 ID:VJ9lplXi.net] 参照型のメンバ変数は参照オブジェクトの生存期間を保証できないからweak_ptrで保存しておいて使う時だけshared_ptrを取得するのがC++的な解決なんじゃないの。
654 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:08:09.48 ID:FKp3giDs.net] スマポにしたら所有権の問題を考えなくてよい というわけではないからスマポ使えというのは妥当ではない 逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避
655 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:11:14.29 ID:NgGwlfwa.net] コピー禁止のshared_ptr欲しい
656 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:25:23.27 ID:bp+4mh0R.net] すべてスマポで書くスタイルも悪くないと思うけど、メイヤーズ神もツリー構造で子が親のポインタを持つときはナマポで十分と書いている
657 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:27:43.60 ID:34Jom8HU.net] 木のノードは子へのポインタじゃなくて子のノードIDを持て😡
658 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:48:15.38 ID:NgGwlfwa.net] 自分よりポインタの方が寿命が長いことが保証されているなら確かに生ポで問題ないが それが成り立つ状況ってなかなかないよな。
659 名前:デフォルトの名無しさん [2021/02/08(月) 23:02:19.81 ID:VJ9lplXi.net] 参照先の実体がまだ生存しているかどうか知るにはweak_ptr::expired()を使うしかないのが現状でしょ。
660 名前:デフォルトの名無しさん [2021/02/08(月) 23:07:56.19 ID:nKLqWVxG.net] Chromiumはstd::unique_ptrを全面的に使ってるけど、ポインタを使う設計そのものが古いような気がする。
661 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:13:28.50 ID:BwguerZK.net] まあcコードを全く使わないってのならいいんでないの。 ただc++のポータビリティーは君が思ってるより低いけどね。
662 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:23:15.47 ID:cR8ppl+C.net] 露骨すぎるマウント取りたがりダッセーwww
663 名前:デフォルトの名無しさん [2021/02/09(火) 01:58:29.04 ID:qUmf+U4D.net] マウントじゃなくてポインタでは?
664 名前:デフォルトの名無しさん [2021/02/09(火) 02:46:23.52 ID:jPnyP+Vp.net] C++に特化したAPIなんてどこのOSでも提供されないから、結局、Cの配列と互換性のあるstd::vectorやstd::arrayを使わざるを得なくなる。
665 名前:デフォルトの名無しさん [2021/02/09(火) 04:01:45.22 ID:qUmf+U4D.net] >>644 木もコンテナで良いですよね。 所有権がハッキリしてて。
666 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:34:27.86 ID:nSJhwzEU.net] >>651 data()を必ず使う手合いか?
667 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:39:10.06 ID:s3p3GZ7R.net] 木は木全体を収める領域ごと一気に解放する場合もあるから別に
668 名前:デフォルトの名無しさん [2021/02/09(火) 17:49:12.66 ID:KrtnTLUi.net] >Cの配列と互換性のある doubt
669 名前:デフォルトの名無しさん [2021/02/09(火) 17:53:30.91 ID:LEWRJrN2.net] ダウトとデビューって似てるよね
670 名前:デフォルトの名無しさん [2021/02/09(火) 18:35:55.16 ID:qUmf+U4D.net] 親が子のポインタを所有する木は、親を消すとネストして子孫のデストラクタを呼ぶので、スタックが枯渇します。 したがって、子から順番に消さなくてはなりません。
671 名前:デフォルトの名無しさん [2021/02/09(火) 18:56:53.48 ID:qUmf+U4D.net] その様はまるで摩天楼がドミノ倒しのように連鎖倒壊するようでもあり、DOMINOというピザにもなっています・
672 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 19:07:16.84 ID:IPYpL0sA.net] なんと後味の悪い話
673 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 20:39:36.84 ID:zHOwdh/n.net] 意味が分からない
674 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:07:48.14 ID:Rh87rJZX.net] >>657 それで枯渇するようじゃ木の探索すらできない。
675 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:13:02.23 ID:5Ac7csWH.net] 探索はループでもできるんで、たとえば数万個の要素を持つツリーを子から消せというのは真理なのかも
676 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:27:40.55 ID:AojZLEiV.net] 消すのは独立して実行できるので別スレッドに送れば実質コスト0
677 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:38:09.75 ID:s3p3GZ7R.net] >>662 DFAとPDAではやれることの範囲の違いがちげう つかこの場合は安易にスマポとかコンテナを使うから破棄ごときにトラバースの手間がかかるんである
678 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:44:42.72 ID:5Ac7csWH.net] それもそうであるな
679 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:50:17.60 ID:s3p3GZ7R.net] ちゅか垂直探索なら木をメモリに持っておく必要が無い 水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が 兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに 親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、 子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、 ウィークポインタの出番でもない
680 名前:デフォルトの名無しさん [2021/02/10(水) 01:37:49.58 ID:XIZePh+h.net] 子から消さなかったばかりに。 2000人を乗せた航空機が洋上で消えた。 ってなるかも?
681 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:48:13.89 ID:ZYaksnCf.net] A380でさえ853席だが2000人なんてどうやって載せるんだろう
682 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:51:41.17 ID:2ozOIzIF.net] く、空中で衝突するとか…
683 名前:デフォルトの名無しさん [2021/02/10(水) 01:53:08.99 ID:XIZePh+h.net] インドでは屋根の上にも乗ります。
684 名前:デフォルトの名無しさん [2021/02/10(水) 01:55:11.55 ID:XIZePh+h.net] https://trafficnews.jp/post/80031 証拠写真みつけてきた。
685 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:55:17.84 ID:uF0JvJPV.net] GTA5のMOD作成者みたいな会話だな
686 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 02:01:19.54 ID:uF0JvJPV.net] >>653 昔はdata()がなかった。(遠い目)
687 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 06:40:17.61 ID:ZYaksnCf.net] アントノフの貨物室にすし詰めでどんくらい乗れるかな
688 名前:デフォルトの名無しさん [2021/02/10(水) 06:40:27.16 ID:XIZePh+h.net] 東京: TK 京都: KT 大阪: OSK 淡路: AWG
689 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 07:59:22.76 ID:FGGGEnfF.net] 航空機や原発みたいなクリティカルなシステムでは 全部固定長の配列で書いてあるんじゃないの
690 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 08:06:21.27 ID:uF0JvJPV.net] 釣れますか。 ヒープのほうが少し安全です。
691 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:25:11.13 ID:4XPmMtZj.net] >>671 どこが証拠やねん! せいぜり100人やないかヽ(`Д´)ノ
692 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 14:32:04.65 ID:TFzLuCg0.net] すみません、std::for_each を使っていて continue したくなりましたが、サポートしてないです よね? これって: 1. for_each は continue する必要がないような処理に限ってに使うべき。 2. ループの中で大きい if ブロックを作って空の処理にすればよい。 3. その他
693 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 15:13:45.18 ID:ZYaksnCf.net] returnすれば? for_each(begin(foo), end(foo), []{ if(bar) return; });
694 名前:デフォルトの名無しさん [2021/02/10(水) 16:06:00.49 ID:HSfvjOUE.net] return は continue ではなく break じゃないの? 質問者の2.大きなif分で実質何もしないでいいと思う
695 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:20:11.24 ID:ZYaksnCf.net] for_eachをbreakするにはthrowかlongjmpがいるぞ
696 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:35:39.62 ID:S47HOUGT.net] きったねぇジャンプだ
697 名前:デフォルトの名無しさん [2021/02/10(水) 16:51:31.94 ID:HSfvjOUE.net] あ、ラムダ式になってたのか
698 名前:はちみつ餃子 mailto:sage [2021/02/10(水) 17:51:08.81 ID:tNqysU9n.net] >>679 for 文で書いた方が短く書けそうだけど、 あえて for_each を使いたい理由が何かあったりするの?
699 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:41:41.17 ID:FGGGEnfF.net] Perlなら問題無くできる(continue→next、だが C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…
700 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:57.06 ID:teDb7k99.net] 何の一線よ
701 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 20:18:41.39 ID:ln/pLvjf.net] いやreturnでいいだろ… 許可しないってなんのことだよ
702 名前:デフォルトの名無しさん [2021/02/10(水) 21:21:18.68 ID:+e+FbMSY.net] vectorで一億件ほどで、飛ばしたいのが100〜1000件程度なんだろう
703 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:51:25.56 ID:QYfnOwKH.net] >>679 for_eachをrange based forに変更は出来ないの?
704 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:59:01.21 ID:ZYaksnCf.net] >>690 おまえのスキルのためにか?
705 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:17:23.69 ID:qtVJ0qYe.net] range based forなら普通にcontinueできるぞ
706 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:18:26.21 ID:ln/pLvjf.net] >>689 飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?
707 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 04:16:42.30 ID:nrDdTgaQ.net] early returnは正義
708 名前:デフォルトの名無しさん [2021/02/11(木) 11:22:44.35 ID:n0GRjtoR.net] >>685 テンプレのときとか
709 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:53:02.68 ID:Iq2aKjep.net] 679がなぜfor_eachを使うのかを無視するのは 他人の領分を侵すお節介だ for_eachの使い方をアドバイスできんやつは しゃしゃり出てくるな
710 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:00:13.22 ID:hRfccug1.net] よくよく話を聞いてみたらまるで異なる解決策が見つかるなんてよくあることじゃん。そんな経験ないの? 何をしたかったか確認するのは重要
711 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:15:41.21 ID:Iq2aKjep.net] 流れをよく読んでみろよ for_eachをロクに使ってないやつなのモロバレだろ 質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは 回答者の資格ねえんだよ
712 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:18:25.32 ID:Iq2aKjep.net] 自分が何か尋ねているときに 質問内容に付き合ってやれる懐のねえやつは うぜえだけだろが
713 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:23:57.31 ID:Iq2aKjep.net] 質問内容において自分より下なやつに教えを請いたいかよ
714 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:34:11.92 ID:hRfccug1.net] for_eachを使う場合の答えはとっくに出てるのに何言ってんの?
715 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:17:08.97 ID:15xoUz1R.net] 3のその他で答えただけ。
716 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:01:29.92 ID:veopzNW6.net] 他人の領分なんて侵してナンボ
717 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:03:18.37 ID:qccRsQET.net] >>702 はあ?returnではいけない理由は?
718 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:19:00.69 ID:a/CQbB/Z.net] >>679 はループしたいだけだろ std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし
719 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:23:31.36 ID:nDjPJyoP.net] >>704 returnで良いと思うよ。
720 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:50:06.93 ID:Iq2aKjep.net] >>701 680は俺だが何言ってんの?
721 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 21:58:36.08 ID:bviF/sLG.net] Visual Studio 2010(MSVC2010)で template<class T> void foo(T x) { printf("%d: %d\n", targetEntity, x); } という関数テンプレートが定義されているときに、 namespace bar { const int targetEntity = 1; } using bar::targetEntity; void baz() { foo(100); } はコンパイルが通るのに、 namespace bar { const int targetEntity = 1; } void baz() { using bar::targetEntity; foo(100); } だと error C2065: 'targetEntity': 定義されていない識別子です。 と言われるorz
722 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 22:06:56.76 ID:bviF/sLG.net] >>688 for_eachを勘違いいてたわサーセン、 確かにfor_each<bgn, end, Function>のFunction(*it)からならreturnするで良さげ
723 名前:デフォルトの名無しさん [2021/02/11(木) 23:28:48.49 ID:Ooe4jkn9.net] >>707 アンパンマンはキミだ。
724 名前:はちみつ餃子 mailto:sage [2021/02/12(金) 01:36:02.90 ID:2OOQ6m86.net] >>708 宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則 (クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど) なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。 逆にどういう理屈で前者が通るのかは気になる。
725 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:02:20.64 ID:45Tu3B4L.net] >>708 当たり前だね 最初の例ではtargetEntryをグローバル空間に導入しているからbaz()とfoo()の両方から見える 2番目の例ではtargetEntryをbaz()のブロック内に導入しているから、そこに包含されないfoo()のブロックからは見えない ただし、これはfoo()を関数原型と関数定義に分けて関数定義をbarよりも後方に置いた場合の話だ 原文のままでは>>711 が言うとおり通るわけがない
726 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:03:16.30 ID:45Tu3B4L.net] - barよりも後方 + usingよりも後方
727 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:01:12.63 ID:3x5iWh5q.net] 確かにideoneでもVS2019でも両方エラーになるのですだが、 1番目の例はVS2010ではビルドも通って動くもーん ソース: https://ideone.com/DC8fMv 実行結果(※ VS2010限定): 1: 100 続行するには何かキーを押してください . . .
728 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:04:11.00 ID:3x5iWh5q.net] ちな関数テンプレートfoo()の定義をusingよりも後方にしたら全てでビルドが通って動く まそりゃーそうならないとおかしいが
729 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:12:42.48 ID:45Tu3B4L.net] >>714 通ってねえじゃん 何が言いたいんだ?
730 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:17:08.75 ID:3x5iWh5q.net] >>716 > >>714 > 通ってねえじゃん > 何が言いたいんだ? ※ VS2010限定
731 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:24:49
] [ここ壊れてます]
732 名前:.77 ID:45Tu3B4L.net mailto: だから何? ill-formedなのがわかっても自分が正しいと強弁したいのか? [] [ここ壊れてます]
733 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:27:26.57 ID:3x5iWh5q.net] 全員の主張を再検証しただけでつよ? >原文のままでは>>711 が言うとおり通るわけがない (>>712 ) が覆されてご機嫌ななめ??
734 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:32:07.63 ID:45Tu3B4L.net] 覆った? おまえVS2010限定で逃げただろ ill-formedはill-formed これを覆せたら出直して来な
735 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:34:53.80 ID:45Tu3B4L.net] 俺も昔のバージョンのコンパイラは使うがバグ技は使わないし そういうことをする厨二病とは組みたくない
736 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:38:38.54 ID:3x5iWh5q.net] >おまえVS2010限定で逃げただろ VS2010ではビルドが通るというのが話の発端なので… 1番目の例がill-formedであろう点は同意
737 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:51:23.22 ID:45Tu3B4L.net] orzなんだろ 何が誰が悪いのかわかったら素直になれよ 居直る態度が気に入らねえ
738 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:12:22.74 ID:3x5iWh5q.net] 何が悪いのか、はともかく 誰が悪いのかとは一体… つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;; 個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、 例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる (template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然 再発防止のためには、C++規格のどこをどう読めば良いんじゃorz
739 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:57:55.62 ID:45Tu3B4L.net] >>719 は明らかに煽り口調だろうが 和解したいなら、あの態度を撤回しろ 俺は和解なんかできなくて構わんが
740 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:26:37.15 ID:1W1GlA05.net] 匿名掲示板で誰が何を言ったのどうのとみっともないぞデフォルトの名無しさんよ
741 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:29:35.12 ID:jxDcSv/l.net] どう見ても>>716 がイミフな言いがかりつけてるだけにしか見えんが… > 確かにideoneでもVS2019でも両方エラーになるのですだが、 > 1番目の例はVS2010ではビルドも通って動くもーん
742 名前:デフォルトの名無しさん [2021/02/12(金) 13:22:44.45 ID:x9NfpsA7.net] 匿名でも江副とかQZとか片山やはちみつが糞なのは伝わってくるω
743 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 18:24:14.30 ID:45Tu3B4L.net] 単発IDになりやがった どこまでも腐ってやがるな
744 名前:蟻人間 mailto:sage [2021/02/12(金) 19:12:56.39 ID:fTOQtm+W.net] どこでも動くように標準化しましょうねって話だよね。
745 名前:蟻人間 mailto:sage [2021/02/12(金) 19:29:19.43 ID:WC9JZZt5.net] G++とかclang++などの複数のコンパイラで警告最大にして自動ビルドすれば再発防止できると思われます。
746 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 19:37:54.63 ID:3abO7oQ0.net] 流れをぶった切って質問です。 あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、 ::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする ことって可能かしらん?
747 名前:蟻人間 mailto:sage [2021/02/12(金) 19:46:11.11 ID:WC9JZZt5.net] >>732 private dtor使え、だとよ。 https://stackoverflow.com/questions/631783/what-is-the-use-of-having-destructor-as-private
748 名前:蟻人間 mailto:sage [2021/02/12(金) 19:55:37.68 ID:fTOQtm+W.net] dtorはデストラクターの略ね。 死のトラクターじゃないよ。
749 名前:デフォルトの名無しさん [2021/02/13(土) 02:57:21.77 ID:ZCgeuP6g.net] 映画化決定。
750 名前: mailto:sage [2021/02/15(月) 00:20:32.87 ID:M7Hs01/T.net] >>728 私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥
751 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 12:30:59.56 ID:tZ1nblID.net] >>733 ありがとう。参考になりました。 流石にグローバルdtorの直接呼び出しを気にしている人は居なさそうですね。 通常の使い方じゃないから気にするな、が正解かしらん。
752 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:45:49.14 ID:zTH+X1Xm.net] 画像 https://genkibox.com/linepic/wp-content/uploads/2017/10/line0049.jpg
753 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:59:33.07 ID:zTH+X1Xm.net] つかprivate dtorって何の解決にもなって なくね? クラスFooのデストラがprivateな時点で Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは… あとp.get()->Delete()とされるのも恐ろしいすぐる………
754 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 19:15:28.82 ID:Pme6j5oX.net] >>739 そのあたりは回避策ある。 どのwebページに解説あったか覚えてないけど……
755 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 08:24:04.17 ID:Pn/OWNHb.net] operator <=>を定義しても ==と!=が使えるようにならないのは、なんで?
756 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 11:29:34.99 ID:u6Au0MiC.net] https://cpprefjp.github.io/lang/cpp20/consistent_comparison.html のoperator==節で仕様とその理由についても説明してあります
757 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:05:07.17 ID:8kTif7Fu.net] relops
758 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:07:48.78 ID:ZhVk2C4b.net] relops
759 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:14:57.71 ID:7xS0C1vs.net] なるほどわからん。弱順序って何よ?
760 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 13:36:33.88 ID:peDNmUYI.net] >>745 二項関係で、反射律、推移律、比較可能性を満たすもの
761 名前: mailto:sage [2021/02/17(水) 21:10:31.90 ID:n4obO1jB.net] >>746 擬順序とか半順序と呼ぶ本もありますね、 ただ、その「比較可能性を満たす」とはなんでしょうか?私の教科書では、擬順序には反射律・推移律だけしか要請されていなかったと記憶しているのですが?
762 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:46:57.44 ID:ZhVk2C4b.net] 普通に言葉通り任意の2つの元を比較できるということなのでは… 木構造で「親は子より大きい」という順序を定義しただけ (全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、 文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ では兄弟間の大小が定まらない、 みたいな
763 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:47:32.54 ID:ZhVk2C4b.net] のは半順序で、 整数みたいなやつが全順序
764 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:59:39.55 ID:ZhVk2C4b.net] なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、 反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ つまり全順序集合の集合と半順序集合の集合が区別できん 両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、
765 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:34:07.44 ID:48a8FzyN.net] a≦b または b≦aが成り立つ時、比較可能 弱順序ってしらなかったけど、半順序とは違うようだ 「半順序?弱順序?二項関係・順序関係まとめ」って記事
766 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 03:35:31.61 ID:sRdwF113.net] 束論やってるけど弱順序とか初めて聞いた… マ界用語?
767 名前:741 mailto:sage [2021/02/18(木) 06:50:20.77 ID:brZHVFLx.net] >>74
768 名前:2 まだ何とも言えないが thx! [] [ここ壊れてます]
769 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 10:08:01.17 ID:48a8FzyN.net] 弱順序は、半順序よりは制限強いが全順序より弱いもので、 ある種のソートアルゴリズムでは全順序よりは制限緩められるけど 半順序までは緩められない、ってのがあるみたいね
770 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 13:16:30.49 ID:9Yl3mCZH.net] >>752 束って何で勉強すればいいん?
771 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 14:43:05.98 ID:48a8FzyN.net] アルゴリズムとの関連はちょっとわからんけど 数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな もしくは順序集合の話として集合論の本
772 名前: mailto:sage [2021/02/19(金) 04:42:11.06 ID:3tFNJrqv.net] >>748 >普通に言葉通り任意の2つの元を比較できるということなのでは… いや、それは全順序ですよ ・擬順序 ・順序 これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います 擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、 順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序 だったかと
773 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:38:08.11 ID:mpGE+xsF.net] wikipediaの「推移関係」の項目より 半順序 - 反対称的な擬順序 擬順序 - 推移的であると同時に反射的 全擬順序 - 完全的な擬順序 同値関係 - 対称的な擬順序 厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合 全順序 - 推移的で反対称的な完全関係 全順序、半順序くらいしか知らんかった
774 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:51:11.65 ID:gWMDVcMR.net] OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか 推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス かつ反射的、AはAのサブクラス
775 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:55:11.79 ID:fAhRarpN.net] >>757 >いや、それは全順序ですよ は? その条件が共通なだけだろ
776 名前: mailto:sage [2021/02/19(金) 21:23:56.68 ID:3tFNJrqv.net] >>760 一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています
777 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:53.04 ID:gWMDVcMR.net] ブール代数 型システムで検索しても出てこないけど>>523 可補分配束の定義見てると確かにそんな気はしてくる インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える 要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす void *は何でも指せるという意味で最大元 まともな型システムなら(少なくとも)上記の擬順序以上は要求る 演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える 型チェック通らない全ての型を考えられるし、それが¬ 型述語で定義してればそのまま!演算子になる
778 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:14.25 ID:gWMDVcMR.net] 確証が持てなくてもどかしい…数学できる人ツッコミ待ち とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた
779 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:34.53 ID:hHLb88jw.net] ググってる時点で、というかそのことを隠しもしないニワカ
780 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:56:36.22 ID:gWMDVcMR.net] >>764 隠して5chなんかで偉ぶってどうすんのさ
781 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:01:35.27 ID:aORwmd7L.net] 質問ですがムーブコンストラクタを有する基底クラスの 派生クラスでムーブコンストラクタを 派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても 安全に書く方法って何かあるんでしたっけ
782 名前:デフォルトの名無しさん [2021/02/19(金) 22:03:03.40 ID:6z9jMlRH.net] 作ったクラスをmapにいれるときoperator<を書かなきゃいけないのがめんどい
783 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:08:24.37 ID:aORwmd7L.net] あとムーブコンストラクタを有するクラスを 詳細を隠ぺいする目的でインターフェースを設けたとき インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ アブストラクトファクトリイーを作るしか無い?
784 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:11:39.72 ID:aORwmd7L.net] この場合アブストラクトファクトリイーといっても、元のクラスFooに対して IFoo IFoo::move() { ... } が定義してあって IFoo x = (適当な生成手段) ののち、 IFoo y = x.move() でxが破壊されるやつ!
785 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:36:29.47 ID:F7SsNRLa.net] それインターフェースとして使えてないよ
786 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:40:16.16 ID:iK8Sr3o/.net] 領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって memcpy(b.data(), a.data(), n*sezeof(T)) で良いんですかね? UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか
787 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:38:00.62 ID:YJV0xwOV.net] >>771 ド素人かよ
788 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:42:23.87 ID:upzAgg50.net] >>771 領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな
789 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:11:48.90 ID:BRyl48dG.net] >>761 その「一番弱い」とか言ってるのは前順序だろ。 ククク... 前順序は順序四天王の中でも最弱... ウィキペディアにも書いてあるのに間違うとは面汚しよ...
790 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 11:17:36.76 ID:ZF+WEG2v.net] 半順序とかいう訳が悪い 英語のpartial orderの方が分かりやすい
791 名前: mailto:sage [2021/02/20(土) 11:27:39.73 ID:mkFIMg3t.net] >>774 本によって用語にブレがあるのは数学では常識でしょう?だから>>761 では定義もあわせて書いておきました
792 名前:デフォルトの名無しさん [2021/02/20(土) 11:30:33.89 ID:ec7b4JGn.net] あとは裁判で争うしかないでしょうね。 我々には判決が出せませんから。
793 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:52:10.16 ID:N5IkYQZo.net] >>771 前提条件として ・ T の型が trivially copyable である ・ vector の大きさが必要な大きさ分に出来ている ならそれでもいいよ。 でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、 作法的にはあまり使わないに越したことは無いって感じ。
794 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:56:56.24 ID:N5IkYQZo.net] >>771 >>778 と思ったけど、 vector<T> ではなくて vector< vector<T> > なのか。 それだと領域が連続するという前提が成り立たないんじゃないんですかね。
795 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:51:28.34 ID:K0wy5MAI.net] >>770 どういう意味じゃ… ムーブコンストラクトする手段をインターフェースとして公開したい需要は論理的に有り得る それともIFoo::move()に実装が伴うからという意味?
796 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:23:36.69 ID:XZPJJfWU.net] >>779 なぜ? 行優先か列優先かは置いといて、vectorの要素は連続するのだからvectorのvectorも連続するのでは? サイズやキャパシティが変わったときに不連続になりうるということ?
797 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:39:27.43 ID:ZF+WEG2v.net] vectorのvectorの中身はサイズ値とバッファポインタが連続で並んでるだろうな
798 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:57:30.99 ID:upzAgg50.net] >>781 正しくコピーしたければ、 memcpy(b[0].data(), ...) みたいにしないと。 このとき当然b[1]のデータ領域はb[0]の後ろに連続していない
799 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 15:27:01.55 ID:N5IkYQZo.net] >>781 vector 型のオブジェクトが連続して並んでいることは保証されるよ。 でも vector 型のオブジェクトのメモリレイアウトがどうなってるかは保証されない。 常識的な実装は >>782 が言う通りヒープから持ってきたメモリのポインタなどを持ってるだけ。 データそのものを内包しているわけではない。
800 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 16:22:37.93 ID:UDAFNKrx.net] ほらCと同じ基本の部分を教えずにいきなりSTLとか勧めるからこういう初心者が出てくる・・
801 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:06:29.35 ID:1TZxH4Mg.net] ある程度出てきても問題ないだろ。ちゃんとドキュメント読んで理解してくれる人も多いんだろうし、 「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。
802 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:09:29.42 ID:UDAFNKrx.net] ちょっと何言ってるかわかんない
803 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:54:39.09 ID:ZF+WEG2v.net] 相談室に初心者が来て何の問題があるのか
804 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 18:06:15.32 ID:N5IkYQZo.net] >>788 程度による。
805 名前:蟻人間 mailto:sage [2021/02/20(土) 19:27:14.79 ID:VmESNyRi.net] >>771 > array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって > memcpy(b.data(), a.data(), n*sezeof(T)) > で良いんですかね? 待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。 ダメです。
806 名前:蟻人間 mailto:sage [2021/02/20(土) 19:49:01.06 ID:HfYkFRCd.net] C++のvectorでは、演算子[ ]がオーバーロードされてるから、C言語の常識が通用しないんだよ。 memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。 std::vector v; int a = 5; memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。
807 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:38:26.44 ID:PUIofNKd.net] >>791 流石にそれは質問者のレベルにも達してないんで問題外
808 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:44:29.23 ID:Rkd/h2tQ.net] 別にここで何が正しいかを結論できなくてもいいのだが >>776 そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を 教えてくれる? 手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw 知識として一応確認しておきたいかなと。
809 名前: mailto:sage [2021/02/20(土) 21:19:47.30 ID:mkFIMg3t.net] >>793 >>761 では「推移的かつ反射的であるのみの順序関係が『弱順序』」とはいっていませんよ、よく読んでくださいね >>761 で言っているのは「一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいい」としかいっていませんですよね‥‥ 曲解もはなはだしいと思いますね ちなみに私の教科書ではこれを「擬順序」と定義しています、大熊正氏の本ですが、私には一生かかっても私には読めないでしょうから、あとはググってください
810 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:44:52.70 ID:K0wy5MAI.net] std::vector v(sizeof(int)); int a = 5; memcpy(&(v[0]), &a, sizeof(a)); // おk
811 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:47:14.25 ID:K0wy5MAI.net] つかこうかorz std::vector<int> v((size_t)1); const int a = 5; memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));
812 名前:蟻人間 mailto:sage [2021/02/20(土) 21:58:40.54 ID:HfYkFRCd.net] この場合は素直にループを書くか、それとも格好良くstd::copy使うのが楽かな。
813 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:26:13.27 ID:G4m9GHw4.net] for文回したら死ぬ病気にでもかかってんのか?
814 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:29:00.28 ID:oO8KGr2m.net] 条件を満たすならmemcpyのほうが圧倒的に早いからな
815 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 01:32:42.66 ID:jd0qgVVy.net] それほど速くならない・速くなくていい場合のほうが圧倒的に多いってのもあるけどな。
816 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:13:29.79 ID:ZrTKdY4P.net] そもそもそんなクソみたいなコードはふつう書かない
817 名前:770 mailto:sage [2021/02/21(日) 03:54:49.57 ID:HYHVDYIS.net] >>780 IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ
818 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:58:42.63 ID:0HHdBuLy.net] メモリコピーを最適化する前に、他にすべきこと沢山あるだろ的な答えになるよな、確かに。 PG界の真理情報だわ。
819 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 05:11:43.88 ID:L28MHLBD.net] valarrayでxorとか
820 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:43:27.01 ID:F92hI73d.net] >>802 オブジェクトAがconstメンバとして保持しているブツの所有権を移してオブジェクトBを構築することは ムーブコンストラクタでないと_なのでムーブコンストラクタである必要があり この要請はオブジェクト全体が直接アクセスかポインタや参照経由の間接アクセスかとは独立愚連隊、 >>803 真に高速化を求められる内側のループでstd::vector<int> xとかしないから >>796 はひとつながりの省略のないコードとして読んだら判断を誤りうる
821 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:51:19.71 ID:F92hI73d.net] じゃなかったorz Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) } はconst_cast<Foo>的な危険手段でないとやれないが Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) } とするとなんかコンパイラが警告を出すから Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) } にせざるおえないという、
822 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:21:42.30 ID:Dqlg3tSu.net] 関数と関数オブジェクトってどう使い分けるの?
823 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:30:17.46 ID:YxY+Ievf.net] こういう馬鹿にはちゃんとベンチマークとれって言ってやるのが正しい行い。
824 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:32:16.15 ID:HYHVDYIS.net] >>805 そんなこと聞いてるんじゃなくて 提示されたコード片じゃどう考えても動かないから何したいか分からんのよ https://wandbox.org/permalink/ancQey3IkQKyWsu1 こっから始めてどこをどうしたいか教えてくれ
825 名前:デフォルトの名無しさん [2021/02/21(日) 14:47:26.80 ID:9WgNecVw.net] 404 Not Found
826 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 15:33:36.83 ID:HYHVDYIS.net] すまん https://wandbox.org/permlink/ancQey3IkQKyWsu1
827 名前:デフォルトの名無しさん [2021/02/21(日) 16:21:41.69 ID:u2qGdVDT.net] 過疎ってるし、初心者どころかJavaの質問でもOKでは?
828 名前: mailto:sage [2021/02/21(日) 19:01:13.83 ID:3Ebck9FU.net] >>807 この質問に対して回答をつける用意がありますが、しばしお待ちを
829 名前: mailto:sage [2021/02/21(日) 19:27:36.57 ID:3Ebck9FU.net] >>807 ,813 昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています 数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥ https://mevius.5ch.net/test/read.cgi/tech/1434079972/72
830 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:07:12.76 ID:F92hI73d.net] >>809 Fooはこんなやつ、 https://ideone.com/mPPH8I IFooは、C++ではよく考えたらIFooのオブジェクトを直接生成できないので(>>802 の仰せの通り std::shared_ptr<IFoo>とかで生成することを考えたのだがエラーになるorz (上のリンク先のコードでコメントアウトしてあるgenerate_IFoo() 思いのほか闇が深かった\(^o^)/ std::shared_ptr<IFoo>が生成できた暁には、 std::shared_ptr<IFoo> pがリソースの所有権を握ったFooを保持しているとき、 std::shared_ptr<IFoo> qというのがいるとして、 *q = *p で所有権を*pから*qに渡したり、 return *p で呼び出し元が所有権を有するFooを受け取れるようにしたいワケ
831 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:09:12.28 ID:F92hI73d.net] ちなみにWandboxでソースコードをフォークする方法は 初心者なので わかり ません
832 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:14:47.49 ID:LxNhpnKU.net] generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ 後半も意味不明 *q = *pってそれスライシングだぞ
833 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:23:47.49 ID:F92hI73d.net] >>817 普通の(ムーブでない)コピコンは書けないなぜなら>>806 の理由により >*q = *pってそれスライシングだぞ どゆこと? Foo foo1とFoo foo2だと foo1 = foo2 とできるのに、
834 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:26:48.03 ID:F92hI73d.net] ちょっと補足すると、IFooには現状代入手段が無いから、 *q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード のつもり
835 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:03:58.63 ID:+My/Unlg.net] >>814 処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?
836 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:05:03.53 ID:HYHVDYIS.net] >>815 コピー代入演算子とムーブコンストラクタだけ定義するとか意味分からんし インターフェースによる隠蔽より先にそっち解決しなさい 何がしたいのか自分で本当にわかってる?
837 名前: mailto:sage [2021/02/21(日) 21:07:32.53 ID:3Ebck9FU.net] >>820 まあ、そのとおりであり、そうなんですよね… >>814 は関数オブジェクトである必然性はありません、関数オブジェクトを積極的に使う例としては STL にご登場願うしかないのかもしれませんね
838 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 22:29:56.45 ID:LxNhpnKU.net] >>818 shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ) IFoo* p = new Foo(); IFoo* q = new Foo(); というのがあったとして*q = *p;ってのは何だと思う? pとqはIFoo*型だ だからもちろん*pと*qというのはIFoo型だ すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される これをスライシングという
839 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 23:00:12.09 ID:jd0qgVVy.net] >>822 関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。 状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、 状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。 (普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)
840 名前: mailto:sage [2021/02/21(日) 23:42:46.53 ID:3Ebck9FU.net] >>824 ,820,(>>813 ,814,822) 結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト https://mevius.5ch.net/test/read.cgi/tech/1434079972/21 https://ideone.com/9KIuSD あとはラムダ式の理解のための存在という認識、か
841 名前:はちみつ餃子 mailto:sage [2021/02/22(月) 00:10:55.10 ID:oiAqsUn6.net] 「ラムダ式が関数オブジェクト (型の定義と生成) の構文糖」というのは 既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、 しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが 通りがよくなったりするかもしれないね。
842 名前:デフォルトの名無しさん [2021/02/22(月) 04:39:33.19 ID:7qATnC1I.net] 関数オブジェクトで状態を渡せるのは結構なんだが、コピーコンストラクタ渡しなので、 手の込んだ状態管理だった場合は結局、C言語と同じ
843 名前:ュユーザー定義変数を介して状態を読み書きすることになる。 [] [ここ壊れてます]
844 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:23:10.03 ID:Dz0hZ3aS.net] >>827 shared_ptr使えば、大抵の場合は問題ないんじゃない?
845 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 09:54:32.23 ID:Y0MZ31oO.net] >>807 ,820ですけどQZで始まる人あまりにもレベル低いというか回答者として不適格だと思うのでNGします
846 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:22:59.45 ID:1euWwsnd.net] >>829 答えてもらってる立場で偉そうに。常識ないの?
847 名前:デフォルトの名無しさん [2021/02/22(月) 11:11:29.17 ID:M+ptXBNl.net] いやでも実際・・・QZはね・・・ 50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね ほんと残念だけども
848 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:36:36.23 ID:7qATnC1I.net] 関数オブジェクトに対するラムダ式の優位性は、ローカル変数を比較的安全かつ手軽に参照渡しできることだろう。
849 名前:デフォルトの名無しさん [2021/02/22(月) 12:08:03.12 ID:5Ezd+ZoO.net] あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな? 急にその手の書き込みが増えてあからさますぎる。
850 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:15:54.50 ID:rpJl6SNk.net] >>831 QZの回答は糞だとして、回答者に対して>>829 みたいな態度をとることがどう正当化されるわけ?
851 名前:デフォルトの名無しさん [2021/02/22(月) 17:04:18.35 ID:M+ptXBNl.net] 回答者には無条件で感謝しないといかんのか? 気持ち悪いな
852 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:39:33.90 ID:rpJl6SNk.net] >>835 感謝しろなんて言ってないぞアホ
853 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 19:14:24.66 ID:SaDkzfTf.net] >>835 回答を得るのに適切な行動を取りゃいいよ。 変にヘイトを吐くとつっかかる奴がいるから回答から遠くなる。 >>829 は感情を制御する訓練をしないとな。
854 名前:デフォルトの名無しさん [2021/02/22(月) 19:28:11.36 ID:M+ptXBNl.net] たしかに 勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね 擁護した俺が悪かったごめん
855 名前: mailto:sage [2021/02/22(月) 19:57:55.16 ID:R3R68rti.net] >>831 認めましょう >>838 私の意見に一番近いですね 私は、馬鹿な私の意見を見たくない人も多いと想定しており、馬鹿な私が発言するときは馬鹿の印としてトリップをつけるようにしています、それだけは確約しますので、後は好きなように NG に入れていただいて結構ですよ 私はそういう人に干渉するつもりはありません
856 名前:デフォルトの名無しさん [2021/02/22(月) 20:02:59.96 ID:5Ezd+ZoO.net] そういう書き込みを見ると、あわしろ氏よりQzのほうが大人に見えるなあ。 まあでも、あわしろ氏には技術評論社がついてるからね。 謝っといたほうが良いんじゃないの?
857 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 20:52:21.84 ID:jfkpe4Eh.net] >>834 俺も以前質問したら、明らかに見当違いなマウント取りたいだけの回答が来て、言い返した時 君みたいな事言われたよ 回答くれるのは有難いが・・・ねぇ。 まぁそういうのはスルーしろ、ってんならまだわかるけど ちなまともな回答くれた人には礼言ってるからね
858 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:08:29.88 ID:51epSMYu.net] 知らんがな。キミの意見だけ聞いてその時どっちに問題があったかどうやって判断すればいいんだよ
859 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:18:11.70 ID:jfkpe4Eh.net] そういう話じゃねーよ
860 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:38:10.30 ID:6MWC7t1x.net] あるクラスのメソッドを他所で借りたいというか使いたいときって移譲(インスタンス化)するかコピペするしかないの?
861 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:41:49.01 ID:Z5ZYenTn.net] >>844 メソッドをクラスから分離してテンプレート関数にすれば、クラスの継承関係がなくても使えるので便利。
862 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 01:01:30.38 ID:48JMuLBY.net] >>844 メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する
863 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:11:59.35 ID:kBU50DXM.net] >>846 > ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど 極論、引数をとって返り値を返す関数だけで全てのことが実現できますよね? そう思ったらクラスのメソッドにするよりも何でもクラス外の関数にする方がお得というか楽な気がしてしまいます
864 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:21:43.52 ID:7kgSemXY.net] そのとおりで極力フリー関数にするべき (非静的)メンバ関数というのはデータメンバーの一貫性を保つためだけに使うもんだよ
865 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:27:00.90 ID:ex5XjLGm.net] >>847 "メンバアクセスしてない"てのが重要だと思うよ 実際、非staticではなくstaticなメンバ関数にしたい場面てあんまり無い(外の関数と大して変わらんから) >>848 みたいなのはオブジェクト指向も理解出来てないド素人が玄人ぶってよく言うんだよなぁ・・一応釘だけ刺しとく
866 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:19:26.69 ID:kBU50DXM.net] なんかOOPの行き着く先みたいな話してるな 俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う 必然、その方が副作用も少ない
867 名前:デフォルトの名無しさん [2021/02/23(火) 08:29:56.96 ID:Z5ZYenTn.net] staticなメンバ関数には、名前衝突しにくい、msvcのインテリセンスのような入力支援を得やすい、という恩恵はある。
868 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:30:00.72 ID:u3MMsI1X.net] メッセージ・・? 何の言語の話してんだ
869 名前:デフォルトの名無しさん [2021/02/23(火) 09:47:50.72 ID:DwnxTU4/.net] オブジェクト指向の概念の話をするときにメッセージって言葉使いませんか? C++ならメッセージ=メンバ関数 Javaならメッセージ=メソッド 言語によって呼び方が違うから概念的な話のときはメッセージといったほうが通りがよい
870 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:07:32.09 ID:B3ih21Pc.net] >>849 「オブジェクト指向も理解出来てないド素人が玄人ぶってよく言う」 の意味がさっぱりわからん >>848 の表現に一切ケチつけられる要素ないと思うけど
871 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:15:54.38 ID:gTQJYaBt.net] > データメンバーの一貫性を保つためだけに使う いったい何が言いたいんだろう 他人に分かり易く言えないのは自分が解ってないからというケースがある
872 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:18:06.26 ID:B3ih21Pc.net] > データメンバーの一貫性を保つためだけに使う この表現で普通に分かるけど 分からん人もいるのね了解
873 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:20:33.46 ID:NIjAanwq.net] メッセージが何のことかわからないのはワロス
874 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:21:51.05 ID:gTQJYaBt.net] >>856 でか口は具体的に説明できてからぬかせ このハッタリ野郎
875 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:22:34.65 ID:7kgSemXY.net] データメンバに対して想定した扱い方だけをさせるようにして予期しない状態の発生を防ぐため、って言えばお気に召したかしら 普通はそれを短く「一貫性を保つ」って言うのだけど
876 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:31:05.01 ID:u3MMsI1X.net] >>853 使わない、というか使うな誤解を招くから SmalltalkとかObjective-Cならわかるけど C++やJavaのそれはメッセージングではないと考えるのが普通(そう見做せないわけではないが
877 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:33:09.34 ID:B3ih21Pc.net] >>858 ?
878 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:34:51.99 ID:gTQJYaBt.net] >>859 1行目は納得 2行目の主観論には付き合ってらんね
879 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:37:31.33 ID:B3ih21Pc.net] >>860 さんに同意で C++やJava界隈だと明確に避けてると見てる メッセージってのは
880 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:49:29.89 ID:7kgSemXY.net] ごめんねおじいちゃん知らない表現を使われただけでそんなに拗ねるなんて思わなかったんだ
881 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:07:54.70 ID:u3MMsI1X.net] いや、悪いけど>>859 を以って >データメンバーの一貫性を保つためだけに使うもんだよ などと言い切れるのは経験不足と見られても仕方ないと思うよ学生ちゃん
882 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:13:43.78 ID:j4L8+y6t.net] おじいちゃんとか学生ちゃんとか、おまえらマウンティングしながらじゃないと会話できないのかw
883 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:54:07.11 ID:oVEFpcof.net] このスレは特にそういうの多いよね
884 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:46:58.74 ID:HLi0yp23.net] 昔からこのスレは特に酷いよね なぜマウントの必要があるのかは少しだけ興味深いけど
885 名前:デフォルトの名無しさん [2021/02/23(火) 13:21:23.20 ID:+0nZ2NLW.net] Linuxを使う以上、C++を嫌わないとダメだろ。
886 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:45:38.11 ID:iu17pC6m.net] >>857 ,864 いや、メッセージはわかってるけどなんでC++スレで? って話だろ >>860 の言うようにC++界隈ではあまり使わんし 単にイキってるだけにしか見えんw
887 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:46:51.42 ID:iu17pC6m.net] >>865 どういう理由で経験不足と判断したか言ってみ
888 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:47:30.93 ID:alqL+AST.net] オブジェクト指向に関しては、今の人は、昔はメモリが高価だったとでも思っておけば良いよ。
889 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:53:26.39 ID:UMWafFvJ.net] >>823 レスdクス大儀であった 自己解決しますた、 https://ideone.com/k76kj5
890 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:59:21.85 ID:UMWafFvJ.net] 一貫性というのはオブジェクト内部の整合性のこ とを言いたい のでは… ※ 個人の感想です
891 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:03:58.66 ID:UMWafFvJ.net] C++のメソッドの呼び出しをメッセージと言い出すとウィンドウメッセージと紛らわしい(小並感 ていうかC++においてメッセージと言えるのはメソッドの「呼び出し」であってメソッドそのものではない (例えば)メッセージ自体は継承メカニズムとは独立の概念なのだから ※ 個人の感想です
892 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:10:51.07 ID:HLi0yp23.net] Smalltalkはほぼ知らんけど メッセージ式ってのは セレクタ+引数のことだったはず いやこれどうでもいいか
893 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:18:47.72 ID:UMWafFvJ.net] ていうか今にして思えばstd::shared_ptr<IFoo>がIFooのインスタンスに対する所有権を適切に移譲したり管理するので std::shared_ptr<T>に持たせることにした時点でIFoo自体がリソースに対する所有権を管理する必要はなさげorz
894 名前:デフォルトの名無しさん [2021/02/23(火) 14:29:34.84 ID:+0nZ2NLW.net] smalltalkなんて誰も使わないのだから、アジソンウェスレイのオブジェクト指向プログラミング入門にそう書かれていたからという理解で良いのでは? 若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。 この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。 この本しかなかったんですよ。 良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。 全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。
895 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:09:16.56 ID:CS53pw6I.net] C++のオブジェクト指向でメッセージングのワード出してくるのは 継承を説明するサンプルコードで動物の階層もちだしてくるのと同じ功罪がある 理解のとっかかりにはいいが、リアルな実装の段階ではそういうポエムみたいな話は忘れたほうがいい
896 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:11:25.59 ID:feF5fzNV.net] メッセージ(笑)とか頭おかしい奴が言いそう
897 名前:デフォルトの名無しさん [2021/02/23(火) 16:16:12.25 ID:+0nZ2NLW.net] >>879 功もあると御自分で書かれているのでは?
898 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 19:10:57.35 ID:48JMuLBY.net] >>873 これで本当にいいのか? コピー代入演算子でムーブさせるのが本当にあなたのやりたかったこと? std::auto_ptrはこの問題があったからdeprecatedになったんだけど
899 名前: mailto:sage [2021/02/23(火) 21:53:45.68 ID:tPF8d5Rx.net] >>878 >書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。 私の若い頃を思い出します。 当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした 最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥ そういうわけで、アマゾン・ウェルカム!
900 名前: mailto:sage [2021/02/23(火) 21:57:00.55 ID:tPF8d5Rx.net] >>875 私は例のペゾルド教本を何とか C++ に適応させたくて、ペゾルド本の WM 処理・巨大 switch 文を C++ に適合させようと未だに四苦八苦していますが、やっぱり MFC に移っちゃったほうが楽チンなんでしょうか?
901 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:05:53.75 ID:u3MMsI1X.net] >>871 あまりに一面的な見方やろ >>848 はカプセル化も多態も、上で話してた関数オブジェクトさえ否定する暴論 よほど拒否反応があるんだろうなー、と
902 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:07:42.70 ID:HLi0yp23.net] 否定したように見えちゃってるんだな いろんな人がおるな
903 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:15:00.14 ID:iu17pC6m.net] >>885 まあ > (非静的)メンバ関数というのはデータメンバーの一貫性を保つため「だけ」に使うもんだよ の「だけ」に引っかかってると思うんだけどそっちの方がどちらかと言うと暴論に見えるよ
904 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:20:52.65 ID:u3MMsI1X.net] まぁ関数オブジェクトはある意味当てはまってるかもしれんと思うが >>887 そっちも根拠書いてね
905 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:28:42.45 ID:iu17pC6m.net] >>888 >>886 が言うように「否定」はしてないと思うよ ってことね
906 名前:デフォルトの名無しさん [2021/02/23(火) 22:44:54.86 ID:H7IAWcv9.net] [selector message] Objective-Cが良かったな。
907 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 06:48:21.60 ID:Vo6CI9FQ.net] >>884 やってみるとわかるけど、MFCと同じものを自分で作ってる感じになるね ARM C++時代に作るとああなるんだけど、 今どきのC++20で作るとどうなるのかは興味深い
908 名前:はちみつ餃子 mailto:sage [2021/02/24(水) 15:54:28.46 ID:EZ8EgbLC.net] 現代的な Windows のフレームワークとしては C++/WinRT に力が入ってるみたいなんで、 今からはこれを使った方がよさげ
909 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 17:47:00.67 ID:T43vsud+.net] P/Invokeともこれでおさらば、 と言いたいところだがネイティブC++をwrapするC++/WinRT自体はCLR上の言語なんじゃなかったっけ… 違ったっけ…
910 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 20:59:30.49 ID:T43vsud+.net] C++/CXと混同すた、orz
911 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 00:40:25.02 ID:hxonNlh3.net] C++/CLIだよ(小声
912 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 12:27:48.18 ID:Kp+Bp4Dl.net] int (int)型のコールバック関数ポインタにて、一応呼ばれるのでnullはマズイけど不要なので空にしたいという場合に int () { return 0; }という引数が一致しない空関数へのポインタを渡すとまずい事になるんでしょうか? 低レベルの知識がないのでよく分からないんですが、スタックの巻き戻しとかでズレが生じるとかありそうな気がしています
913 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 14:45:58.57 ID:ziL/azOs.net] >>896 使われている ABI による。 x64 環境なら Unix (系の多くの OS) でも Windows でも引数は整数4個分までは レジスタで渡されるんで、スタックの整合性は壊れないはず。
914 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 15:12:23.79 ID:bxBNuN1v.net] >>896 スタックは呼ぶ側で処理するからズレないよ でないと可変長引数とか実現できないし >>897 そんなもんは処理系やオプション次第
915 名前:デフォルトの名無しさん [2021/02/25(木) 15:36:41.54 ID:SLTnVXDN.net] 静的解析ツールやコード分析で警告が出るだろうから直したほうがいいと思うけどね
916 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 15:44:39.43 ID:ziL/azOs.net] x64 の一般的な ABI ではもう様々な呼出し規約を使い分けないようになってる。 (cdecl と stdcall が混在していた Windows が例外的で 他は 32bit 時代からかなり統一されていたみたいだけど。) まあそれはともかくとして、 実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。 不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。
917 名前:デフォルトの名無しさん [2021/02/25(木) 16:08:57.78 ID:0Aa2beUH.net] はちみつは見所がある弟子にしてやっても良いと、あわしろ氏が褒めてた。
918 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 16:57:46.00 ID:2x/2jVQO.net] >>896 古いCから新しいC++まで含め、素朴な観点では原則的には大丈夫では有るが、 あなたが言っているように例外処理が入ってくるとどうなるかは不明。 C/C++では型を厳しくしているのは、そういうことを避けるため。 あなたのやろうとしていることは、関数アドレスをキャストしなくては 関数ポインタへの代入できない。 このようにキャストすることによって、アーキテクチャ依存となり、不具合が起きる 確率が0でなくなる。
919 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 17:00:32.01 ID:2x/2jVQO.net] >>902 [補足] 例外処理はとても複雑なことが行なわれることがある。 関数ポインタに代入する際に関数シグネチャが異なるものをキャストして入れると どうなるかは処理系依存となる。 関数アドレスを同じビット数の整数型の変数との間で相互にキャストするのは構わない。 関数なのに、異なるシグネチャのものを代入しあうのは問題。
920 名前: mailto:sage [2021/02/25(木) 19:04:36.48 ID:FipxGJhu.net] >>891 そうですか‥‥ いまどき MFC の教科書が存在するかどうかは疑問ですが、やっぱり MFC に戻るしかないのですか! でも、あのドキュメント=ビュー構造はいまだによく理解できないですね‥‥
921 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:52:59.02 ID:0YuzuhSG.net] c/c++で型が厳しい?何言ってんだろ
922 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 22:34:17.62 ID:GHceiqHX.net] C++は一応明示的に破ろうとしなければ結構ちゃんとチェックしてくれる C? 知らんな
923 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 23:10:04.64 ID:NZmV0r2o.net] >>902-903 「引数が一致しない」という素朴な観点でアウトだろうし例外処理関係ないだろ。
924 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 02:06:22.71 ID:uELWbBar.net] >>907 でも、引数を関数内で参照して無い場合、素朴な呼び出し規約的には問題ない。 例外処理の unwinding は仕様が難しいので良くわからないと言うこと。 実際は大丈夫かも知れない。
925 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:24:52.91 ID:gCkWSKrb.net] int (int) { return 0; }で埋めて何が嫌なのかが分からないからな 特別な事情があるなら動かすハードとかの仕様調べろ そんなのないなら素直に安全に書いとけ、でいいじゃん
926 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:52:48.02 ID:M2eccXrm.net] >>904 一つのデータを複数のウインドウで見るって考え方だよ テキストエディタでもスプリットバーやマルチビューは普通に使うだろ
927 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:57:36.04 ID:M2eccXrm.net] >>909 と同意見だ [](int){return 0;}では何がダメなのか 説明がないとこれ以上何とも言い様がない
928 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:52:04.91 ID:X0njcRoR.net] cは互換型の概念がガバガバだからなあ… typedefは当然互換だけど、structは中身のpodが同じでも(typedefしなければ!)タグ名で弾けるので、一々structに包めば論理ミスを防ぐこともできなくもない
929 名前:デフォルトの名無しさん [2021/03/01(月) 02:34:24.68 ID:sakgt9rY.net] 規格書を読んでみんなC++覚えてたの? 入門用のドキュメント読んだら規格書読むべきですか?
930 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 06:09:14.80 ID:N/bll+Sf.net] 趣味のC++オタクでいいんならそれでいいと思うよ C++を実用したいならそういうのはやめとけ、というかまず手を動かせ その上で疑問が出てきたら調べるのはアリ
931 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:15:36.61 ID:770X86Bb.net] 問題に遭遇したときに疑問として感じ取れる人ならいいんだが、 謎理論を自分の中に構築して邁進してしまうやつも 少なからずいるので安易に手を動かせとは言いにくい。
932 名前:デフォルトの名無しさん [2021/03/01(月) 09:31:54.75 ID:Qi7MAN5S.net] 各コンパイラに固有の実装依存があるから、結局は試すしかない。 PGが規格と違った動きをしているコンパイラをなじったところで、勝利するのはPGではなくコンパイラ。
933 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:41:00.95 ID:770X86Bb.net] 商用コンパイラがその商用コンパイラがサポートしているはずの規格と違う挙動だったらそれは文句言ってもいいだろ。
934 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:44:14.28 ID:kUoELfRz.net] 文句を言うのはいいけど、規格書を盾に納期は延びないのよ。
935 名前:デフォルトの名無しさん [2021/03/01(月) 09:46:40.02 ID:Qi7MAN5S.net] >>918 それな
936 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:52:30.22 ID:nOTghizW.net] まあその通りなんだけど、誰かが言ってるからコンパイラ改良されるわけで
937 名前:デフォルトの名無しさん [2021/03/01(月) 09:52:48.41 ID:Qi7MAN5S.net] PGは、コンパイラが規格準拠してくれる日のために #if #endif で区切ってすぐに切り替えできるようにしておくことしかできない。 dirent周りのカオスを知っているなら、規格準拠をうるさく言う虚しさを理解しているはず。
938 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 10:34:18.93 ID:770X86Bb.net] 商用コンパイラを商売で使うならサポート契約とセットじゃねーの? 使い倒さないと契約料丸損やないけ。
939 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:42:44.99 ID:N/bll+Sf.net] >>922 いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん? ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ 仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける 皆お前みたいに暇じゃねーんだよ
940 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:52:02.51 ID:f1Pg/hcl.net] >>923 こういうのって結構な割合で最適化の不具合だったりするよね 特に組み込み系だとしょっちゅうそういうのあるから、該当箇所だけ最適化レベル下げて通したりしてるわ もちろん不具合の報告もしてるけど修正まで時間かかるからね
941 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:11:13.26 ID:770X86Bb.net] すぐにとはいかない現実があるのはわかるが、サポート契約の内容を本当に把握して言ってる? 商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。 VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。
942 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 11:12:35.72 ID:Qi7MAN5S.net] #if #endif マクロがない言語は無駄にネストするのが欠点だと思う。
943 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:38:15.03 ID:770X86Bb.net] #if での切り分けだってネストはありうるけど、 それが見た目に分かりづらかったりするし、 いいことばかりじゃないよ。
944 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:12:42.88 ID:CPl5J/qU.net] 一昔前なら effective c++ くらいは読もうってとこだったが、 今はどうだろうな。efective modern c++ でも足りない感じがする。 てかc++やるなら自分であれくらいのポイント抑えるくらいの準備が必要かもしれんという地獄。
945 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:23:24.82 ID:Qi7MAN5S.net] スマートポインタが標準規格に採用されたC++11とそれ以前では、作法が随分違ってくる気がするよ。
946 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 17:34:12.59 ID:oQ7wqd0O.net] >>917 「文句」みたいな感情的なものじゃなく ドライにバグレポだ 再現コードだけじゃなく回避方法もつけて
947 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 20:24:36.67 ID:YhH9VVk1.net] >>923 > いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん? やめたれw
948 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:14:48.91 ID:Dkl+jirL.net] >>925 > 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。 無いかも知れんが、「なんかおかしいんです~」でバグの特定がめっちゃ困難なことはプログラマーは身を持って知ってるから そもそもバグの解決が遠のいたら苦しむのは自分だし
949 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:56:02.87 ID:N/bll+Sf.net] >>931 いや、純粋な言語仕様の話なら別に偉そうでもいいのよ正しい事書いてくれてるなら
950 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 23:56:40.27 ID:770X86Bb.net] >>932 雑な報告でいいというわけではないが、 サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、 報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。 C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが 出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで 見たことがあって商用処理系ってすげーなーと思ってたんだが、 そういう対応のほうが例外的に良すぎるだけなんかね?
951 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:07:05.02 ID:n7F7EI9c.net] >>934 そういう対応はマイナーメーカーの方がいいことが多いよ MSの対応が悪いとは言わないけどユーザーがアホほど多いから処理系のバグにぶち当たる可能性も低いし
952 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:37:21.45 ID:wbC9damv.net] スケジュールきついだけかもよ バグがあるのわかってたけど数日かかりそうだから放置 バグ報告が出たから優先度上げて修正
953 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 02:03:18.16 ID:+qoPTldB.net] そもそもユーザー数がアホみたいに多くてあらゆる層で利用されてるようなコンパイラだと バグ報告あがってきてもまずそれほんとにバグなの?? ていうかまたコイツのリポートか!!!もしかしてただのいやがらせとかじゃないの??とか 色々まず疑ってかからないケースも半端なく多いだろうしな
954 名前:デフォルトの名無しさん [2021/03/02(火) 05:18:47.46 ID:+XzLrHKh.net] >>923 あわしろ氏は、はちみつのことを褒めてたけどな。 見どころがあるから弟子にしてやっても良いと。 月一万で弟子にしてやるぞ。
955 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 05:46:06.48 ID:eqvY2Z+d.net] >>934 サポート契約はどんなに使い倒しても契約料が戻ってくるわけじゃない 自分が頑張ってインカムを増やすのが「元を取る」ということだ
956 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:15:09.36 ID:1/ifTUd4.net]
957 名前:rel="noopener noreferrer" target="_blank" class="reply_link">>>934 VSのサブスク(旧MSDN)入ってる企業なら優先的に対応してくれるかもしれんけどね ただVS2019の更新は数日とかのスパンでは来てないやろ(しかもベータを経てからじゃなかったか? Xcodeのclangなんかはもっと遅い そのLispWorksとかいうのは例外的だろうね で、みんな回避方法くらいは自分で見つけるし直るまでの間何もしないわけにはいかんからな [] [ここ壊れてます]
958 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:43:01.65 ID:auUulvn4.net] コンパイラを作っている人は他の誰よりも標準規格に詳しい。 コンパイラが規格準拠できないのはなんらかの事情がある。釈迦に説法はカッコ悪い。
959 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 11:52:24.56 ID:K6P+Ktrz.net] cl書くけどlispworksは資料もすごいのでお世話になる、中の人がlisp界隈で愛称で呼ばれるくらい精力的なんで、ただそうなだけだと思う まあフリーな処理系使うけどな しかしニッチ過ぎるlispのどこで儲けてるのやら全く謎
960 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:42:51.15 ID:NRNfCe84.net] 言語としての機能はともかく、lispはマスコットがきもすぎ
961 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:45:21.36 ID:NT1aj9pH.net] 言語を作った人の本を読むのが一番良い
962 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:50:53.20 ID:NT1aj9pH.net] ていうか言語を作った人の本に載っているサンプルコードが 言語の思想を一番正確に表現しているはず……
963 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 04:56:27.42 ID:W4jJ9FhP.net] 禿の思想はC++03までだろ 頑なにラムダ式とrange-based-for-statementを拒み続けたところまで 4th editionでasyncを持ち上げてたけどその後の展開がアレだし
964 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 06:51:09.01 ID:gVMBPcTA.net] >>943 googleさんのImage for ...サジェストに caution: made with alien technologyって標語の例の生物のロゴが出てきやがるのは風評被害 rplacd、dpb、fmakunboundとかほぼほぼ英語だし明らかにエイリアン語ではない cも大概だしな
965 名前:はちみつ餃子 mailto:sage [2021/03/03(水) 14:59:21.41 ID:ymUPAFSA.net] >>943 C++ も似たようなもんだろ https://www.pixiv.net/artworks/31803602
966 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 16:32:38.43 ID:wyPUKIrf.net] うわ下品な絵
967 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 19:08:40.13 ID:7D0nPsrG.net] >>948 これは・・意外と嫌いではない・・w
968 名前:デフォルトの名無しさん [2021/03/03(水) 19:15:48.54 ID:zRjA/+hm.net] オライリー表紙絵みたいな動物の絵じゃないと、しっくりこない。
969 名前:デフォルトの名無しさん [2021/03/03(水) 22:54:00.65 ID:on2XNxxF.net] オイリー禿山。
970 名前:デフォルトの名無しさん [2021/03/04(木) 11:11:37.69 ID:J6mhpq5t.net] 禿と禿(かむろ)の違いが判らない
971 名前:デフォルトの名無しさん [2021/03/04(木) 13:03:17.03 ID:K63vSywh.net] カムロは半グレ
972 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 13:36:37.45 ID:Ep7EXP13.net] c++は仕事で書いてない人ほど好きな言語
973 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 14:22:00.04 ID:qn7RQ+4J.net] と、仕事で書いてないやつが言う
974 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:32:17.13 ID:9GqbczPP.net] 二人以上でやるとOOPの思想的違いがぶつかって最悪破綻するんだよな
975 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:33:34.57 ID:9GqbczPP.net] で、仕事でやるときは、最下層にレベル合わせないとモノが出来上がらないしね
976 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 17:35:44.00 ID:Ep7EXP13.net] 自分一人ならさぞかしすごいソフトウェアが書けると思ってるんですね。すごいですね。
977 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 19:51:50.17 ID:cqTSJRKn.net] >>955 それあると思う アマチュアにこそ好かれる言語だと思う(;^ω^)
978 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:33:50.17 ID:Xyn3qjeu.net] constexpr制限きつすぎ
979 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:47:45.23 ID:FQXwH3J2.net] C++11の頃ならともかく今そんなにきついか?
980 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 05:58:33.51 ID:BcBZQBoi.net] C++20、情報過多でしんどい
981 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 06:14:45.51 ID:ddot6YlQ.net] std::variant を使い始めたのですが、例えば variant の中身が4種類あって、そのうちの 2種類とか3種類だけに対し共通なコードを実行したい、ときにはどんな書き方がありますかね? 全部に同じコードを適用するなら std::visit() でいいわけですが。
982 名前:デフォルトの名無しさん [2021/03/06(土) 13:33:27.36 ID:bGzUu7RI.net] apply
983 名前:デフォルトの名無しさん mailto:sage [2021/03/06(土) 20:35:43.51 ID:aLQdimbx.net] >>964 共通処理を別の関数にまとめたうえで、visitする時に各型のオーバーロードでそれを呼び出す visit時にジェネリックラムダを使って内部でif constexprで分岐 visit時にオーバーロードされた関数オブジェクトを用いて、共通処理が必要な型について呼び出されるところをテンプレートにして、他は型を指定しておく visit時にオーバーロードされた関数オブジェクトを用いて、コンセプトで分岐 .index()とif文で書き分ける
984 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:48:37.36 ID:B2szmBNH.net] >>962 msvcのバージョン古くて。 c++14に対応してない。c++11でやってるイメージ。再帰でどんどんソースが汚れる。
985 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 13:31:16.40 ID:b6BdhXEV.net] int getX() const { return mX; } みたいな関数があるクラスのメンバ関数内でmXを参照するときに mX と getX() のどっち使うのが一般的な書き方?
986 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:04:43.65 ID:8PvVb8hX.net] >>968 確かにこれはいつも悩むなー きっとアクセサ使うべきなんだろうけどね 頻繁にアクセスするならローカル変数に代入した方が早くなったりするし、一般的にクラス宣言に書いてるのもはインライン展開されてコスト的には変わらないだろうしね むしろ他の言語のときにインライン展開なんてされないからめちゃくちゃ悩む
987 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:10:23.61 ID:mzPrKkeu.net] プロパティがないからな
988 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:16:37.41 ID:ZK+TZHvn.net] なんでもかんでもgetterとかはJAVAから来たのかとか思ってしまう 取得時に演算しないならそもそもgetterなんか作らない方が分かりやすいと思うのだが
989 名前:デフォルトの名無しさん [2021/03/10(水) 15:36:26.11 ID:pTnyTINd.net] >>971 C#みたいなのはそれはそれでわかりにくいから、getterも関数がいい。
990 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:47:37.68 ID:qvIOwUBa.net] 無理にgetter作れってのはアホだなと思うけど、まあgetterくらいならそこまで問題になることもないかなとは思う。 やたらめったらsetter作ってたら死ねとは思うが。
991 名前:デフォルトの名無しさん [2021/03/10(水) 15:50:25.97 ID:pTnyTINd.net] const 属性をうまく使えば、getterを減らしても安全にコーディングできる。
992 名前:デフォルトの名無しさん [2021/03/10(水) 15:55:29.61 ID:SA6nop04.net] オブジェクト指向に侵されてるとプロパティが欲しくなるだろう。 しかし、本物のC++は知っている。 それは間違いだと。
993 名前:デフォルトの名無しさん [2021/03/10(水) 19:38:24.39 ID:pTnyTINd.net] クラス外からは以下のようにconst 属性をつけてアクセスさせれば心持ち安全になる。 const MyClass& getInstance() const { return *this; }
994 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 19:39:09.45 ID:pDjVp4Qi.net] >>968 フックを残すかどうかだな abortとterminateみたいに
995 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 20:37:43.62 ID:wDDQFNF0.net] JavaBeans方式のプロパティはリフレクションあってこそのものなのにC++で真似してもなー。
996 名前:デフォルトの名無しさん [2021/03/10(水) 21:11:42.58 ID:98wPPrPT.net] JavaFXのプロパティは観測可能になってたすごかった データバインディングとかリアクティブとかプログラムの書き方もずいぶん変わったよね
997 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 01:07:59.93 ID:6JW0gImZ.net] そうだね流石Oracleだね
998 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 00:57:21.49 ID:9IOLdfat.net] https://ideone.com/0FptIo だれか、剰余の符号関係を教えてくれ。
999 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 01:32:57.35 ID:I1KnPozY.net] たぶんCから変わってないよな? (a/b) * b + a%b == a 以上に説明できることはないと思うけど 他になにかあるの?
1000 名前:はちみつ餃子 mailto:sage [2021/03/12(金) 03:04:36.84 ID:ByeOJ4Y7.net] 符号の向きは C++11 から仕様に入った。 (それはでは処理系定義) C では C99 から。
1001 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:30:25.58 ID:GKbHXc3G.net] プロパティーは継承できたりインターフェースとして定めたりできるのが強み だがそれしか強みが無i しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん
1002 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:36:14.31 ID:GKbHXc3G.net] P=Q・X+R (0≦R<Q) ので除数が負の%とか定義不能 被除数が負の場合はしらそん 多分Rが非負でなければならないから多分XはPより負の側に振れねばならないのではないか
1003 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 14:00:09.40 ID:9IOLdfat.net] 未定義っぽいですね。ありがとう。
1004 名前:デフォルトの名無しさん [2021/03/12(金) 16:14:00.58 ID:EbD8nxkK.net] C/C++に限らず界隈では「負数の剰余をとるべからず」という伝承がある
1005 名前: mailto:sage [2021/03/12(金) 20:35:32.66 ID:IXuMqCK3.net] >>985 剰余の定義は、その定義だけではないですね 「最小正剰余」のほかには「絶対的最小剰余」もあります https://ja.wikisource.org/wiki/%E5%88%9D%E7%AD%89%E6%95%B4%E6%95%B0%E8%AB%96%E8%AC%9B%E7%BE%A9/%E7%AC%AC1%E7%AB%A0/%E6%95%B4%E6%95%B0%E3%81%AE%E6%95%B4%E9%99%A4 自分で適当な剰余を定義したっていいのですよ
1006 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 14:10:18.80 ID:9o031KiD.net] 0へ丸めるtruncate算だったかと mod算するときに結構困るのでユークリッド算関数は常にヘッダに入れてる a % 2 == 1 // -1かもしれない まあ偶奇判定くらいなら!=0で取り繕えるけど ネットで見かける拡張ユークリッドのトイプログラムは大体間違ってるね 負の除数を想定してないgcdならそれでいいけど、ベズー係数求める時に負の被除数を扱えないと一般解の公式で他の解出してお茶は濁せるけど 有限体やら他の体とテンプレート共有できない
1007 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 23:25:02.49 ID:H7rJK4fS.net] ttp://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf
1008 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 08:32:15.77 ID:j6rur0Vp.net] 静的ライブラリを作るときに-fPICを指定する必要はないよね?
1009 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 09:41:25.38 ID:mzxuOn07.net] OSによるのでは
1010 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 23:28:52.74 ID:iFQHROzx.net] PICマイコン用のバイナリが吐かれる
1011 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 07:52:17.23 ID:PNXF+EC1.net] struct a{}; struct b:private a{}; b c; (a*)&c; //ok この下痢糞仕様は何? こう決まった理由が知りたい
1012 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 08:46:44.63 ID:QJMmjFss.net] >>994 C形式のキャストを使ってるからではなくて? どんなポインタにもキャストできると思うけど
1013 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:11:00.00 ID:PNXF+EC1.net] reinterpret_castとちゃうで
1014 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:17:53.26 ID:R+oM8cup.net] たとえ(int*)&c;でも通るでしょ
1015 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:40:19.90 ID:PNXF+EC1.net] 仮想継承にするとダウンキャストはできなくなるんで 型を無視しているのでもなさそう
1016 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:03:59.75 ID:FhOgWspo.net] ポインタは任意のポインタに変換出来る 未定義動作になる可能性があるのはデリファレンスするコードを書いた場合
1017 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:41:19.80 ID:uPqg/PBu.net] 64bitアプリで32bit整数値をvoid*にキャストしようとするとエラーになる場合があるね。 それを親切と感じることが出来れば玄人。
1018 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 74日 16時間 47分 20秒
1019 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています