[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2ch.scのread.cgiへ]
Update time : 02/26 17:30 / Filesize : 187 KB / Number-of Response : 566
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part165



1 名前:デフォルトの名無しさん (ワッチョイ efda-9b8G) mailto:sage [2023/10/31(火) 07:37:38.52 ID:+ZyYyqMO0.net]
!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

425 名前:デフォルトの名無しさん mailto:sage [2024/08/25(日) 06:41:14.01 ID:n8ainESh0.net]
static_assert(false, "")は何かしらダミーの値入れて回避してたけど修正されてたんだ、知らんかった

426 名前:デフォルトの名無しさん mailto:sage [2024/08/26(月) 00:27:52.82 ID:JWWBXqLI0.net]
false効かないバカコンパイラはどうしようもないからどうにもならんか
//requires を使った方法
template<class T, class U>
requires(!(std::is_same_v<double,T>&&std::is_same_v<complex<T>,U>))
void f(T& x, const U& y)
{
x=y;
...
}

427 名前:デフォルトの名無しさん (ワッチョイ 2963-G6Q9) mailto:sage [2024/08/27(火) 07:16:06.25 ID:NdPbjHCm0.net]
特定の引数型についてテンプレート展開を阻止したいんなら
特殊化してその中にstatic_assert(false, "*** ERR ***")書いても昔は駄目だったんか恐ろしい……

428 名前:デフォルトの名無しさん mailto:sage [2024/08/27(火) 07:35:09.57 ID:NdPbjHCm0.net]
しかしまあ特殊化してテンプレート引数の型Tについて
態と存在しないメソッドを呼ぶように書いたらその特殊化ケースについて展開を阻止できうる(適当
クラス内でint型定数が欲しかったら古き良き enum { ONE, TWO, THREE } で十分やし
同じことをやる手段を増やせば良いってもんじゃないぞPerlじゃあるまいし……

429 名前:デフォルトの名無しさん [2024/08/27(火) 14:55:30.59 ID:oHcafaf7a.net]
perlの面白仕様

430 名前:デフォルトの名無しさん mailto:sage [2024/08/27(火) 17:14:33.06 ID:K2iTXH930.net]
まぁ普通にSFINAEなり=delete指定なりコンセプトなりでオーバーロード候補から外す方が利用者視点でいえば自然だな

431 名前:デフォルトの名無しさん [2024/08/27(火) 17:33:30.75 ID:K7dNHCWQ0.net]
#include <iostream>
#include <complex>

template <class T> decltype(auto) f(T x)
{
decltype(abs(std::declval<T>())) w;
w=abs(x);
return w;
}

int main()
{
using namespace std;

cout<<f(-1) << endl;
cout<<f(2.f)<< endl;

complex<double> z=complex<double>(1.0,1.0);
cout<<f(z)<<endl;

cin.get();
return 0;
}
いちかばちかでやったら、通りました。abs! Who are you? sizeof演算子と同じくコンパイル時に評価されるんですか? というか、地味だけど declval が凄い。

432 名前:はちみつ餃子 mailto:sage [2024/08/27(火) 18:27:19.33 ID:WfqXHPCU0.net]
>>431
sizeof や decltype のオペランドは評価されないということになってる。
だからその文脈で関数を使う場合でもその関数が定義されている必要はない。 (宣言だけあればよい。)
評価されないけど実体化は起こるのでそのへんの理屈は複雑でよくわからん。

433 名前: mailto:sage [2024/08/30(金) 02:40:03.60 ID:qLymVnYK0.net]
decval使ったコード始めてみたかも



434 名前:デフォルトの名無しさん mailto:sage [2024/08/30(金) 05:15:18.21 ID:ZIPlhev80.net]
相互参照わっかんねぇ

435 名前:デフォルトの名無しさん [2024/09/02(月) 12:36:59.33 ID:bqeYsc0k0.net]
相互参照は必要ない
最近はウェブプログラマのほうが賢くなった
すそ野が広がると質が良くなるらしい

436 名前:デフォルトの名無しさん mailto:sage [2024/09/02(月) 13:00:06.45 ID:Rco2Fp/20.net]
必要ない理由ぐらい言ったら?

437 名前:はちみつ餃子 mailto:sage [2024/09/02(月) 14:42:22.37 ID:o+5p2SR60.net]
プログラムの文法要素が相互参照になっている状況という意味?
たとえば前方宣言が必要な場合とか。

それとも (実行時の) データ構造が相互参照ということ?
たとえば循環構造の後始末のやり方がわからんとか。

438 名前:デフォルトの名無しさん (ワッチョイ 0701-+rOo) mailto:sage [2024/09/02(月) 19:52:42.06 ID:cn5uZ01w0.net]
>>435
その「相互参照」って何?

439 名前:デフォルトの名無しさん [2024/09/05(木) 00:06:16.92 ID:/oUqYYg3a.net]
相互参照も自己参照も一緒
自己参照なんて参照してるのは自己ではない
ホントの意味での自己参照は循環参照

440 名前:デフォルトの名無しさん [2024/09/05(木) 18:17:57.29 ID:xTcyjaky0.net]
shared_ptrを使いたくなったら設計を見直すべき

441 名前:デフォルトの名無しさん mailto:sage [2024/09/06(金) 07:27:10.33 ID:Qb4sTpDj0.net]
>>440
それは無理があるんじゃないのかね。
データ共有とかインターフェイス共有とか本質的に所有者が複数存在するオブジェクトはsharedptr使うべきかと。

設計ではモジュール間の疎結合・インターフェイスの汎用化を重視すべきで、そのためにはデータの共有方法が重要になる。

442 名前:デフォルトの名無しさん mailto:sage [2024/09/06(金) 11:54:45.03 ID:onD85wsiM.net]
>>440
マルチスレッドセーフ考えたら使わざるを得ない場合は多々ある
言ってる意味がわからないならお前は経験不足

443 名前:デフォルトの名無しさん [2024/09/06(金) 22:35:55.77 ID:0hxwMUxG0.net]
recurcive_mutexが欲しくなったら設計を見直したい、なら分かる気もする



444 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 11:45:08.02 ID:Zy1zUumM0.net]
C++11あたりから「生ポは使うな」みたいな極論で分かった気になってる思い上がった初心者が増えたからなぁ

