[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん (ワッチョイ efda-9b8G) [sage] 2023/10/31(火) 07:37:38.52 ID:+ZyYyqMO0 !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること 次スレは>>980が立てること 無理なら細かく安価指定 ※前スレ C++相談室 part164 https://mevius.5ch.net/test/read.cgi/tech/1683600652/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured http://mevius.5ch.net/test/read.cgi/tech/1698705458/1
2: デフォルトの名無しさん (ワッチョイ 194e-FUJr) [sage] 2023/10/31(火) 08:59:52.78 ID:DBRUqQAF0 >1 乙です 前スレ 例外はループ脱出に使うような物じゃない、との意見に賛成です。 自分は、例外は「起こり得るけどいちいちエラー処理を書いたらアホな話を」「処理呼び出し毎ではないレベルで」「エラー対処コーディングするもの」と思ってます。 具体例は、 リンクリストなどコレクション操作でメモリ不足が起きた場合、のエラー処理。 コレクションの追加や削除を頻繁に行うコードって、大体はもっと概念レベルが高い事をやってるので、1件の追加 レベルでエラー処理書いてたらアホな感じになる。 しかも、GUI プロセスを作ってて何か上手く動かないから特定のエラーだけを画面に表示したい、など、ことさら明確に対処したい場合です。プロセスが落ちればいいだけなら、main()の外側、の仕様がやってくれる。 古い本の情報だけど、SBリップマンによると、MS VC++と、sun、hp-ux の C++コンパイラで、例外を使う/使わないで速度性能調査したそうで、 4~6% の速度劣化があったとの事です。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/2
3: デフォルトの名無しさん (ワッチョイ 6105-NMSe) [sage] 2023/10/31(火) 09:37:52.87 ID:BnGGo/620 スレ終了間際に現れる質問いいですかオジなんなの?w. http://mevius.5ch.net/test/read.cgi/tech/1698705458/3
4: デフォルトの名無しさん (スププ Sd33-wFsA) [] 2023/10/31(火) 09:38:43.79 ID:yneNhI3/d Pythonで言うと forのStopIterationは へっ? だし int()のValueErrorですら微妙 http://mevius.5ch.net/test/read.cgi/tech/1698705458/4
5: デフォルトの名無しさん (ワッチョイ 5397-ggTH) [sage] 2023/10/31(火) 11:32:52.74 ID:5ddE/sJo0 うるせえstd::stoi()ぶつけんぞ http://mevius.5ch.net/test/read.cgi/tech/1698705458/5
6: デフォルトの名無しさん (アウアウウー Sad5-U1R4) [sage] 2023/10/31(火) 16:49:04.12 ID:Xd7Dooyma >>3 ヘッダーの最後の行の #endif みたいなものだよ http://mevius.5ch.net/test/read.cgi/tech/1698705458/6
7: デフォルトの名無しさん (ワッチョイ 6105-NMSe) [sage] 2023/10/31(火) 23:53:09.44 ID:BnGGo/620 >>6 と、言うことは対になる#ifがどこかに? http://mevius.5ch.net/test/read.cgi/tech/1698705458/7
8: デフォルトの名無しさん (ワッチョイ 1945-FUJr) [sage] 2023/11/01(水) 10:50:51.42 ID:NLQyML8a0 …(いくら5chとは言え、複数の人が集まる場所で、何かを教えて頂いてもお礼も言えず、面白い返しもできない人がいたとして。その人がプログラムに関してだけは素晴らしいコードを書ける、なんてことはあるのかな?と思う瞬間が人生の中であったり、なかったり) http://mevius.5ch.net/test/read.cgi/tech/1698705458/8
9: デフォルトの名無しさん (ワッチョイ 297c-tLJy) [sage] 2023/11/01(水) 12:51:50.53 ID:h0xHi7n60 (礼儀とプログラミングスキルは関係ないと思う) http://mevius.5ch.net/test/read.cgi/tech/1698705458/9
10: デフォルトの名無しさん (ワッチョイ 13ad-feYx) [sage] 2023/11/01(水) 12:53:02.45 ID:c3s+uM8y0 (俺の昼飯どこ行った?) http://mevius.5ch.net/test/read.cgi/tech/1698705458/10
11: デフォルトの名無しさん (アウアウウー Sad5-U1R4) [sage] 2023/11/01(水) 16:02:16.42 ID:G1jsC9Xya (今日の昼飯はセブンのサバ塩焼弁当にしとくか・・・) http://mevius.5ch.net/test/read.cgi/tech/1698705458/11
12: デフォルトの名無しさん (ワッチョイ 1939-PupP) [sage] 2023/11/01(水) 18:24:49.00 ID:m9AntJVX0 コードにはある程度そいつの人間性は反映されるな スレチな話題ではあるけど http://mevius.5ch.net/test/read.cgi/tech/1698705458/12
13: デフォルトの名無しさん (ワッチョイ b1f8-XCYI) [sage] 2023/11/01(水) 23:07:31.46 ID:PfaqlzcX0 (本物のプログラマはPascalを使わない) http://mevius.5ch.net/test/read.cgi/tech/1698705458/13
14: デフォルトの名無しさん (ワッチョイ 6105-NMSe) [sage] 2023/11/01(水) 23:30:59.94 ID:ZqfN6pKA0 (でもPythonは使ってもいいのかな?って時々思う) http://mevius.5ch.net/test/read.cgi/tech/1698705458/14
15: デフォルトの名無しさん (オイコラミネオ MM6d-H9h+) [sage] 2023/11/02(木) 00:03:32.45 ID:aqkFofyNM そろそろキャストは止めてスマポ使いましょう http://mevius.5ch.net/test/read.cgi/tech/1698705458/15
16: デフォルトの名無しさん (ワッチョイ d94e-vgKx) [] 2023/11/02(木) 02:43:15.24 ID:+4XO/JeH0 まちゅまちゅの3Dライブみた 前も思ったけどみこちとかなたそのダンス、めっちゃシンクロ率高い リズムがぴったり一緒なんだよね ダンスほんとにうまくなったよな http://mevius.5ch.net/test/read.cgi/tech/1698705458/16
17: デフォルトの名無しさん (ワッチョイ d94e-vgKx) [] 2023/11/02(木) 02:43:45.89 ID:+4XO/JeH0 誤爆った(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1698705458/17
18: デフォルトの名無しさん (ワッチョイ 1bda-9b8G) [sage] 2023/11/02(木) 07:17:03.35 ID:Hn8AmdCQ0 ホロライブか http://mevius.5ch.net/test/read.cgi/tech/1698705458/18
19: デフォルトの名無しさん (アウアウウー Sad5-U1R4) [sage] 2023/11/02(木) 10:44:27.02 ID:BqsrFUCWa (まちゅまちゅの3Dライブ?・・・ちょっと気になる) http://mevius.5ch.net/test/read.cgi/tech/1698705458/19
20: デフォルトの名無しさん (ワッチョイ 6105-NMSe) [sage] 2023/11/02(木) 23:48:48.29 ID:ebj85xCu0 (((お前ら括弧ばっかり使ってlisperかよ?))) http://mevius.5ch.net/test/read.cgi/tech/1698705458/20
21: デフォルトの名無しさん (ワッチョイ a905-fLgT) [sage] 2023/11/03(金) 10:21:23.72 ID:sUQ44pbr0 ←vーー( ゚∀゚)!ー^ー http://mevius.5ch.net/test/read.cgi/tech/1698705458/21
22: デフォルトの名無しさん (ワッチョイ 6276-0SSA) [sage] 2023/11/04(土) 18:56:36.20 ID:Y/q1DSa/0 コピーとムーブの挙動、というか管理難しい。。難しくない? http://mevius.5ch.net/test/read.cgi/tech/1698705458/22
23: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0979-oDOv) [sage] 2023/11/04(土) 20:24:08.34 ID:1CTu6tq50 コピーやムーブはパターンに沿って管理できるからそんなに難しいとは感じないな。 ワイとしては参照の畳み込み (Reference collapsing) や変換の規則を毎回のように確認するんだけど全然頭に入ってこない。 参照はオブジェクトではないので逆に言えば値に対応する型が参照になることはないのだが、それはそれとして参照を含む型があり得るというのが今でも腑に落ちない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/23
24: デフォルトの名無しさん (ワントンキン MM92-JcAe) [sage] 2023/11/04(土) 20:28:09.97 ID:KOZ2F//lM 参照しか知らんものだけど、ムーブて何か簡単に教えて 参照は実装上ただのポインタじゃん ムーブはなにがどうなるん? http://mevius.5ch.net/test/read.cgi/tech/1698705458/24
25: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0979-oDOv) [sage] 2023/11/04(土) 20:29:19.85 ID:1CTu6tq50 ムーブコンストラクタが起動する。 それだけ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/25
26: デフォルトの名無しさん (ワッチョイ 658d-qcxi) [sage] 2023/11/05(日) 09:49:50.04 ID:6vgG9vCb0 >>24 考え方としては、shallow copyを二重開放リスクを避けて行うための仕組み。 右辺値という特別な一時変数のコピーで特別なコピー(ムーブコンストラクタ)を実行するようにして、クラス設計者が必要に応じてshallow copyを実装しやすくしている。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/26
27: デフォルトの名無しさん (アウアウウー Saa5-CWlg) [] 2023/11/05(日) 10:41:04.16 ID:ol9bMVcca >>24 moveはRustで言う所有権の移動じゃないか http://mevius.5ch.net/test/read.cgi/tech/1698705458/27
28: デフォルトの名無しさん (ワッチョイ 454e-0SSA) [] 2023/11/05(日) 13:06:56.97 ID:Qkn7cpbH0 >>24 aに戻り値などの一時オブジェクトbをコピーすると通常は aでメモリを確保 bからメモリコピー bのデストラクタでメモリを破棄 という動作になるけど、moveの場合 aにbでメモリをポインタで持ってくる bのインスタンスでは破棄したことにする とすれば無駄なメモリ確保とコピーが発生せず効率が良い http://mevius.5ch.net/test/read.cgi/tech/1698705458/28
29: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 823e-9NWm) [sage] 2023/11/05(日) 13:39:42.02 ID:pHGS9osC0 標準ライブラリでのムーブは所有権 (ownership) の概念を前提として構築されているし、 慣例としてもそのようにするものではあるんだが 言語としてはムーブコンストラクタ (またはムーブ代入演算子) を呼び出すというだけで 所有権の面倒をみる機能は何もない。 (辻褄が合うようにするのはプログラマの責任。) 何が起きているのかは所有権の概念と実装レベルで分けて考えたほうがいいと思う。 どう説明していいかわからんから関連する要素を箇条書きにしたらこんな感じかな。 ・ それがコピーの文脈であるかムーブの文脈であるか区別は出来る ・ 一般的にムーブの文脈であった場合 (寿命が尽きる直前の一時オブジェクトの再利用が出来る場合) にコピーより効率が良い動作が出来る可能性がある ・ どのように効率がよくなるのかはそのクラス (のムーブコンストラクタやムーブ代入演算子) の定義次第 ・ 典型的なムーブの実装はリソース本体を指すポインタの交換によって実現される ・ ユーザーが定義を与えなかった場合のデフォルトのムーブは全てのサブオブジェクトをムーブすることになっている http://mevius.5ch.net/test/read.cgi/tech/1698705458/29
30: デフォルトの名無しさん (ワッチョイ 454e-0SSA) [] 2023/11/05(日) 13:42:20.39 ID:Qkn7cpbH0 で、このmove動作を定義するために、 一時オブジェクト(右辺値)に対する参照動作を関数定義できるようになっている http://mevius.5ch.net/test/read.cgi/tech/1698705458/30
31: デフォルトの名無しさん (ワントンキン MM92-JcAe) [sage] 2023/11/05(日) 14:05:22.83 ID:wAmDr/fyM ムーブされるとそのポインタは変わってしまうと思うけど、そういうケースはないの? http://mevius.5ch.net/test/read.cgi/tech/1698705458/31
32: デフォルトの名無しさん (ワッチョイ 454e-0SSA) [] 2023/11/05(日) 14:18:09.07 ID:Qkn7cpbH0 言っている意味がよく分からないが、純粋なポインタにはムーブという概念はないよ ムーブを定義できるのはクラスに対してだけ 他の人も言っているようにムーブといっても実体は単なる関数呼び出しなので、その中でプログラマが自分の責任で必要なコードを書くことになる http://mevius.5ch.net/test/read.cgi/tech/1698705458/32
33: デフォルトの名無しさん (ワッチョイ 653d-2MVi) [sage] 2023/11/05(日) 14:58:05.35 ID:vIwIC4VV0 質問した人じゃないけど説明ありがたいです ムーブ難しいと思ってたけどもっと早く勉強して仕事で使うべきだった (文法解析した要素をポインタいじって並べ変えるんだけど… 二重所有を防ぐのを手作業コーディングで責任を持たなければならないプログラムを作ってしまった) http://mevius.5ch.net/test/read.cgi/tech/1698705458/33
34: デフォルトの名無しさん (ワッチョイ 454e-0SSA) [] 2023/11/05(日) 15:15:28.75 ID:Qkn7cpbH0 ただ、右辺値参照を使うと、通常の参照や代入と使い分けるためにconstやnoexceptを厳密に指定しないといけなくなりがちだから、 その辺の総合的な理解が必要になってくるのは注意点だね constは一度付け始めるとライブラリ全部に伝染するからな・・・それを嫌って使わない派も結構いる(いた)よね http://mevius.5ch.net/test/read.cgi/tech/1698705458/34
35: デフォルトの名無しさん (ワッチョイ ed7c-9LC0) [sage] 2023/11/05(日) 15:39:17.77 ID:Vx5ySS520 実際のコードだとポインタのムーブはunique_ptrとかにぶん投げで、自分で移動コード書くことはまずないな 自分でムーブ特殊関数の中身書くのはハンドル的なもののムーブを実現したいときくらい http://mevius.5ch.net/test/read.cgi/tech/1698705458/35
36: デフォルトの名無しさん (アウアウウー Saa5-3l7D) [sage] 2023/11/05(日) 16:12:35.07 ID:jiV3XvQ2a とにかく unique_ptr が便利すぎるから何でもかんでも全部 unique_ptr 使うようになってしまった まあそれでいいのかもしれないが http://mevius.5ch.net/test/read.cgi/tech/1698705458/36
37: デフォルトの名無しさん (アウアウウー Saa5-CWlg) [] 2023/11/05(日) 16:21:29.02 ID:ol9bMVcca >>33 銀の弾丸ではない 手作業コーディングで責任を持たなければならないのは変わらない http://mevius.5ch.net/test/read.cgi/tech/1698705458/37
38: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 823e-9NWm) [sage] 2023/11/05(日) 17:10:59.04 ID:pHGS9osC0 所有権管理も結局はプログラマが書く (間違いを部分的にコンパイルエラーとして検出できることはある)、 所有権って具体的に何なんだってのはクラス定義に押し込めるという風に管理のレイヤを分けることが出来るってわけ。 クラス定義をした後は具体的に何をやってるのかを忘れて 所有権というものだと思い込むことが出来るという抽象化の仕組み。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/38
39: デフォルトの名無しさん (ワッチョイ 6540-pUwU) [sage] 2023/11/07(火) 10:10:32.04 ID:5c9945xO0 >>37 アホか 普通に考えて、そのコード(クラス)の利用者が所有権について明示的に何かしなきゃいけなかったということだろ http://mevius.5ch.net/test/read.cgi/tech/1698705458/39
40: デフォルトの名無しさん (ワッチョイ 653a-qcxi) [sage] 2023/11/07(火) 19:02:58.77 ID:Z7KocuHY0 >>33 エスパーするけど多分その用途だとmoveは使えない。 データを共有している感じなので素直にshared ptrを使うのがいいかと。shared ptrで性能的にキツイならshared ptrを参照渡しするか。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/40
41: デフォルトの名無しさん (ワッチョイ 653a-qcxi) [sage] 2023/11/07(火) 19:09:56.10 ID:Z7KocuHY0 >>40 ちょっと補足すると、戻り値をshared ptrの参照にするのはNGですな。そこは素直にRVOに期待するのが良いか。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/41
42: デフォルトの名無しさん (ワッチョイ e5a7-cSrA) [sage] 2023/11/09(木) 17:23:48.54 ID:Op1F6lz40 VC++なんだけど32bitで_thiscallを関数ポインタ経由で呼ぶことってasm使わないと不可能? メンバ関数を関数ポインタ変数とすることは出来てもそこから第一引数にインスタンス入れたりしてもコンパイル時エラーになる http://mevius.5ch.net/test/read.cgi/tech/1698705458/42
43: デフォルトの名無しさん (ワッチョイ 454e-0SSA) [] 2023/11/09(木) 18:09:02.18 ID:vDu6brxv0 >>42 メンバ関数をポインタ経由で呼び出したいってことならstd::bindでできるはず http://mevius.5ch.net/test/read.cgi/tech/1698705458/43
44: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 423e-9NWm) [sage] 2023/11/09(木) 18:24:20.63 ID:viBVvDAP0 VC++ のことは知らんけどメンバ関数ポインタは関数ポインタより大きい実装になってる処理系がある。 メンバ関数ポインタを関数ポインタに変換した時点で呼び出すのに必要な情報が失われているかもしれない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/44
45: デフォルトの名無しさん (ブーイモ MM62-wwCg) [sage] 2023/11/09(木) 19:04:30.42 ID:YhbH7ApDM MJD? http://mevius.5ch.net/test/read.cgi/tech/1698705458/45
46: デフォルトの名無しさん (オイコラミネオ MM49-wdyj) [sage] 2023/11/09(木) 19:13:19.18 ID:RZ9WOZDMM エラーメッセージにヒントはない? http://mevius.5ch.net/test/read.cgi/tech/1698705458/46
47: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 097f-Nt8Z) [sage] 2023/11/09(木) 19:58:26.06 ID:u3KRHVuW0 基本的には言語の規定内でやるに越したことはないので無理な型変換をしないで済ませられるように出来るものならそうしたほうがいい。 どうしてもそうできない事情がある(と質問者が認識している)ならもうちょっと詳しい状況をコードで示して欲しい。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/47
48: デフォルトの名無しさん (ワッチョイ e5a7-cSrA) [sage] 2023/11/09(木) 21:12:03.97 ID:Op1F6lz40 >>43 ありがとう、逆アセ見たら完璧にthiscallになってた メンバ関数っていうかthiscall指定したものは32bitだとecxレジスタにthisポインタが隠されていてそれ以外はstdcallと同じ なので下みたいに第一引数にインスタンスのポインタを入れる事でecxに代入される感じになりそうだなーと思ったら無理だった ちなみに64bitの場合はどちらもfastcallで同じだから単純に第一引数にthisポインタが隠されてるだけ auto pFunc = CDate::addDay; // CDate addDay(int value) CDate tomorrow = pFunc(&instance, 1); http://mevius.5ch.net/test/read.cgi/tech/1698705458/48
49: デフォルトの名無しさん (ワッチョイ e5a7-cSrA) [sage] 2023/11/09(木) 21:28:58.67 ID:Op1F6lz40 てかググったら簡単なシミュレーション方法載せてるブログあった _fastcallで宣言して第二引数のedxを捨て駒にする事で疑似_thiscallになる つまりint(__fastcall * pFunc)(CDate*, void*, int)とすれば一応アセンブラ的な辻褄は合う事になる http://mevius.5ch.net/test/read.cgi/tech/1698705458/49
50: デフォルトの名無しさん (ワッチョイ 1f63-1OcW) [sage] 2023/11/12(日) 10:07:59.74 ID:j2Y95IYf0 質問なのですが型Tの参照を返す関数 const T& foo() の戻り値をautoのいくつかのバリエーションで受けてアドレスを見て見たのですが auto x = foo(); auto& y = foo(); const auto z = foo(); const auto& zz = foo(); const volatile auto& zzz = foo(); cout << "&original=" << &g_vec << endl; // &original = 00B013D8 (このアドレスは一例) cout << "&x=" << &x << endl; // &x = 010FF8AC // コピー(意図しないかも?) cout << "&y=" << &y << endl; // &y = 00B013D8 // 参照(OK) cout << "&z=" << &z << endl; // &z = 010FF888 // コピー(意図しないかも?) cout << "&zz=" << &zz << endl; // &zz = 00B013D8 // 参照(OK) cout << "&zzz=" << &zzz << endl; // &zzz = 1 // !!!! という行末コメントに記載の結果になったお Q1. 参照で受けたい場合は auto でなく auto& とせねばならない、で正しい? Q2. 間違えてauto で受けても動いてしまい発見し難いケースが多いと思うのですが 意図しないパフォーマンス低下になるので防ぐ対策とか無い? Q3. zzzのアドレスが1になるのは一体…… MSVC2019使用、言語の設定はC++14、 http://mevius.5ch.net/test/read.cgi/tech/1698705458/50
51: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-zQu6) [sage] 2023/11/12(日) 11:02:37.63 ID:O0gb6uIB0 >>50 A1. 単に auto としたときに参照になることはない。 参照として受け取りたい場合は auto& にせねばならないというのは正しい。 A2. 参照かどうかで自動的に場合分けして欲しいなら decltype(auto) とすればいいが…… 参照で受けるのが正しい状況なのかどうかは状況による。 テンプレート内など自動的な場合分けが必要な場合を除いては参照は参照として明示したほうがよくない? (個人的感想です。) A3. いくつか用意されている operator<< の基本的なオーバーロードの内で bool にマッチするから。 void* もあるのだけれど C++ では任意のポインタは void* へは暗黙の型変換されないのでマッチング候補にならない。 アドレスとして解釈して欲しいなら void* へ明示的に型変換しないといけない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/51
52: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-zQu6) [sage] 2023/11/12(日) 11:38:27.18 ID:O0gb6uIB0 ごめん。 間違いがあった。 ポインタは void* へ暗黙に変換できる。 この変換はオーバーロード解決時の候補になりうる。 ただ、 bool への変換とは優先順位に差がある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/52
53: デフォルトの名無しさん (ワッチョイ 1f63-1OcW) [sage] 2023/11/12(日) 11:42:25.19 ID:j2Y95IYf0 >>51>>52 ㌧クス、 なるほど わかりた ↓こうなったわ decltype(auto) z = foo(); const auto& zz = foo(); const volatile auto& zzz = foo(); cout << "&original=" << (void*)&g_vec << endl; // &original=010213D8 (このアドレスは一例) cout << "&z=" << (void*)&z << endl; // &z=010213D8 // 参照(OK) cout << "&zz=" << (void*)&zz << endl; // &zz=010213D8 // 参照(OK) cout << "&zzz=" << (void*)&zzz << endl; // &zzz=010213D8 // 参照(OK) cout << std::boolalpha << "&zzz=" << &zzz << endl; // &zzz=true // boolean boolへの変換は使うことは無いと思うが正体は調べてみるわ http://mevius.5ch.net/test/read.cgi/tech/1698705458/53
54: デフォルトの名無しさん (ワッチョイ 1f63-1OcW) [sage] 2023/11/12(日) 11:46:29.61 ID:j2Y95IYf0 >テンプレート内など自動的な場合分けが必要な場合を除いては参照は参照として明示したほうがよくない? 非constなら考えるがこの場合foo()はconstオヌジェクトと参照を返してくるし、 これはもうdecltype(auto)一択で良いような気がが、 http://mevius.5ch.net/test/read.cgi/tech/1698705458/54
55: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7f3e-zQu6) [sage] 2023/11/12(日) 12:07:32.76 ID:O0gb6uIB0 volatile を追加する変換は出来るが除く変換は出来ないから volatile 付きのオーバーロードを用意していない operator<< では候補から消えて bool だけが候補として残ってしまうってことになるみたいだな。 volatile が付いていない場合は void* への変換のほうが bool への変換より優先順位が高いので そっちが呼ばれる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/55
56: あぼーん [あぼーん] あぼーん http://mevius.5ch.net/test/read.cgi/tech/1698705458/56
57: デフォルトの名無しさん (ワッチョイ 7fb1-qIOU) [sage] 2023/11/13(月) 02:33:43.38 ID:eLF59GiN0 >>56 案内サンクス http://mevius.5ch.net/test/read.cgi/tech/1698705458/57
58: デフォルトの名無しさん (ワッチョイ 1f01-XI6K) [] 2023/11/14(火) 02:19:13.60 ID:DkCdWP9x0 CLion使ってる人いますか? http://mevius.5ch.net/test/read.cgi/tech/1698705458/58
59: デフォルトの名無しさん (ワッチョイ 1fad-XI6K) [] 2023/11/17(金) 17:16:02.48 ID:TT3SJP5h0 日本人の死亡者が増えてるのに、メディアは報道規制 https://kizuna.5ch.net/test/read.cgi/cafe50/1699777256/l50 sssp://o.5ch.net/224t1.png http://mevius.5ch.net/test/read.cgi/tech/1698705458/59
60: デフォルトの名無しさん (ワッチョイ 6ecf-ekUX) [sage] 2023/11/18(土) 16:16:09.27 ID:5MckQHFy0 ラムダの参照キャプチャってconst参照に指定できないんだっけ?微妙に不便だな。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/60
61: デフォルトの名無しさん (ワッチョイ 7901-4XBo) [sage] 2023/11/18(土) 20:47:45.62 ID:GRi2RJZB0 >>60 これじゃだめ? #include <iostream> using namespace std; int main () { const int a {0}; int b {0}; [&a, &b = const_cast <const int &> (b)] () { ++ a; // X ++ b; // X } (); return 0; } http://mevius.5ch.net/test/read.cgi/tech/1698705458/61
62: デフォルトの名無しさん (ワッチョイ 4701-1fOb) [] 2023/11/26(日) 06:27:21.37 ID:DSb557XU0 C++20 RangesはMicrosoftの説明がわかりやすかった http://mevius.5ch.net/test/read.cgi/tech/1698705458/62
63: デフォルトの名無しさん (ワッチョイ 791f-q5uF) [sage] 2023/12/05(火) 10:33:06.64 ID:HLoKrA0o0 ふと今更思ったんだけど ポインターpに対して演算子*が返す*pは、 値じゃなくて参照? http://mevius.5ch.net/test/read.cgi/tech/1698705458/63
64: デフォルトの名無しさん (ワッチョイ b501-sZSb) [sage] 2023/12/05(火) 11:05:15.15 ID:E3GJtsiR0 #include <type_traits> #include <iostream> using namespace std; int main () { int value {0}; int *p {&value}; cout << is_reference <int>::value << '\n'; cout << is_reference <int &>::value << '\n'; cout << is_reference <decltype (value)>::value << '\n'; cout << is_reference <decltype (*p)>::value << '\n'; return 0; } http://mevius.5ch.net/test/read.cgi/tech/1698705458/64
65: デフォルトの名無しさん (ワッチョイ edf6-JrwL) [] 2023/12/05(火) 11:09:19.91 ID:IVr4NrBA0 >>63 参照ってのが何を意味しているか分からんが 普通はポインターの示す場所の内容だ http://mevius.5ch.net/test/read.cgi/tech/1698705458/65
66: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-By03) [sage] 2023/12/05(火) 11:22:18.93 ID:z5PiblaY0 >>63 ポインター p に対して *p とした場合の型は参照ではない。 たぶん >>64 は *p が参照と言いたいつもりで書いているんだと思うけど decltype に与えられる式の型が T 型の lvalue だった場合には T& が返されるルールなので その式が参照でなくても参照が返されることがある。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/66
67: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-By03) [sage] 2023/12/05(火) 11:24:42.01 ID:z5PiblaY0 あ、ごめん。 完全に間違った説明してたわ。 忘れて……。 恥ずかしい。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/67
68: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-By03) [sage] 2023/12/05(火) 11:34:00.06 ID:z5PiblaY0 と思ってよく仕様を読んでみたらやっぱりこの (>>66) 考え方で正しいはず。 式が識別子式の時に限っては decltype は参照にならず式の型そのままで返すせいで decltype(value) は参照にならないが、 value と *p は型システム的にも値カテゴリ的にも同じだわ。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/68
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 934 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s