1 名前:デフォルトの名無しさん mailto:sage [2021/11/15(月) 18:49:18.44 ID:I69rZ/Of.net] 前スレ C++相談室 part157 https://mevius.5ch.net/test/read.cgi/tech/1628474251/
355 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 08:31:56.16 ID:iPxJ8RPT.net] >>349 ありがとうございます! エンプレイスバックでも確認できました。 本当に根本がわかってなかったにでお恥ずかしい話ですが、ユニークポインタはmove出来ることは知っていても、インスタンスごとmoveするという考えに至りませんでした。 右辺値の言葉だけは知っていた状態です…… moveが引数の領域を右辺値に変換するので、インスタンスのメンバ全てが一時的に右辺地に変換され、その結果ユニークポインタの移動も許可されるという考えで良いのですかね? 皆様ありがとうございます
356 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 08:39:15.08 ID:RT/36Bm9.net] gccのヘッダファイル見るとpush_backがemplace_backに置き換えられてた
357 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:16:33.01 ID:VVJ2blgW.net] 質問する方はそもそも何を知りたいのか、どうしたいのかを明確にせず 回答する方はよく分からずに回答してる感じだな(はちみつ餃子以外)
358 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:28:49.13 ID:XUdPn4EW.net] 本人じゃないとありえんようなクソレス
359 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:33:31.35 ID:VVJ2blgW.net] 俺ははちみつ餃子じゃないよ 分かってる人は全員そう思うと思う このスレやばい
360 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:40:28.86 ID:2RxEeijy.net] >>354 おまえさんの対話力が、ここの平均以下ってことだな 僅かなエスパーもできないアスペっぽいやつが 取り残されるのは仕方のないことだ
361 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:41:55.96 ID:2RxEeijy.net] ここをサポセンか何かと勘違いしてね?
362 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:43:35.03 ID:2RxEeijy.net] 上司や客に言われたことを自分も誰かに言いたいのかな
363 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 11:53:10.78 ID:VVJ2blgW.net] >>357-359 3連投しないで1つにまとめてね 伝わらない人がいるのでハッキリ言うと、、、 質問したい人はもう少し明確に質問してほしい 回答する人はもう少し正確な回答をしてほしい 現在このスレのレベルはかなり落ちている
364 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:03:14.48 ID:2RxEeijy.net] >>360 あんたに連投がどうのと指図される筋合いはないし 質問者がどうして欲しい 回答者がどうして欲しい と、やたら依頼心の強いやつだな 頼み事をする態度を知らんのか
365 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:04:22.50 ID:8GY5wY3L.net] 僕だけは特別!
366 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:08:44.64 ID:VVJ2blgW.net] >>361-362 見るに堪えないだけだよ。当たり前のことを要求してるだけだし、ID変えてまで一体何が気に障るのやら・・・
367 名前:デフォルトの名無しさん [2021/12/11(土) 12:14:57.20 ID:fJKHaMXl.net] 簡単なコードが提示できないんだけどコンセプトで以下のようなエラーがでる > C7608: アトミック制約は定数式である必要があります 。 アトミック制約ってなに?
368 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:19:25.86 ID:1jb/pqqq.net] 1つの内容を理由もなく複数のレスに分けて投稿する奴はもれなくバカなのでスルー推奨
369 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 12:23:49.93 ID:VVJ2blgW.net] >>364 C++20はまだやる気ないので知らないけど、仕様は以下みたい。参考まで。 https://timsong-cpp.github.io/cppwp/n4861/temp.constr.constr#temp.constr.atomic
370 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:18:37.47 ID:iDGs+tOs.net] 多分atomic は、OS に割り込まれない、interrupt disable みたいな奴だろ。 割り込み禁止区間 1. 割り込み禁止 2. atomic に処理したいもの 3. 割り込み許可
371 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:41:40.82 ID:MUPeoDuy.net] >>367 それはリアルモードOSでの話 最近の OS ではユーザーが OS の企みを阻止することは不可能
372 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 13:49:58.55 ID:VVJ2blgW.net] 無関係でスレ違いかつ「内容まで間違った」ことを垂れ流し続けるのはやめてくれ
373 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 15:00:10.16 ID:U6KjSVaU.net] 一般にアトミックと割り込み禁止は異なる概念、 マルチコアのアーキテクチャーなら割り込みを禁止したからといって 複数回のバスサイクルをアトミックに遂行できるとは限らない つなみに割り込み禁止という手段でOSに割り込まれないことは実現はできるが 強力すぎるので普通はそれはしない やったらリアルタイムOSならリアルタイム性の前提が根底から覆るし、 非リアルタイムOSでも割り込み禁止したタスクAとは本来無関係(独立に実行して良い)なタスクまで プリエンプション停止によって止まってしまう弊害があるから
374 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 15:12:24.61 ID:U6KjSVaU.net] リードモディファイライトぐらいなら今日日のCPUが命令を備えているのでOSにも対応するAPIがあり、 それを実行したらリード、ライト、リードの3バスサイクルがアトミックに実行される もっと凝った処理をアトミックにしたい場合は 1. クリティカルセクション(セマフォとかでも良い)にENTER 2. atomic に処理したいもの 3. クリティカルセクション(セマフォとかでも良い)からLEAVE となり、1と3はやはりOSにお世話いただく
375 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 15:16:22.95 ID:xxQzv6uY.net] >>363 出た、当たり前のことを要求だとよ 自分の要求は通って当たり前と思っている真性のやつw
376 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 15:18:53.32 ID:MUPeoDuy.net] >>371 クリティカルセクションとイベントを使って書いていたことがありましたが、スタベーションに悩まされて止めてしまいました…
377 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 15:26:46.48 ID:U6KjSVaU.net] >>373 なんでatomicに処理するごときでイベントが出てくるのかわからん…… 1で待っているタスクBが居るなら、アトミックな処理を終えたタスクAが3を実行した時点で OSがタスクBに自動的に通知する(ていうか起こす 不必要に凝りまくった(そして間違った)排他制御をしているのではないか、
378 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 16:00:21.52 ID:9bOVK1ul.net] セマフォでも大丈夫なん?
379 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 16:48:16.25 ID:VVJ2blgW.net] U6KjSVaUだけまともだけど、CriticalSectionが同期機構として存在するのはWindowsだけ アトミック制約と無関係でC++固有でもないのでスレ違いなのは同じだけど…その辺の話をするならせめて↓でしてくれ 標準C++で単にatomicな話なら https://cpprefjp.github.io/reference.html#atomic-operations 標準C++でスレッドを対象とした話なら https://cpprefjp.github.io/reference.html#thread-support プロセスまで含むならboostになるけど https://www.boost.org/doc/libs/1_78_0/doc/html/interprocess.html
380 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 17:02:39.01 ID:y3N81+jA.net] >>376 迷惑なんでコテハンにしていただけません?
381 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 17:06:37.77 ID:VVJ2blgW.net] 何が迷惑なのか理由の説明がないが、コテハン付けたいならお前だけ勝手につけとけw
382 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 17:13:56.24 ID:VjmhXzGH.net] template <typename T, typename Allocator = std::allocator<T>> using vec = std::vector<T, Allocator>; auto v = vec(0, 0); ってgccだと動いてclangだとコンパイル通らないけどclangのバグ?
383 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 17:17:46.16 ID:9bOVK1ul.net] 勘違いしてた セマフォでも一人に限定すれば問題ないか
384 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 17:36:33.78 ID:gcR9gZtv.n
] [ここ壊れてます]
385 名前:et mailto: そもそもそもそも アトミック制約って原子制約のことでしょう 排他制御のatomicとは全く無関係に 単にconstexprじゃないbool値をrequiresしてませんか? [] [ここ壊れてます]
386 名前:はちみつ餃子 mailto:sage [2021/12/11(土) 17:38:45.13 ID:kyD4TLbr.net] >>379 バグというか C++20 対応が不十分なんだと思う。 @ 元々は実引数から型引数にあてはまる型を推論するのは関数テンプレート (メンバ関数テンプレートを含む) でしか出来なかった A C++17 コンストラクタの実引数からクラスの型引数を推論できるようになった B C++20 からエイリアステンプレートを挟んでも推論できるようになった ← これがまだ出来ない
387 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 18:22:11.20 ID:fJKHaMXl.net] >>381 たしかにこれの最初のサンプルのdraw関数みたいな事をrequiresしてる。 https://cpprefjp.github.io/lang/cpp20/concepts.html ただ上で言うdraw関数はconstexprなんだけどな・・・
388 名前:デフォルトの名無しさん mailto:sage [2021/12/11(土) 20:57:07.56 ID:VjmhXzGH.net] >>382 わかりやすかったありがとう まだmake_hogeみたいな不格好なヘルパ関数が役に立つこともあるのね
389 名前:デフォルトの名無しさん [2021/12/12(日) 02:33:53.10 ID:ECuL7aut.net] NFTアートとNFTゲームとGameFiとブロックチェーンゲームに 提供する側・作る側として参入しよう。 (むりなら参加する側でもいい) DAOとPlay-to-Earn(遊んで稼ぐ)が世界の未来になる
390 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 09:13:16.08 ID:2ZUu/eca.net] C#で作成されたDLLってC++で呼び出せないんでしたっけ?
391 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 10:05:57.23 ID:Rei0r571.net] >>386 やってみれば?何をしてみたの?
392 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 12:59:03.03 ID:kKgLRxlD.net] >>386 c++cliのラッパdllを挟んでc#dllを呼ぶとかc#dllをcom参照可能にするとか.NET DLLExportを使うとかあるよ
393 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:04:02.42 ID:Rei0r571.net] >>388 そういうのはできるかどうかを含め、どういう環境で何を対象に何をしたいのかによる。 そんなことすら書いてない人にいきなりキーワードをあげる必要はないよ。
394 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:10:20.08 ID:tD0M3iYv.net] べつにキーワードくらいいいじゃん
395 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 13:17:19.51 ID:Rei0r571.net] 技術に関しては不正確な情報を垂れ流すことほどの害悪はない
396 名前:デフォルトの名無しさん [2021/12/12(日) 14:51:29.97 ID:4sEaLykb.net] めんどくさい奴だなw
397 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 14:55:11.15 ID:0XY4m15b.net] 悪意を持って嘘をつくのはいかんが 信じていたことが後に間違っていたことに気付くことはあり それへの虞を言い訳に何もしないやつと 自らの誤りに気付いたときに潔くないやつは生ゴミだ
398 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 15:18:45.20 ID:MG1pihlR.net] そもそも>>391 の言う不正確な情報ってなんだ?
399 名前:デフォルトの名無しさん [2021/12/12(日) 16:31:47.95 ID:4sEaLykb.net] >>394 Linux環境ではC#のCOM相互運用できないとか、かなあ?
400 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 16:41:36.70 ID:2ZUu/eca.net] >>387 君は役に立たんなw >>388 ありがとう やっぱそういう方法になるんだね
401 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 16:45:20.02 ID:Rei0r571.net] >>394 今回の話で言えば条件によっては動かないのにさも動くかのようにミスリードする情報 相手の勘違いを指摘する機会がないことにより、結果的に回答にならない情報
402 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:00:15.53 ID:ooYWiIrJ.net] >>395 ,397 ありとあらゆる環境で動く回答しか認めないとかアスペ全開やなw
403 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:05:43.60 ID:Rei0r571.net] >>398 普通ですよ。環境はおろか困っている状況すら何も書いてないのだから。普通に釣りの気配しかありません。
404 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:16:30.63 ID:Rei0r571.net] あと加えて言うならば、一般に・・・という話なのですが、 runtimeでVMを動かすような言語の場合、あまりnative側からキックするような使い方をしません 組み込みなど、そうせざるを得ない特殊な状況のときくらいですね
405 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:18:23.27 ID:tD0M3iYv.net] んで根掘り葉掘り聞くだけ聞いて結局回答しないパターン、ってのはよく見るな。
406 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:26:07.41 ID:Rei0r571.net] >>401 それは分かりもしないのに回答しようとしたケースですね 全条件想定しないで回答しようとするとそうなります
407 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 17:29:25.52 ID:Rei0r571.net] もちろん聞いたことに答えがない場合も回答する機会は来ませんけどw
408 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:03:58.85 ID:A2l5mzZ3.net] 浮動小数点の0.0以外の真偽値って規定されてるんですか? 2.0 == trueが偽になるのにif(2.0)は真のように振舞うのでよく分からなくなりました
409 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:11:05.34 ID:LDYHaH+j.net] それはtrueが1に変換されて比較してるのでは
410 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:13:32.32 ID:2ZUu/eca.net] 0は偽でそれ以外は真 if(5) も if(10) も 0 以外だから真 5も10も真だが 5 == 10 は当然等しくないため偽になる
411 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:34:12.15 ID:Rei0r571.net] >>404 >>405 が正解 暗黙変換には一定のルールがあってそれに従って変換するとそうなる 2.0 == true -> 2.0 == 1 -> 2.0 == 1.0 -> false if (2.0) -> if (2.0 != 0) -> if (true) https://en.cppreference.com/w/cpp/language/implicit_conversion https://en.cppreference.com/w/cpp/language/operator_comparison
412 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:36:42.12 ID:Rei0r571.net] if (2.0 != 0)はあんまり正確じゃないけどねw
413 名前:デフォルトの名無しさん mailto:sage [2021/12/12(日) 21:40:50.69 ID:f1HMG1tw.net] 当然ながらbool(2.0) == trueとすれば真になるよ
414 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 21:50:35.10 ID:GurY6adw.net] bool(2.0) == true 2.0 == double(true) で曖昧にならない こういうのoperatorとctorでは作れないもんかね
415 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 21:58:10.81 ID:anT0EydK.net] >2.0 == double(true) え?
416 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:07:54.75 ID:XiOitZFG.net] 最近本当に質問者も回答者も酷いな・・・日本語からやばい >>410 何が曖昧だと言っていて、こういうのってどういうのなんでしょ? >>411 え?じゃ何も伝わらない
417 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:47:49.66 ID:rx7XzRPV.net] そういうのを求めるなら上級者の相談室でも作ってそこにいればいいじゃない 人のやり取り見て文句いうだけの人なんて居ても邪魔なだけだし
418 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 22:54:20.23 ID:XiOitZFG.net] そんな難しい要求してないんだけどw 一応↓なスレッドもありますよ 0からの、超初心者C++相談室 https://mevius.5ch.net/test/read.cgi/tech/1542002113/
419 名前:デフォルトの名無しさん mailto:sage [2021/12/13(月) 23:35:59.51 ID:GurY6adw.net] 何も言ってないやつとじゃ話にならん マウント取ったつもりになってろよアホ
420 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 01:10:13.82 ID:4HDQQOQ1.net] ID:XiOitZFG またコイツ自分賢いと思ってる例のガイジか
421 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 01:43:40.68 ID:vFkeyZ3D.net] 天に唾するクンじゃないよね?
422 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 04:27:52.83 ID:l53ksWPX.net] std::array<std::array<int, 2>, 2> a{1, 2, 3, 4}; だとコンパイルできて std::array<std::array<int, 2>, 2> a{{1, 2}, {3, 4}}; だとコンパイルできないのってなんでですか? 下は内側の初期化子リストの型推論が上手くいかない気はするのですが上がOKな理由が全然分かりません
423 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 09:36:15.02 ID:jz8gmYNu.net] arrayは設計悪いね string_viewみたいなラッパーのほうがマシ
424 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 13:08:07.96 ID:64LuYoGR.net] arrayはそんなに設計の余地ないし別によくね ラッパークラスは役割が別だし比較する意味がわからん
425 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 13:45:14.16 ID:NTJkXylC.net] >>418 こうすればいけるね 波括弧が一つ余計に必要なのがなあ std::array<std::array<int, 2>, 2> a{{{1, 2}, {3, 4}}};
426 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 15:27:55.81 ID:W58I2MTh.net] >>418 >>420 ,421 の見解が適切 構造上は以下と等価 struct S1 { struct S2 { int e[2]; } s[2]; }; なので、中括弧を丁寧に書くと↓が正しい S1 s{{{{1,2},{{3,4}}}}; 質問でエラーになったケースは、上の例でメンバsを{1,2}で初期化しようとしため、{3,4}が余ってエラーになる。 https://en.cppreference.com/w/cpp/language/aggregate_initialization
427 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 19:16:16.31 ID:l53ksWPX.net] >>421 >>422 ありがとうございます 配列をメンバに持ってるので本来は波括弧が二重に必要になるんですね 今までは1次元でなんとなく配列と同様で動いていたので省略しているという認識がありませんでした
428 名前:デフォルトの名無しさん mailto:sage [2021/12/14(火) 20:13:02.90 ID:kTLKUa7o.net] a{{1, 2}, {3, 4}}で初期化できるようにしようぜっていう提案もあったけど 初期化ルールがますますカオスになるので却下された
429 名前:デフォルトの名無しさん [2021/12/16(木) 18:55:44.40 ID:Q3qUbeDH.net] テンプレートで関数の引数を書く方法がわからないんですが sort(V.begin(), V.end(), ラムダ式) を自作するにはどうやればいいんでしょうか
430 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 18:59:42.63 ID:oxWy3zzs.net] まず日本語から勉強してください 「テンプレートで関数の引数を書く方法」と「sort(V.begin(), V.end(), ラムダ式)を自作」には何の関連もありません
431 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 18:59:43.14 ID:oxWy3zzs.net] まず日本語から勉強してください 「テンプレートで関数の引数を書く方法」と「sort(V.begin(), V.end(), ラムダ式)を自作」には何の関連もありません
432 名前:デフォルトの名無しさん [2021/12/16(木) 19:10:09.52 ID:Q3qUbeDH.net] 自己解決しました リンク先みながらこれで出来ました template<typename FNC> void usort (FNC&& fuc) { cout<< fuc(2) <<endl; } int main() { usort( [](int x) { return x+2; } ); } https://zenn.dev/rita0222/articles/4bb5023e48c134
433 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 19:16:51.92 ID:oxWy3zzs.net] 質問と回答はおろか日本語も覚束ない人の記事の宣伝はどうかと思いますよ
434 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 19:28:45.53 ID:/OSP+i6s.net] ごめん例のアスペじゃないけど俺もこの質問は日本語がひどいと思う 「テンプレートを使って、関数を引数とする関数を書く方法がわからない」でいいんだよね? 「で」も「の」も意味が複数ある助詞だから次から気を付けような
435 名前:デフォルトの名無しさん mailto:sage [2021/12/16(木) 22:08:17.98 ID:oxWy3zzs.net] 自演乙
436 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 22:39:42.44 ID:G+T88tW/.net] VC++の質問になってしまうかもしれませんがよろしくお願い致します。 void Func() throw (const char*);とした関数で静的に例外の型チェックをしてコンパイルエラーなり吐いてもらうことはできないのでしょうか? try { Func(); } catch (const wchar_t* ex) {}と書いてしまった場合等にコンパイルエラーを出してもらいたいです
437 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 23:32:36.81 ID:JPMZsaO2.net] >>432 合法なものにエラーとかねえわ
438 名前:デフォルトの名無しさん mailto:sage [2021/12/19(日) 23:52:05.34 ID:FKQX+MA6.net] 例外指定はもうすぐ消えてなくなる機能だから使うのやめた方がいいよ
439 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 00:05:45.43 ID:5GaBUmyD.net] 例外指定は調べたらC++17で削除されてんだな。 例外指定は実行時のチェックで意味ないと思ってたから一度も使ったことない。
440 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 02:04:19.31 ID:yobIy+EO.net] throwで投げる例外を指定するのはC++11以降非推奨でC++17で削除された 例外を投げ得ることを示す(空の)throwもC++11以降非推奨でC++20で削除 https://ja.cppreference.com/w/cpp/language/except_spec 結論としては無理
441 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 02:
] [ここ壊れてます]
442 名前:10:12.31 ID:WdsmvZWK.net mailto: 意味わからんもんなthrow接尾子 投げる例外全部把握出来んのかよって [] [ここ壊れてます]
443 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 07:30:27.08 ID:zT9OLvmm.net] ファイルオープンの失敗をどうやって間違えずに処理させるんだよ
444 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 07:31:31.20 ID:zT9OLvmm.net] 20年ちかくそれがいいことだっつってやってたんだぞ
445 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 07:47:02.08 ID:raeshKom.net] void aho() throw(std::bad_exception);
446 名前:デフォルトの名無しさん [2021/12/20(月) 09:50:56.71 ID:TszysAyf.net] ポインタ型変数のスタック消費が4バイト(32bit OS)または8バイト(64bit OS)なのはわかるんだけど、 参照型変数ってスタックを何バイト消費するの?
447 名前:はちみつ餃子 mailto:sage [2021/12/20(月) 11:34:47.56 ID:GbIoN43K.net] >>441 GCC の資料によれば Itanium C++ ABI に従う。 (Itanium 以外でも ABI は Itanium ということらしい。) https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html#abi.cxx_interface で、 ABI のほうでの定義では引数・返却値における参照の実態はポインタだし、 POD のレイアウトとしても参照はポインタのように扱われる。 https://itanium-cxx-abi.github.io/cxx-abi/abi.html#reference-parameters https://itanium-cxx-abi.github.io/cxx-abi/abi.html#reference-return-values https://itanium-cxx-abi.github.io/cxx-abi/abi.html#pod 内部的には参照はほぼポインタだと思っていいんでないの。 自動でデリファレンスするポインタって感じ。 ちなみに言語仕様的には参照はオブジェクトではなく参照先のオブジェクトの別名のように扱われるので、 sizeof に渡したときには参照先の型の大きさが返ってくることになってる。 sizeof(int&) みたいにしたら sizeof(int) と同じ意味になるってことね。
448 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 11:49:32.57 ID:LVF1I4ij.net] 確認してみた。 $ gcc -x c++ -S - -o - <<EOF | sed -n '/^main:/,$p;/\$2/q' int main() { int a = 1; int& r = a; r = 2; return a; } EOF main: .LFB0: .cfi_startproc endbr64 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $32, %rsp movq %fs:40, %rax movq %rax, -8(%rbp) xorl %eax, %eax movl $1, -20(%rbp) leaq -20(%rbp), %rax movq %rax, -16(%rbp) movq -16(%rbp), %rax movl $2, (%rax)
449 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 12:07:37.09 ID:IpG9nRdD.net] 参照先が見えてるところでは 参照先へ直にアクセスしてコストゼロだったり 参照引数をとる関数でもインライン化された場合はゼロ てなことがなければポインタ1個分
450 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 12:13:52.79 ID:LVF1I4ij.net] そういうのは最適化なので無関係 $ gcc -O3 -x c++ -S - -o - <<EOF | sed -n '/^main:/,$p;/ret/q' int main() { int a = 1; int& r = a; r = 2; return a; } EOF main: .LFB0: .cfi_startproc endbr64 movl $2, %eax ret
451 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:41:58.49 ID:c8hM8/Kk.net] 最適化する前の意味合いとして ポインタ1個分のコストを必ず発生するという規定なんかあったか?
452 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 21:44:15.52 ID:LVF1I4ij.net] 誰もそんな話はしてないので、お前が調べて貼れ
453 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 22:11:35.36 ID:c8hM8/Kk.net] 444へのレスで最適化がどうたらぬかしといて そんな話はしてない、かよ アセンブラ貼ってた威勢はどこへ吹っ飛んだんだかw いいよ、逃げたきゃ逃がしてやるよヘタレ野郎
454 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 22:16:05.29 ID:LVF1I4ij.net] 最初から処理系(gcc)の話しかしてない。規定の話をしてるのはお前だけだ。早く貼れ。逃げるな。
455 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 23:16:36.18 ID:TszysAyf.net] unique_ptrオブジェクトとそ