445 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 11:58:09.00 ID:UFsx2JaR0.net]
>>444
生ポ使うよりかスマートポインタの参照を使った方がマシだったりするからなぁ。スマートポインタがスタックフレームにあるなら安全だし。

スタック変数専用仮引数とかあればもっと安全になるのになぁ。
仮引数の種類はもっとあっていいと思う。

446 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 16:26:14.57 ID:lSV8lU690.net]
>>445
考え方にもよるだろうけど、確保も解放も所有もしない関数でスマポ受け取る必要あるか?
特定の用途で管理されている特定のポインタしか許容しない、という意図ならスマポの参照でもいいだろうけど、汎用性は無いよね
生ポ受け取る場合暗黙のキャストも効かないし

447 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 20:17:38.39 ID:Ci+xhqlU0.net]
>>442
むしろshared_ptr<T>でスレッド間共有オブジェクトを保持するのは
生ポに対するshared_ptr<T>のメリットが無い……
可能な限りスレッド間共有なんてことはやめてconstオブジェクトのコピーにするのが正義……

>>439
自己参照ではないが前方宣言が必須の例、
class TreeNode;

class TreeNode {
  std::shared_ptr<TreeNode> m_pLeft;
  std::shared_ptr<TreeNode> m_pRight;
public:
  TreeNode();
  ...
};
  

448 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 20:21:44.33 ID:Ci+xhqlU0.net]
んまー前方宣言が必須というのは言い杉やったかもしれんorz
TreeNodeみたいなクラスはノード毎にヒープを確保するなんてことはやめて専用のアロケーターを設けて
専用の領域をまとめて確保して、
木全体がいらなくなったら木をトラバースすることなく一気に解放するのが本当やが
その場合m_pLeftやm_pRightにあたるのはポインタではなくて専用の領域(配列)のindexとかにすれば
前方宣言は不要、

449 名前:デフォルトの名無しさん mailto:sage [2024/09/07(土) 21:38:34.24 ID:lSV8lU690.net]
>>442
使わざるを得ないは言い過ぎじゃね
同期取るのにshared_ptrのアトミック保証に依存するしか方法が無いの?
競技プログラマか何かか?

450 名前:デフォルトの名無しさん mailto:sage [2024/09/08(日) 00:33:39.65 ID:vgBqrjWA0.net]
shared_ptrの内部的な参照カウンタとかはともかく
保持しているオブジェクト自体はアトミックでもなんでもないでしょ
ってなんか勘違いしてる?

