[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
26: デフォルトの名無しさん (ワッチョイ 658d-qcxi) [sage] 2023/11/05(日) 09:49:50.04 ID:6vgG9vCb0(1) AAS
>>24
24(3): デフォルトの名無しさん (ワントンキン MM92-JcAe) [sage] 2023/11/04(土) 20:28:09.97 ID:KOZ2F//lM(1) AAS
参照しか知らんものだけど、ムーブて何か簡単に教えて
参照は実装上ただのポインタじゃん
ムーブはなにがどうなるん?
考え方としては、shallow copyを二重開放リスクを避けて行うための仕組み。
右辺値という特別な一時変数のコピーで特別なコピー(ムーブコンストラクタ)を実行するようにして、クラス設計者が必要に応じてshallow copyを実装しやすくしている。
38: はちみつ餃子◆8X2XSCHEME (ワッチョイ 823e-9NWm) [sage] 2023/11/05(日) 17:10:59.04 ID:pHGS9osC0(2/2) AAS
所有権管理も結局はプログラマが書く (間違いを部分的にコンパイルエラーとして検出できることはある)、
所有権って具体的に何なんだってのはクラス定義に押し込めるという風に管理のレイヤを分けることが出来るってわけ。

クラス定義をした後は具体的に何をやってるのかを忘れて
所有権というものだと思い込むことが出来るという抽象化の仕組み。
39: デフォルトの名無しさん (ワッチョイ 6540-pUwU) [sage] 2023/11/07(火) 10:10:32.04 ID:5c9945xO0(1) AAS
>>37
37(1): デフォルトの名無しさん (アウアウウー Saa5-CWlg) [] 2023/11/05(日) 16:21:29.02 ID:ol9bMVcca(2/2) AAS
>>33
銀の弾丸ではない
手作業コーディングで責任を持たなければならないのは変わらない
アホか
普通に考えて、そのコード(クラス)の利用者が所有権について明示的に何かしなきゃいけなかったということだろ
143: デフォルトの名無しさん (ワッチョイ ff11-Nf4k) [sage] 2024/01/11(木) 20:14:10.04 ID:AWAYnmwT0(4/4) AAS
あとコアダンプの観点では例外飛ばさずに即死したほうがいい
172: デフォルトの名無しさん (ワッチョイ 46ea-7+/r) [sage] 2024/01/15(月) 20:40:13.04 ID:Lgn9c/GO0(2/3) AAS
その失敗する処理の具体例言ってみて
216: はちみつ餃子◆8X2XSCHEME (ワッチョイ 3732-42qO) [sage] 2024/02/07(水) 01:09:12.04 ID:kuiQPbhX0(1/2) AAS
>>210
210(1): デフォルトの名無しさん (オイコラミネオ MMeb-tjaG) [sage] 2024/02/06(火) 20:42:09.19 ID:WnlTLfV5M(1/2) AAS
「The C Standard says that array indexes are (signed)
integers.
The reason behind that is that pointers and arrays
are close in C. For example, tab[index] is strictly
equivalent to *(tab + index). You can use pointer
arithmetic with negative values, hence an array
index can be negative」
とあるので、C 言語での配列添え字は符号付き整数
ですね。
しかし、C++ では、size_t とされ、符合なし整数
のようですが、矛盾しませんか?

VC++の以下のマクロでは、
#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
eが偽の時にエラーになるようになっているようです。
これはつまり、
typedef char aaa[-1];
がエラーになる事を前提にしているようです。
しかし、もし、配列の最大要素数が、符合なし整数
であるならば、32BIT 環境の場合、
-1 は、0xffff_ffff と同じと言えば同じであるはずで、
コンパイラ内部で効率よく区別するのは難しいはずです。
どうしてるんでしょう。
C の配列宣言子の角括弧内に書ける数値は 0 より大きい値に評価される整数定数式であることが条件で、具体的な型に規定はない。
式の型がなんらかの具体的な型に強制 (型変換) されたりはしないので signed int なら signed int だし、 unsigned int なら unsigned int のままだ。
VLA のときは定数式という条件は外れるけどそれ以外の制限はだいたい同じ。
C の添字演算子の場合もそう。 型は整数であればよい。
(値は制限の範囲内である必要はある。)

どこで見た説明を根拠にしているのか知らんけど、その signed が括弧書きなのは signed 「でもよい」という意味だと思うよ。
312: はちみつ餃子◆8X2XSCHEME (ワッチョイ 3b32-hL5K) [sage] 2024/03/04(月) 12:10:26.04 ID:ASLjljy+0(1) AAS
誤解のないように念のため補足。
この場合の「強い」という用語は性質の分類であって強いことがより良いというわけではないという話をしてる。(んだよね?)
例外を出さずに済むならそれに越したことはないよ。
でも、ひとつの部品の中では問題を解決できないことがあるからこそ例外を用いて他の部品と連携しての解決を試みるわけ。
連携するには保証の強力さよりも保証範囲の明瞭さ (明瞭でもカバーしようがない設計はあかんが) が大事で、プログラム全体で整合性が保たれていれば例外安全と言える。
仕様が不明瞭なライブラリもあるのが現実だってのはそりゃそうだけど、出来が悪い部品とつじつま合わせをしきらないってのは例外のせいでも C++ のせいでもない。
475: デフォルトの名無しさん (アウアウエー Saaa-rNKn) [] 2024/09/26(木) 11:38:22.04 ID:R5lWYvWFa(3/4) AAS
>c++コードと混在できるようになって
Rustについて言うなら
おそらくそんな未来は永久に来ない
515: デフォルトの名無しさん (ワッチョイ 8901-1CwD) [sage] 2024/10/29(火) 08:22:28.04 ID:XRXAB2XQ0(1) AAS
>>514
514(1): デフォルトの名無しさん (ワッチョイ 4907-+Yhf) [sage] 2024/10/28(月) 15:41:01.09 ID:xcgYWtNU0(1) AAS
autogenerated.txt.c みたいなの使うのも手だぞ 急がば回れ
そしてCよりはうまく書ける

うーん、どんなもの?それ
582: デフォルトの名無しさん (ワッチョイ 8ee1-jy16) [sage] 2024/11/21(木) 19:11:25.04 ID:U8jioV5J0(1) AAS
いわゆる演算子オーバーロードのメリットは、中置記法が使えるということと、一部の人間が使い慣れている演算子の算数・数学的記法のメタファーが使えることくらいかね。

その代償として文章構造の曖昧さや(その対処のための)優先順位といった規則の複雑化が必要になるので、言語設計観点からはメリット小さいよなぁ。
可能ならば中置記法を捨てて全部後置記法に統一したいところ。
620: デフォルトの名無しさん (ワッチョイ 00f0-X9QH) [sage] 2024/12/02(月) 22:22:03.04 ID:7rlMEi700(1) AAS
propertyなら簡単に多次元配列扱えそうなのに
propertyいつになったら実装されるのやら
646
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 9732-mOud) [sage] 2025/01/03(金) 08:22:15.04 ID:N2a/+7s70(1/2) AAS
用語は概念と結び付いてる。
理屈の建て付けが用語に現れているのだから用語の間違いは理屈の理解の誤り。
こだわるべき。