451 名前:デフォルトの名無しさん mailto:sage [2024/09/08(日) 01:27:17.93 ID:6Lpw1aoe0.net]
持ってるポインタの指す先のオブジェクトがアトミックになるとか言ってると思ってんの?アホかw

452 名前:デフォルトの名無しさん mailto:sage [2024/09/08(日) 01:32:50.82 ID:TMvzCbR60.net]
そこでRustですよ!

453 名前:デフォルトの名無しさん [2024/09/08(日) 12:52:42.06 ID:Lw7YNDXG0.net]
でたw
布教マソw



454 名前:デフォルトの名無しさん mailto:sage [2024/09/10(火) 11:29:59.05 ID:v6KS9t6sM.net]
>>447
お前の理解はshared_ptrの一面だけだな
ようするにunique_ptrの延長でしか見てない
shared_ptrがどうしても欲しくなるのは
オブジェクトのリリースタイミングが非決定的であるとき
これは一般的にマルチスレッド環境

お前のTreeNodeの例はそれこそ生ポで実装しても対して苦労しないが
例えば動的可変multi producerなqueueの場合確実に安全なqueueの解放タイミングを知るにはリファレンスカウントのような制御が必要となる
当然この場合コピーすれば安全なんて寝ぼけたことにはならない

455 名前:デフォルトの名無しさん [2024/09/10(火) 13:20:49.36 ID:KGjTz1X0a.net]
x 対して

456 名前:デフォルトの名無しさん mailto:sage [2024/09/10(火) 15:36:50.97 ID:+l9ylb2n0.net]
それで自己参照ってのは結局何のことを指して言っていたんだい

457 名前:デフォルトの名無しさん mailto:sage [2024/09/10(火) 15:39:03.70 ID:+l9ylb2n0.net]
あ、相互参照が先か
>>435>>436の言うところの

458 名前:デフォルトの名無しさん [2024/09/11(水) 12:14:54.12 ID:n6/LwjNL0.net]
(*this)

自己参照

459 名前:デフォルトの名無しさん [2024/09/11(水) 12:19:01.05 ID:n6/LwjNL0.net]
木のノードはstd::vector<>で確保する
と言われて、だよねってなる人はnewもほとんど必要ない

460 名前:デフォルトの名無しさん [2024/09/11(水) 12:22:29.60 ID:n6/LwjNL0.net]
木の巡回は、巡回方向別にアダプタとしてイテレータを用意することが出来る
良くある行きがかり順のイテレータはスタックを使って作る

461 名前:デフォルトの名無しさん mailto:sage [2024/09/11(水) 15:12:04.16 ID:1n/VD1trM.net]
でvectorの拡張で破綻すんだろ?

462 名前:デフォルトの名無しさん [2024/09/13(金) 16:29:50.66 ID:bblj+c3pa.net]
move禁止

463 名前:デフォルトの名無しさん mailto:sage [2024/09/13(金) 19:59:43.80 ID:2C9M8qgO0.net]
move禁止したらvector使えないし



464 名前:デフォルトの名無しさん mailto:sage [2024/09/17(火) 12:59:42.12 ID:TMGdiCOOa.net]
それならオブジェクトを保持するためのオブジェクトと
moveためだけのインデックスを分けるかな

465 名前:デフォルトの名無しさん mailto:sage [2024/09/17(火) 16:24:30.60 ID:DN+X/Cyr0.net]
何がしたい
あほでしょ

466 名前:447 mailto:sage [2024/09/21(土) 20:05:42.93 ID:FUSKAHoo0.net]
何やら集中砲火を浴びている>>442 やが
マルチスレッド状況でshared_ptr<T>を超有効活用できる手が一つあったわ;;;

スレッド間の共有オブジェクトをポインタpで保持する際の問題点は、
そのポインタを知っている複数スレッドの間でpが指すオブジェクト*pへのアクセスを悉く排他制御せなばならない点やが
逆にpを知っているスレッドが任意の時刻につき1つだけなら、オブジェクトのアクセスに対して排他の必要が無い
それでいてスレッドへのデータの受け渡しに関してコピーの手間は減らせる