訳の都合とか歴史的事情でわかりにくい変な用語になってるのもよくあることだけどな。
664: デフォルトの名無しさん (ワッチョイ 9563-sRsu) [sage] 2025/01/18(土) 07:27:41.04 ID:Kzk7GzSP0(2/2) AAS
訂正orz……
誤: assert((void*)arr == (void*)&(arr[0]));
正: assert((void*)&arr == (void*)&(arr[0]));
675: デフォルトの名無しさん (ワッチョイ 0e9d-cjCd) [sage] 2025/01/31(金) 00:55:21.04 ID:07X4f1Va0(1) AAS
そういえばリンカーが何かって確認してなかった
後で確認してみる。ありがとう
794
(1): デフォルトの名無しさん (ワッチョイ 65e7-aE+1) [sage] 2025/03/24(月) 08:43:05.04 ID:s0JFvm8m0(1/2) AAS
>>792
792(1): デフォルトの名無しさん (ワッチョイ 0653-xG3a) [sage] 2025/03/24(月) 00:22:30.84 ID:wvKmLjta0(1) AAS
>>791
static Fooでいいだろってことだよ
自分で気づけなかったな
マルチスレッドで問題あるんじゃなかったっけ?
資料どこにあるか忘れたけど。
890: デフォルトの名無しさん (ワッチョイ 0620-9hLw) [sage] 2025/04/12(土) 01:43:37.04 ID:wegzxSOP0(1) AAS
>>886
886(1): デフォルトの名無しさん (オイコラミネオ MM95-exh5) [sage] 2025/04/11(金) 22:54:08.95 ID:qqgfnt32M(16/17) AAS
>>885
自分では意味が取れなかったんだろ?ただの馬鹿自慢だろ?
馬鹿な私に教えてください >>885
885(2): デフォルトの名無しさん (ワッチョイ 46ee-PSZj) [sage] 2025/04/11(金) 22:47:45.89 ID:5PthuDCs0(4/5) AAS
ChatGPTを使うにも知識と知恵がいるんだよ
バカは質問の仕方が下手
---
「Rustでシステムコールを追加する」という表現は 文脈によっては誤解を招きやすく、通常の意味では少し不適切 です

1. Rustで書かれたOSの中に、新たなシステムコールを実装する
→ 例:Rust製OS(例:Redox OSなど)にsyscallを加える。
→ この場合は正しい文脈。

2. Rustでカーネルモジュールを書いてシステムコールを追加する
→ 実現可能だがLinuxでは一般的ではなく、安全性に注意が必要。

3. RustでOSとやりとりするAPIを自作して、それを便宜的に「システムコール」と呼んだ
→ 厳密には誤用。OSレベルの syscall とは異なる。
の1~3のどの意味だったんですか?
912: デフォルトの名無しさん (ワッチョイ 5ff0-8xdJ) [sage] 2025/04/13(日) 00:11:33.04 ID:YJSdSOOz0(1/2) AAS
Linusが昔触ったC++コンパイラの出来が最悪でキレ散らかした
要するにC++の仕様が悪いわけではなくて当時のg++の出来の悪さに嫌気をさしてC++を触らなくなった
どっちにしろバカに危ういコードを書かせないようにするセーフティ機構を導入したところでバカがコーディングしている時点で22H2も史上最悪の大型アプデで終わってるワケなんだがな
926
(1): デフォルトの名無しさん (ワッチョイ 7fa1-0ra6) [sage] 2025/04/13(日) 11:05:14.04 ID:MoeuBZp20(4/4) AAS
ライブラリ設計ではなくて特定のアプリケーション内のアプリケーションロジックということなら
呼び出し元のバグはassert()なりで引っ掛けて十分テストするとか検出次第abort()してしまうという安直解決手はつかえまつがね……
942: デフォルトの名無しさん (ワッチョイ bf1a-wr60) [sage] 2025/04/13(日) 22:13:41.04 ID:b1PigeDH0(2/2) AAS
コンテキストの量にもよるよな
高速化の結果複雑なコンテキストになること多いけど、そうなると関数分けが難しくなる
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.461s*