例:
なんちゃらWorkerスレッドオブジェクトをshared_ptr<Worker>のキューで保持しておく
スレッドfooが使うときWorker1をshared_ptr<Worker>としてpopする(←これは排他が要る
スレッドbarが使うときWorker2をshared_ptr<Worker>としてpopする(←これは排他が要る
...
(スレッドfooやbarはWorker1、2をそれぞれ独占的に使用できる) ←重要
...
スレッドfooが使い終わったWorker1をキューにpushする(←これは排他が要る
スレッドbarが使い終わったWorker2をキューにpushする(←これは排他が要る

467 名前:447 mailto:sage [2024/09/21(土) 20:13:25.63 ID:FUSKAHoo0.net]
ていうか2週間ぐらい前から作っていたやつが今さっき完動すた、

468 名前:デフォルトの名無しさん mailto:sage [2024/09/21(土) 20:35:47.52 ID:FUSKAHoo0.net]
std::vector<TreeNode> nodes;
ならnodesを拡張したとき破綻するかもしれんが(nodeをnodesのindexで管理するならその限りではない
std::vector<std::shared_ptr<TreeNode> > apNodes;
ならapNodesを拡張しても破綻しないYO!(要素の実アドレスは保たれる

469 名前:デフォルトの名無しさん mailto:sage [2024/09/22(日) 08:21:05.99 ID:e5FZYjui0.net]
それ何のためのshared_ptrなの?unique_ptrでいいというか横からコピーされないようにそうすべきでは

470 名前:デフォルトの名無しさん mailto:sage [2024/09/25(水) 13:57:54.93 ID:N5yN4IuU0.net]
>>466
>>442 を書いたのおれだけど、なんでおれが集中砲火浴びてることになってんだよ
生ポとか意味不明なこといってる>>447は一見してわかるクソレスだろ

おまえはそれ以上のクソレスにクソコード
でもお前の勝ちだ
クソコードに2週間かけた情熱に免じて親切におしえてやるわ

shared_ptrはpに誰かがアクセスしている可能性がある間は決してdeleteされないことを保証できるのが肝
(pの先の排他ではこれは実現できない)

もちろんこれも正しく使わないと保証できない
よくあるミスは知ったかぶって参照カウントを操作しないようにshared_ptrを参照渡しとかにするやつな
その間に絶対deleteされない保証がないならやってはいけない

471 名前:デフォルトの名無しさん mailto:sage [2024/09/26(木) 03:21:09.01 ID:5BtHXQaO0.net]
あーなるほど、一貫してshared_ptrの実体を渡してればそういう保証も出来るのか
自分の場合自前で排他処理や生存保証作ってたけど確かに大きなメリットだね
(オブジェクト内部の排他は別に必要だとしても)

472 名前:デフォルトの名無しさん [2024/09/26(木) 10:52:52.31 ID:R5lWYvWFa.net]
そんなあなたにRust

473 名前:デフォルトの名無しさん mailto:sage [2024/09/26(木) 11:26:35.22 ID:r0pzUHiv0.net]
>>472
c++コードと混在できるようになってからの話だな。
既存c++を捨てなきゃならんのなら要らん。



474 名前:デフォルトの名無しさん [2024/09/26(木) 11:37:49.48 ID:R5lWYvWFa.net]
もちろんRustをやるにはC++を捨てる覚悟が必要
C++コード(特にテンプレやclass)とは相性最悪

475 名前:デフォルトの名無しさん [2024/09/26(木) 11:38:22.04 ID:R5lWYvWFa.net]
>c++コードと混在できるようになって
Rustについて言うなら
おそらくそんな未来は永久に来ない

476 名前:デフォルトの名無しさん [2024/09/26(木) 11:39:08.38 ID:R5lWYvWFa.net]
誤解の無いように言っておくと
(一部機能に限れば今でも混在出来るけど)
基本的にはC++とは相いれない

477 名前:デフォルトの名無しさん mailto:sage [2024/09/26(木) 18:22:32.63 ID:sl+cfKHN0.net]
ならc++にRustの機能が取り込まれるのを待つ。

Rustが大人気になったら、さすがに標準委員の連中も初心者・コーダー向けの"Safe c++"をやる気になるだろ。

478 名前:はちみつ餃子 mailto:sage [2024/09/26(木) 18:52:53.17 ID:B+Au+yIB0.net]
>>477
もう Rust を使えばよくない……?

479 名前:デフォルトの名無しさん mailto:sage [2024/09/26(木) 19:43:24.82 ID:sl+cfKHN0.net]
>>478
>>473だっつうの。

Kotlinみたいなのが欲しいのであって、Clojureみたいなのは要らん。

480 名前:はちみつ餃子 mailto:sage [2024/09/26(木) 20:25:47.69 ID:B+Au+yIB0.net]
>>165
C++ のコードを Rust から呼び出したりするくらいのことは簡単に出来るよ。
たぶん (Java に対する) Kotlin みたいなこととして思い浮かべているようなことは出来る。

Rust がやってるような安全性の保障を自動では受けられない。
当然だが安全ではない (安全性が検証されていない) C++ のコードが Rust から呼び出すことで安全になったりはしない。
大抵の場合に Rust の都合に合わせてラッパーを書くことになる。

481 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 10:23:27.00 ID:n6BA5joS0.net]
>>480
KotlinとJavaみたいにソースコードを混在できるレベルの相互運用性てあったっけ?
Rustとc++では無理だと思うけど。

482 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 10:44:00.51 ID:02Aq/BhWM.net]
cxxとかあるけど個人的には中途半端だから使わない
普通に共有ライブラリにして呼び出す方が素直で汎用的で良い

483 名前:デフォルトの名無しさん [2024/09/27(金) 12:33:43.81 ID:6/1p1gGO0.net]
スマートポインターを使うように強制できる機能とかなら必要ないなあ



484 名前:デフォルトの名無しさん [2024/09/27(金) 16:51:52.33 ID:pgg/4VuRa.net]
>>473 のような未来は永遠に来ない

485 名前:デフォルトの名無しさん [2024/09/27(金) 16:54:13.57 ID:pgg/4VuRa.net]
>>482
結局Cが正解なんよ
C++のスレで言うのもなんだけど

486 名前:デフォルトの名無しさん [2024/09/27(金) 16:54:31.95 ID:pgg/4VuRa.net]
>>481
同意

487 名前:デフォルトの名無しさん [2024/09/27(金) 16:54:58.40 ID:pgg/4VuRa.net]
>>480
嘘つくな
出鱈目言うな

488 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 17:14:28.28 ID:n6BA5joS0.net]
>>483
コーダー向けので考えるなら、スマポ強制は最優先だろ。

生ポインタを(コーダーが)保存できなくするだけでも随分安全になる。あと生ポインタdelete禁止とか。

489 名前:デフォルトの名無しさん (ワッチョイ 728c-rNKn) mailto:sage [2024/09/27(金) 18:24:18.27 ID:dg7IL8lg0.net]
極限のパフォーマンスは別に要らないから安全にしたいという要件なら GC が既に解決しているし
今更生ポインタを禁止したところで C# や Java と同じ方向性のナニカにしかならんじゃろ

490 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 18:46:28.46 ID:EoeiRCVP0.net]
gcがあったらメモリリークしないなんて幻想未だに信じてるとはね

491 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 18:59:34.32 ID:RwmUzOsi0.net]
リークの話なの?

492 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 19:07:06.62 ID:n6BA5joS0.net]
>>489
ライブラリとかフレームワークを使う側のコーダーと作る側のライブラリアンは性能要件が全然別。

コーダーに対してライブラリアンが「コーダーのコードに極限のパフォーマンスは別に要らないから安全に「させたい」」というのはあるだろ。

493 名前:デフォルトの名無しさん mailto:sage [2024/09/27(金) 23:12:04.55 ID:cfj6fT7K0.net]
>>492
それならライブラリ側でメモリ周りを隠蔽するような作り方も出来ると思うけど
ユーザー(コーダー)にはインスタンス使わせるけど内部では参照カウントなりスマポなり使ってるみたいな
それですら問題が起きるようならユーザーがクソ



494 名前:デフォルトの名無しさん mailto:sage [2024/09/28(土) 10:42:06.28 ID:swed/tX60.net]
C++はどんな安全策敷いてもユーザー側がその気になればいくらでもぶち壊せるからね
ライブラリがあんまりそこ頑張っても仕方ない

495 名前:デフォルトの名無しさん (アウアウエー Saaa-rNKn) [2024/09/28(土) 12:39:39.83 ID:gf2/NL3ha.net]
Rustなら壊れないみたいな言い草だな

496 名前:デフォルトの名無しさん (ワッチョイ 77ba-vp5J) [2024/09/28(土) 13:06:22.71 ID:ZP4SxDa50.net]
C++で書かれたChrome V8エンジンをRustから扱えるRusty V8というライブラリがリリースされたというニュースを見た
メモリ安全性を確保して呼び出しオーバーヘッドもゼロなんだって
ほんとかな?

ただのラッパーじゃないの?
C++側でメモリアクセス違反があれば落ちそうだけど

497 名前:デフォルトの名無しさん mailto:sage [2024/09/28(土) 14:26:57.72 ID:yW35cSECM.net]
その手の話はMICROSOFTの新機能ぐらいい思っておけば
腹も立たない

498 名前:はちみつ餃子 mailto:sage [2024/09/30(月) 22:26:30.09 ID:JxqgGnHQ0.net]
>>496
Rust の標準ライブラリだって内部は unsafe だらけだぞ。
unsafe は Rust のメモリ安全性検査の例外とする指定で、検査はされないが安全であることはプログラマが保証しないといけない。
ただ、 unsafe な部分を慎重に押し込めて (押し込めるのが正しく出来ていれば) あとは Rust のメモリ安全性検査に頼ることが出来る。

ずっと気を付けなきゃならない C++ よりは面倒ごとを基盤に押し込めたら後は機械が検査してくれるほうがマシという程度の話。
押し込めた中に問題があればそりゃ当然駄目だよ。

499 名前:デフォルトの名無しさん mailto:sage [2024/10/01(火) 02:05:59.60 ID:J7GPtKrz0.net]
V8エンジンてCVE脆弱性で毎月アップデートの口実にされる迷惑なやつだからさっさとRustで書き直せよ

500 名前:デフォルトの名無しさん [2024/10/01(火) 15:19:57.32 ID:KXGxeTHwM.net]
>>498
>押し込めた中に問題があればそりゃ当然駄目だよ。
当然分かっているだろうが、unsafeの中だけでなく、
それが外側に及ぼす影響にも問題が生じないように作らなければなら
ないが、それにはunsafeとRustの両方に対する深い理解が
必要となるだろうな。

501 名前:デフォルトの名無しさん mailto:sage [2024/10/01(火) 18:36:21.46 ID:al1nAqGBM.net]
>>500
unsafeの中を通過する時には問題ないが、
戻り値などや、連携する他のメソッドなどが
関係した結果、どこかで分かりにくいメモリーエラー
になるようなことも避ける必要が有るが、
それにはかなりRustの内部構造(?)に対する深い知識
と理解が必要となりそうだ。

502 名前:デフォルトの名無しさん (ワッチョイ 1fb1-/QnX) mailto:sage [2024/10/17(木) 11:01:19.65 ID:P7X9/HPx0.net]
>>422
これ、static_assertだけ修正してもしょうがない気がするんだけどなぁ
他にも実体化しないはずの分岐でチェックされてエラーにされることあるし
まぁ条件式に無理矢理テンプレート入れて回避は出来るけど

503 名前:デフォルトの名無しさん mailto:sage [2024/10/19(土) 17:30:35.94 ID:vb3IsOJN0.net]
>>491
Rustのオブジェクトの所有権管理の強制はコンパイラに従う限りリークしない
(病的な反例があるかどうかは知らん
からリークの話ではないが、GC付き言語で解決という香具師が現れたから



504 名前:デフォルトの名無しさん mailto:sage [2024/10/19(土) 17:31:10.99 ID:vb3IsOJN0.net]
>>490な発言になったんじゃないの
知らんけど

505 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 07:19:50.64 ID:ThoL8xQh0.net]
>>503
RustはRcの循環参照解決できたの?
公式ソースある?

506 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 14:54:46.51 ID:WHCxApN50.net]
C++派だが、Rustをもってしても、相互参照みたいなものは、人類には早いらしい
(設計段階で)無理しないこったな。。

507 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 15:57:11.21 ID:Hhc6wfX80.net]
そもそも静的解析で解決できる問題か?

508 名前:はちみつ餃子 mailto:sage [2024/10/21(月) 16:03:29.88 ID:6JU3cZPt0.net]
循環参照をしたいときに出来ないのも困るしな。
なるべくやらないに越したことはないが、やるなら後始末は人が考えないと仕方ないわ。

509 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 22:48:14.20 ID:XvJERuqr0.net]
食事する哲学者の問題……
Rustだと循環参照するコードを書きにくくなっているから
循環参照によるリークとか病的な反例のうちなんじゃないの
知らんけど

ノードNode同士が論理的には循環参照し得るんだけど
その所有権をスーパーバイザ的な配列superArray: Node[]が持っていて、

510 名前:デフォルトの名無しさん mailto:sage [2024/10/21(月) 22:53:33.76 ID:XvJERuqr0.net]
Node間の参照はsuperArrayのindexで済ませるというのもRustではすんなり通してくれな
いんだっけどうだっけ……
Node& node1 = superArray[0];
Node& node2 = superArray[1];
node1.next = 1;
superArray[node1.next].value = 123; // node2.valueに書く

node1.nextがsuperArray[]の添え字範囲内であることを機械的に保証するためにRustはどんな魔法を使ってくれる
のか

511 名前:はちみつ餃子 mailto:sage [2024/10/22(火) 11:28:00.82 ID:UXnTPhGj0.net]
>>510
Rust では実行時にチェックされて範囲から外れていたら panic (C/C++ で言うところの abort みたいなもの) する。
https://doc.rust-lang.org/std/ops/trait.Index.html#tymethod.index
C/C++ のように配列がポインタになるということはなく、スライス (C++ で言うところの span みたいなもの) が基本型として組み込まれているので範囲チェック出来る。

コンパイル時に範囲内であることがわかる状況なら最適化で消えることもあるみたいだけど
実行時に外部から入ってくる値に依存することもあるので実行時にチェックしないとどうしようもない。

512 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 13:44:32.71 ID:A9ortPvu0.net]
enum、
文字列への変換、

大変すぎて、ビックリした

513 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 14:06:10.17 ID:/lht/Ba/0.net]
俺はenumの機能を拡張するクラスを自分で定義してるな
それで文字列変換も文字列からの変換も出来る



514 名前:デフォルトの名無しさん mailto:sage [2024/10/28(月) 15:41:01.09 ID:xcgYWtNU0.net]
autogenerated.txt.c みたいなの使うのも手だぞ 急がば回れ
そしてCよりはうまく書ける

515 名前:デフォルトの名無しさん mailto:sage [2024/10/29(火) 08:22:28.04 ID:XRXAB2XQ0.net]
>>514

うーん、どんなもの?それ

516 名前:デフォルトの名無しさん mailto:sage [2024/10/29(火) 13:58:12.41 ID:WYOK+g300.net]
好きなように書いて、好きなように変換して、途中でincludeする
簡単に書くもよし、ガッチガチにチェックするもよし

517 名前:デフォルトの名無しさん mailto:sage [2024/10/30(水) 23:11:10.17 ID:x0G86HEF0.net]
HAGE(CAUWA1)
HAGE(CAUWA2)
HAGE(CAUWA3)

みたいなテキスト作っといて
手コキストを#includeする手前でHAGEの意味を変えてやるとうまいこと一元化できる

518 名前: mailto:sage [2024/10/31(木) 00:43:29.18 ID:ET2RcGMR0.net]
カウワ?

519 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 01:08:33.55 ID:gisW4Gdb0.net]
magic_enum教えてやれや
じじいは感度低いから知らんか

520 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 05:43:35.79 ID:J4xtBqBy0.net]
みてきた それが人気の実装か
やりたいこと次第だが、オーバスペック感はある
ちょうどほしかったんなら止めないけどね

521 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 10:56:16.92 ID:++2hP8JV0.net]
横からなるほどー!
__PRETTY_FUNCTION__ / __FUNCSIG__

522 名前:デフォルトの名無しさん mailto:sage [2024/10/31(木) 15:32:14.58 ID:IcW65SaY0.net]
あのー、アメリカグーグルで、検索すれば、良いのがでてきた

日本は、でてこない
これは、やっぱり、レベルなんだろうね

523 名前:デフォルトの名無しさん [2024/11/01(金) 19:53:27.66 ID:TgBKHsuNa.net]
>>518
あさひ奈央



524 名前:デフォルトの名無しさん mailto:sage [2024/11/02(土) 09:17:27.71 ID:KpOoS8wa0.net]
>>522
アメリカグーグルって言い方からして頭悪そう

525 名前:デフォルトの名無しさん (ワッチョイ 5910-fVPo) mailto:sage [2024/11/05(火) 08:04:39.53 ID://VVBUiD0.net]
magic_enumは個数制限がきついんだよな・・256くらいが限度じゃなかったっけ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<187KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef