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


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

C++相談室 part160



1 名前:デフォルトの名無しさん [2022/04/15(金) 08:39:32.42 ID:WMzvufu2.net]
前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/

2 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:42:10.92 ID:WMzvufu2.net]
全スレ159だったわ
タイトルだけ間違えた

3 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:46:23.30 ID:wykOop5a.net]
乙です。

4 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:50:45.87 ID:xDiQzMrD.net]
おつ

5 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:04:13.20 ID:1joR/OE7.net]
>>2
どんまい、乙

6 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:12:06 ID:pOJAVr49.net]
グローバル変数と静的変数は
・書き換えられうる場合は排他制御が必須
・初期化のみの場合でもその初期化の排他制御が必須
・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される

7 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 09:23:58.05 ID:xDiQzMrD.net]
まとめると、main開始してからリソース用意して適当に渡せよってことよ
原則としてグローバル変数もシングルトンも避けたほうが良い

8 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 12:30:29.25 ID:hAkRYyug.net]
グローバル変数を避ければシングルトンがmain開始前に呼び出されること無いだろ。
グローバル変数だけ避ければいい。

9 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 12:37:29.85 ID:1+gF2L/G.net]
シングルトンなんてグローバル変数と同じ
避けたほうが良い

10 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 13:17:57.26 ID:JW7HV0lo.net]
シングルトンの中に書き換わる変数を持っていたらデータ競合が起こりうるよな



11 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:34:09.27 ID:wykOop5a.net]
>>9
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?

12 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 15:49:11.91 ID:rZhfm+p8.net]
>>11
それほんとにシングルトンのこと話してるの?
モジュール間の情報共有はシングルトンがないと無理って言ってるに等しい気がするけど

13 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 16:34:54.97 ID:WyYUxIA+.net]
>>11 「管理」が何のことを言ってるのかわからないけど、たぶんひきすうをつかえばいいと思うんだ。

14 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 16:52:25.27 ID:2FVuY2vb.net]
引数ってこういうことか?

struct singleton_t { };

singleton_t& get_singleton()
{
static singleton_t the_singleton;
return the_singleton;
}

void func1(singleton_t&);
singleton_t& func2();

int main()
{
func1(func2());
}

func2なんか使わずにfunc1の中でget_singletonを呼び出せば済むことだし
だったらthe_singletonをグローバルにするのと大差なくねって

15 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:46:49.16 ID:shXIYNIj.net]
>>12
>>9の主張「シングルトンとグローバル変数は避けたほうが良い」を受けての話ね。
当然グローバル変数も無しで、さらにシングルトン無しでどうやってグローバルなリソースを管理するのかな?と。

16 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:49:50.97 ID:RJmakPbV.net]
まあ引数で渡せばいいわけだが…

17 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:53:05.56 ID:PiHpabQE.net]
>>15
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?

18 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 19:55:09.07 ID:shXIYNIj.net]
>>16
それ何て純粋関数型プログラミング?

19 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:05:45.76 ID:gTMTzKSQ.net]
システム全体のリソースならグローバルでいいだろ
グローバル変数を導入するメリットの方が勝つから

なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ

20 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:07:59.29 ID:shXIYNIj.net]
>>19
システム全体じゃないリソースてどんなのあったっけ?



21 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:15:16.00 ID:RJmakPbV.net]
リソースって何を指してるんだろう…

22 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 20:19:31.51 ID:RJmakPbV.net]
まあ寿命がはっきりしないオブジェクトって嫌なもんだよ
わかってもらえるとは思わんけど

23 名前:デフォルトの名無しさん [2022/04/15(金) 20:45:25.17 ID:aidqFE7S.net]
前スレでクラス内部にinstanceを持たせて運用する事を質問した者です。

(注)前スレ:943
:ユニークポインタをシングルトンの様な仕様に置き換え
std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>();

static Hoge& GetInstance(){static Hoge temp;return temp;}

上記の仕様をさらに、
template <class T>
inline T Instance;
というテンプレートinstanceで使用できるようにアドバイスを頂き、その仕様に変更したところ、運用自体は問題ないのですが、コンストラクターの呼び出し位置がおかしい感じになってしまいますた。
インラインなのでコンパイル時?(inittermという関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。
これは明示的に回避できるのでしょうか?
また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか?
クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが……

度々申し訳ございますん。

24 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:08:51.51 ID:ZOmTtyVU.net]
実際に1個しか存在しないものはシングルトンの表現が合ってる
GPUとかな

25 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:22:11 ID:o8nSddd2.net]
inline変数は(MSVC16で確認する限り)1つの.dll内で同じ実体を共有する
dllをまたぐと別の実体になる

.hに書いてもリンク時に多重定義で怒られない

その言い方だとmainを呼び出す前の初期化処理で死んでる感じか

26 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:25:54 ID:lFYUjAWg.net]
シングルトンにしてもグローバル変数にしても排他制御が必要な点で同じだよな

27 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 21:31:24.48 ID:o8nSddd2.net]
コンストラクタ実体を含んだdllをロードする前にinline変数の初期化が走るというのが問題なら、
GetInstanceのテンプレート実装に逃げるか...

template<class T>
T&GetInstance(){static _back;return _back;}
int main(){
GetInstance<Hoge>().Func();
}


一応言っておくがデータをケチる目的のはずだからinline変数もGetInstanceテンプレートも「本物」のグローバル変数ではない

dllをまたいだら別の実体だ

28 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:14:55.32 ID:zMpb+zG7.net]
円周率みたいな定数ってどのライブラリのやつ使ってますか?

29 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 22:21:34.04 ID:0DFy/IGY.net]
<numbers>
C++20必須だが

30 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 23:15:01 ID:ZOmTtyVU.net]
古いC++ならe=exp(1.0)、π=6*asin(0.5)



31 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 06:56:47 ID:cvz/IVkr.net]
numbersって型変えた時ちゃんと直してくれるの?

32 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 16:00:35.82 ID:36AETGkW.net]
>>31
変数テンプレートだからこっちが型を指定する
auto x = std::numbers::pi_v<double>;

デフォはdouble
namespace std::numbers {
inline constexpr double pi = pi_v<double>;
}

33 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 17:48:06 ID:vYse36AQ.net]
なおpi_v<int>はゆとり歓喜の3ではなくis_floating_pointに阻まれる模様

34 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 19:53:49.89 ID:pxnrcQ3X.net]
未だに円周率3とか言ってるおじいちゃんいるのか・・・

35 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:06:23.56 ID:36AETGkW.net]
ジジイを馬鹿にするのは結構だが若いなりに何か引っさげているのか?
俺は8bit機がこれから黄金期に差し掛かるあたりでお前らのような立場だった
ハッタリではなく当時のトレンド引っさげてジジイたちの死角を突くことで今の地位を得たが
口だけ達者でこれから沈みゆくだけな連中なら全然羨ましくねえぜ

36 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:44:57.02 ID:YPs7FevK.net]
世代ってより情弱ぶりを揶揄されてるのに気付かないようじゃ虚しいな

37 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:48:37.77 ID:36AETGkW.net]
そもそも誰か円周率が3だなんて主張してるか?
情弱って攻撃用ワード使って脅しかけても説得力ねえとバカにしか見えねえんだけど

38 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:50:03.87 ID:9kZcaiqY.net]
>>34
ジジイ、ジジイか‥‥
それじゃ、お前はなんだ?この餓鬼が
俺はお前さんがこの世に落っこってくる前からバグ書いてるんだ

39 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 20:51:51.80 ID:fE0J8eTv.net]
先輩パネーっすね

40 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:23:19.58 ID:gltC/pf5.net]
どうしてもintのπを定義しようと思ったら、4や2ってわけにはいかないから3にするしかないと思う



41 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:35:43.96 ID:MoK8GTpb.net]
どうしても偶数のπを定義しようと思ったら、4にするしかないと思う。

42 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 21:45:10.61 ID:36AETGkW.net]
全否定はしていない
これならジジイを馬鹿にする資格があると示しているのに
応答なしか・・・誠に残念
煽られても好意的に対応したが無駄だったか

43 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 22:22:53.11 ID:IM94y/ni.net]
20年前のフェイクニュースネタではしゃぐなよ

44 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 22:52:39.15 ID:R//Q6DgO.net]
「状況によって『およそ 3』で計算すればよい」という指導は存在する。
小学生は有効精度の概念を知らんから
どういう場合にどの程度の概算でよいのか自分で判断できんのよ。
「およそ 3」って言ったら 3 で計算するのを正解だと思っちゃうやつが少なからず出てきてしまう。

現実的な精度との兼ね合いで言ったら 3.14 で教えておくのがおおよそ手ごろなんやろね。

45 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 23:10:11 ID:+A5PZLb9.net]
喜べお前ら
こいつを追加するだけでpi_v<int>が使えるようになるぞ

template<>struct std::is_floating_point<int>:std::true_type{};

46 名前:デフォルトの名無しさん mailto:sage [2022/04/16(土) 23:16:32.04 ID:NFUA2B25.net]
>>44
> 「状況によって『およそ 3』で計算すればよい」という指導は存在する。
指導が何を指してるのか知らんけどおよそなんてどこから出てきたんだよw
円周率3の話は 小学校学習指導要領 (平成元年3月)の下記の文言が独り歩きしたものだぞ

円周率としては3.14を用いるが、目的に応じて3を用いて処理できるよう配慮する必要がある。
https://www.mext.go.jp/a_menu/shotou/old-cs/1322329.htm

47 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 00:51:59.98 ID:B91+2VD/.net]
文脈的にたいして変わらない気もするけど
そんな違うものか?

48 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 03:44:03.45 ID:GgR0k3G6.net]
>>46
3.14だっておよそでしかない
およそ3で全然問題ないと思うね。
それより
1.6+2.4 = 4.0 と答えたら減点するアホ文系教師を文科省はなんで放置するのかね?
掛ける順番とかな。工数とかシランだろな多分
単位とかでもあほ文系小学校教師が理解してるとは到底思えない

49 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 08:47:30.67 ID:+WDep4l2.net]
>>48
小学校の先生が悪いんじゃない
小学校の先生を指導監督する文部省の官僚に問題があるとおもいますよ、ハノンQZ

50 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 10:32:47.71 ID:1NqFVDwl.net]
>>46
そこだけ見て「ゆとりも3.14で教わってる」って誤解されてるけど
一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
最初に「円周率とは」で一度3.14と教えた後の計算問題は全部3でやるしかなかった



51 名前:デフォルトの名無しさん [2022/04/17(日) 10:40:02.85 ID:bm11jv7N.net]
算数教育を破壊された影響は凄まじいな
マスゴミの煽動記事みて何人に1人の奇病なのかもわからないバカばっかりになっちまった

52 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:00:54.26 ID:xNW3vj+F.net]
現実には3で十分なわけよ
わずか数%の違いしかなく困らない
どうしても必要なら3.1でいい
これならわずか1%強の違いしかない
逆に工業で必要とする時は3.14でも足りないこともある
つまり3.14にこだわっているやつこそバカであると断言できる

53 名前:デフォルトの名無しさん [2022/04/17(日) 11:22:48.55 ID:RqkDCOAY.net]
コンピュータの場合、累積する誤差を

54 名前:少なくするよう定数を求めるのが最も重要なわけで。
統計的に3.17がπとして相応しいことがわかっています。
[]
[ここ壊れてます]

55 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:27:42.82 ID:9gjwfasM.net]
そら分かる子はいいよ
ほっといても算数なんてすぐ分かるやろ
数というもんの抽象性も理解できるし
かける順番にこだわることのアホさも自分で分かるやろ
でも
ひとクラス何十人のうちの算数分からん子
知能指数もボーダーの子
発達障害の子
その子らになんとかして分かってもらおうとすると
あの手この手でいろいろやってみるんやろな

56 名前:デフォルトの名無しさん [2022/04/17(日) 11:29:26.25 ID:RqkDCOAY.net]
共産主義じゃないんだから馬鹿な子は馬鹿な大人に育てば良い。
みんな違ってみんな良い。

57 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:30:31.73 ID:n4FXzdR7.net]
>>50
> 一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
だからそれもフェイクだっつーのw

(1)内容の「A数と計算」の(3)及び(4)については、乗数や除数が3位数である場合の指導は、2位数までの考え方を基にして児童に考え出させるようにするとともに、複雑な計算を避けるものとする。

だからこれに従うと円周率は3.1となるはず
これと上に書いた「目的に応じて3で計算」を(多分わざと混ぜて)某学習塾が
『ウッソー!?円の面積を求める公式 半径×半径×3!?』
『円周率を3.14ではなく、「およそ3」として円の求積計算を行います』
って広告打ったのが元凶と言われてる

58 名前:デフォルトの名無しさん [2022/04/17(日) 11:34:11 ID:RqkDCOAY.net]
円周率なんて生きてく上で必要ない。

59 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 11:50:12.40 ID:0uPuuShy.net]
なんのスレやねん

60 名前:デフォルトの名無しさん [2022/04/17(日) 14:31:08.08 ID:gu8d6tY+.net]
お礼と報告が大変遅くなりましたがID:aidqFE7S でございます。
この度は有用なアドヴァイス大変ありがたく承っております。

>>25
mainで走らせている実処理の前に、インライン変数のコンストラクタが起動しているので、リンカ?の際に記述と同時に外部結合?させているのではないかとしか推察できませんでした……
質問が理解できていないかもしれないのですが東方初学者ですので何卒。

>>27
受け渡しを省略したいという助平心でございます……
この記述で動作確認しました。
ありがとうございます!


テンプレートは食わず嫌いでしたが、使ってみると奥深いものですね。
関数定義にstatic T& Instance();と記述したらちゃんと内部結合?になっていました。凄い。

本物のグローバル変数とはdllを跨いでも使える変数なのでしょうか?
dellについて少し調べたのですがよくわかりませんでした。
クラス内部の静的変数はプログラムのどこからでも一位だと思っていましたが、外部結合のstaticは役割が違うのかしら。
もうちょっと調べてみます。
ありがとうござまいした。



61 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 14:39:47.64 ID:smuc31S1.net]
>>59
使えるよ、シンボルが見えるなら。
でも疎結合の方が絶対に良いので使わんほうがいいよ

62 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:27:41 ID:98II7f1E.net]
試したことないけどあれって全く関係ないdllからアドレス指定して値書き換えたり出来るの?

63 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 15:35:49.78 ID:smuc31S1.net]
リンクできてれば大丈夫よ
マネージドなやつが混ざってたらやらん方がええかもね

64 名前:デフォルトの名無しさん mailto:sage [2022/04/17(日) 16:23:54 ID:wFJvf5tq.net]
このスレ永久に同じ奴の自演でループしてるな
いつも同じ間違いで止まってるし

65 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 00:21:25.50 ID:6Qt778/v.net]
msvcのstd::lerp妙に遅かったから実装見たらめっちゃ厳重に引数チェックしてた
秒間何億回も呼び出す用途想定してないのか実装がまずいのか…とりあえず自分で書き直したわ

66 名前:デフォルトの名無しさん [2022/04/18(月) 07:14:50 ID:t3NwdXGg.net]
デバッグビルド?

67 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 07:52:49.52 ID:wKhqv1yX.net]
引数が有限でない場合の処理が入ってるからだろ
そもそもそんなものを使おうとする方がどうかしてる

68 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 08:47:21.12 ID:UwAS9GUd.net]
どんなチェックするとそんな負担になるの?

69 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:07:36 ID:Mq4dF/46.net]
場合分けはしているが、仕様に対して過不足ない実装だと思う。
https://github.com/microsoft/STL/blob/472161105d596192194d4715ccad307c6c163b4a/stl/inc/cmath#L1234-L1326

70 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:18:05.41 ID:Dpn9nQkn.net]
>>68
明らかに無駄だな
無チェックな関数を提供すべき

チェック不要な自明な使い方で速く動くことがあるべき姿
もし必要ならば自分でチェックすれば良いしチェック用関数を提供してもよい



71 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:44:52.69 ID:Mq4dF/46.net]
>>69
どれが (言語仕様上) 必要ない部分なのか具体的に示して。 俺には見つけられない。
それとも言語仕様が過剰であるという意味?

72 名前:デフォルトの名無しさん [2022/04/18(月) 09:53:11 ID:t3NwdXGg.net]
配列の範囲チェックと似たような話だろ

73 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 09:56:20 ID:OY9HJtti.net]
一般的に渡ってきた引数に対してチェックをせず処理する関数と厳重にチェックしてから処理する関数の二つを提供すればいいんじゃない?
もちろん後者はチェックしてから前者を呼び出すことになる
チェック不要が自明な時や何度も呼び出す時は前者で十分

74 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 10:05:07 ID:s/nYZOWf.net]
しかしニッチな機能だね
使うときは使うんだろうけど、これをあえて標準で用意するのは不思議

75 名前:デフォルトの名無しさん [2022/04/18(月) 10:06:44 ID:t3NwdXGg.net]
スクロールバーやプログレスバーで使いそう
過去にそのあたりのコード書いた当時あったらなって

76 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 10:30:18.10 ID:Mq4dF/46.net]
>>72
一般論としてはそうだが、論点はそこじゃない。
MSVC の std::lerp は定義域のチェックをやっていない。
なので >>69 の言う「チェック」は引数の妥当性のチェックのことではない。

77 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 11:30:20.45 ID:wKhqv1yX.net]
>>73
たいていの用途で必要なのは
const auto _Candidate = _ArgA + _ArgT * (_ArgB - _ArgA);
だけだからなぁ
誰がなんのためにこれを入れようと思ったのかよくわからんね

78 名前:デフォルトの名無しさん [2022/04/18(月) 12:37:29.31 ID:s8zWy/Nc.net]
using L=numeric_limits<double>;
a=L::max();b=L::lowest();

この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ

79 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 16:42:06.25 ID:6Qt778/v.net]
>>76
その式の形だとFMA命令に最適化されて良さそうだな

80 名前:デフォルトの名無しさん mailto:sage [2022/04/18(月) 17:19:17.33 ID:pd6PCcNf.net]
そもそも何億回も呼び出すなら<math>のfma(...)使うんじゃねえの
<cmath>はどんな引数つっこまれても何とか対処しなきゃならんのが絶対条件



81 名前:デフォルトの名無しさん [2022/04/18(月) 19:27:11.79 ID:DmcgzGUS.net]
using L=numeric_limits<double>;
a=L::max();b=L::lowest();

この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ

82 名前:デフォルトの名無しさん [2022/04/18(月) 20:05:50.33 ID:t3NwdXGg.net]
>>79
sqrt(-1.0)でcomplex返さにゃならんの?

83 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 04:23:27 ID:M6r3Rc52.net]
nanだのinfだの>>81だのをグチャグチャとチェックしたがる奴は無能
最初からそういうのが発生しないように計算するべき

84 名前:デフォルトの名無しさん [2022/04/19(火) 06:18:55.90 ID:0L/+n52g.net]
ゼロ除算とかね

85 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 14:44:51.44 ID:0UVfIqO/.net]
libc遅いだの愚痴りながら低レイヤーのコード書いてる時が正直一番楽しい

86 名前:デフォルトの名無しさん [2022/04/19(火) 14:50:47.69 ID:0L/+n52g.net]
人によるけどね
俺もマシン寄りのところが好き

87 名前:デフォルトの名無しさん mailto:sage [2022/04/19(火) 23:13:42.68 ID:fQcWHs5l.net]
MC++Dが20年前に発売されたってすげーな
アンドレイって天才だろ

88 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 19:24:03.82 ID:q+GeEjNV.net]
移住して快適な掲示板

NEXT2ch
3ch
45ch
明和水産
  
などへ

89 名前:デフォルトの名無しさん [2022/04/20(水) 20:22:28.34 ID:Cwlkz3kl.net]
二度と帰ってくるなよ

90 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 21:01:40.29 ID:q+GeEjNV.net]
居座るなら二度と文句言うなよ



91 名前:デフォルトの名無しさん mailto:sage [2022/04/20(水) 22:15:36.38 ID:4qIYThBV.net]
>>89
早速帰ってきてて草

92 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 08:12:05.34 ID:lT6JRJu8.net]
今どき戻り値intでエラーコードとか使うなよCの書き方じゃねぇかとか思ってた
だけどC++17のvariantでエラーコード返したり、optional使ってエラー表現してるコードを見てちょっと感心した
しかしとはいえこういうやり方と例外ぶん投げるやり方ってどっちがいいんだろう?ググっても割りと論争あってよくわからんかった

93 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 08:41:18.15 ID:uyGzUV2B.net]
>>91
制御フローを変更する必要がある場合は例外、それ以外(エラーもフローの一部の時)はoptionalでいいんじゃない?
例外は性能ペナルティーあるし、あんまり使うものじゃないと思うわ。

例えばメモリ確保失敗とかはプログラムの続行が難しいから、安全に終了するメモリ異常時の終了フローに移行できるよう例外を使うといいかと。

94 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:00:35.99 ID:9qc6sZDy.net]
一部で悪名高い例外はマルチスレッドでこそ重宝すると思うんだが

95 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:09:09 ID:3fppYdMF.net]
例外はやばいエラーと普通のエラーを分けて欲しいわ
後者はあんまり遠くへ飛ばんでほしい

96 名前:デフォルトの名無しさん [2022/04/21(木) 09:18:47.88 ID:TFObbQ1T.net]
異常系は例外、準正常系はエラー
という方針がええな

97 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 09:50:55 ID:uYH/mfeQ.net]
ここだけの話ちゃんとした例外処理書かれたコード読んだ事がない

98 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:09:48 ID:Ex423fK8.net]
例外って、移行の処理を全く出来なくね
try{
a();
b();
c();
}
catch(...)
{
}

a()がコケても、何がしかの条件をかえてb()いこうを実行したいときなんて不便
try tryなんてやりだしたら、各関数の戻り値をifで判断しているのと同じだし

99 名前:デフォルトの名無しさん [2022/04/21(木) 11:15:18 ID:Nb12Wot+.net]
言い出したらキリないからだろ
a()がコケたあとC()から再開とか無数にあるから
try {
a();
b();
c();
}
catch(std::exception& e)
{
if(dynamic_cast<f*>(&e))
{
if(dynamic_cast<g*>(&e))
{
b();
}
c();
}
}

100 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:17:35 ID:9+GFB0OX.net]
例外処理でどこまでカバーするかってのは初期には色々と検討されてる。
でも結局のところ「あきらめて終わる」「条件を変えてやり直しする」が圧倒的多数で
その他は言語機能としてサポートする必要ないレベルのレアケースだと判断された。

>>97
そういう場合は諦めて try をネストしたり連鎖したりしてなんとかしろってことだ。
少なくとも言語仕様をより複雑にするほどではない。



101 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:31:04 ID:3fppYdMF.net]
>>97
まあ分岐じゃなくて脱出を目的にするのが筋で、そういう制御はしない
王道ルートを一本バシッと決めないと

102 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:51:54.97 ID:Ex423fK8.net]
>>100
それなら
if(!a()) goto ERROR;
でよくね

103 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:56:00.06 ID:Ex423fK8.net]
>>96
つboost

104 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 11:58:33.22 ID:cKs9hG6Z.net]
>>98
やらねえよ
a()が例外出したらcatchしてboolなりint返してa()からやり直しだ

105 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 12:08:19.70 ID:1fqzAB87.net]
例外そのものが結構重たい処理だから
発生頻度が高いものでは使いたくない

106 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 12:50:04.39 ID:sNS+foI5.net]
GoやRustなど最近のプログラミング言語は例外がないね
代わりに多値やoptional/variant相当でエラーを返す

107 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 15:46:22.58 ID:Ex423fK8.net]
>>104
例外機構自体は重くないよ
発生時にcatchするまでが規定できないからRTOSなどでは使いにくいってだけ

その手のプログラムをしている人なんてそう多くないなから実際は気にする必要はない

108 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 15:56:00.29 ID:QxqybM0K.net]
基本的にtry catchは使わない
それを守るだけで改善できる

109 名前:デフォルトの名無しさん [2022/04/21(木) 17:14:16.48 ID:Nb12Wot+.net]
まあね、正直<setjmp.h>でええやんと思うことはある
しかし標準ライブラリがtry catch前提で作られているので
それを使う限りは仕方がない

longjmpの第2引数をポインタに写像すれば
そこからdynamic_castで場合分けもできるんだが
いざ自前でやるとなると標準ルールが欲しくなる

110 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:26:35 ID:3fppYdMF.net]
longjmpも大概だわ



111 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:30:09.55 ID:9+GFB0OX.net]
単に大域脱出するだけなら setjmp で良いが、
例外を投げたら途中にあるオブジェクトのデストラクタを呼んでちゃんと後始末してくれるってのが良いところなわけだろ。
そんで同等のことを setjmp でやろうとしたら実行コストが大きいってのは sjlj で凝りてるだろ。

大域脱出を使わないってのを徹底するならそれはそれでアリだと思うんだが、
半端に例外っぽいものを作るくらいなら素直に例外を使ったほうがいいわ……。

112 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:43:25.69 ID:Dvrv0zRB.net]
dynamic_castなんてゴミより例外使うやろ

113 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:43:55.51 ID:vSoU0DUY.net]
例外を使わずに普通に代数的データ型でエラーを返せば良い
そのためにoptionalやvariantがある

114 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:44:34.43 ID:Hotp0qqb.net]
例外が嫌われる原因は、はるか遠くのスナイパーに即死させられるからだよ
ある前提ならどこにスナイパーがいてもいいように書く必要があって、そのためには地下の穴を掘り進めて絶対地上に出ないなどの策が必要になる

115 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 17:53:06.42 ID:uYH/mfeQ.net]
いや単純に例外がシステムコールだからだろ
動的メモリ確保然りmutexロック然り
意味不明な例え話は必要ない

116 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:07:39 ID:3fppYdMF.net]
pythonの例外は割と好きだわ
c++でチームでやってるときは使わんほうがまあ無難

117 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:38:56.67 ID:Hotp0qqb.net]
>>114
君が経験不足なだけ

118 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:40:53.59 ID:/MI4h9k1.net]
え、C++の例外がシステムコールってどういうこと?なんか関係あるの?

119 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:45:27.70 ID:9qc6sZDy.net]
キャッチオール規制

120 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:53:33.55 ID:Ex423fK8.net]
>>117
びっくりするくらいC++の知識ない奴がいるよな
たんにネットとか過去の案件からコピペしただけで
そのコードがどういう意味なのかも分からないなんてバカが打ちの会社にいるわ



121 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 18:59:53.52 ID:uYH/mfeQ.net]
煽れば1から100まで全部説明して貰えると思ってるんだろう

122 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:06:54.50 ID:3fppYdMF.net]
シグナル的な話かね

123 名前:デフォルトの名無しさん [2022/04/21(木) 19:07:51.99 ID:5bVBNknH.net]
例外のどこがシステムコールなんだよw
笑わせんなw

124 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:29:12.31 ID:Hotp0qqb.net]
経験不足もココまで来ると哀れだな
CPUの例外とかシグナルをC++の例外としてあげることはあるけど、throwやtry/catchにシステムコールは関係ないよ
またsetjmp, longjmpをシステムコールと思ったのかもしれないけど、これらはCの標準関数だよ

125 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:38:44.45 ID:dzuJ6upO.net]
>>123
>throwやtry/catchにシステムコールは関係ない
sjlj だけが例外の実装ではないのでは?win32api なら SEH とか

126 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:40:56.19 ID:XLa0Reo3.net]
生娘が多いスレですね

127 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:49:07.82 ID:ylgd21Wg.net]
GoやRustのように例外のないプログラミング言語もあるように
例外は各言語内の単なる制御の一手法にすぎない
そこにシステムコールというOSの呼び出しは出てこない

128 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 19:53:37.32 ID:3fppYdMF.net]
実装としてそれを期待することはあるんじゃねえかなあ

129 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 20:23:53.47 ID:dzuJ6upO.net]
>>126
>>124

130 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 21:03:10.33 ID:c/plR3QG.net]
少なくともbsd系やlinux系などで例外にシステムコールは一切出てこないな
だから例外とシステムコールは無関係であると断言できる

もしシステムコールがからむ環境があったとしてもそれはその環境独自の問題
C++やその他の言語の例外とシステムコールは無関係



131 名前:デフォルトの名無しさん [2022/04/21(木) 21:10:18.22 ID:5bVBNknH.net]
>>128
ISO標準の例外処理はどれかわかるよね?

132 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 21:19:47.06 ID:oUL8Hy4A.net]
>>124
SEHとC++例外は別物だしMSはC++ならC++例外使えって言ってる
https://docs.microsoft.com/ja-jp/cpp/cpp/structured-exception-handling-c-cpp
SEHは基本的にハードエラーを補足するために使うものだぞ

133 名前:デフォルトの名無しさん mailto:sage [2022/04/21(木) 23:52:24.64 ID:UxG5J1QB.net]
SEHは別にハードエラーに限ったもんじゃないが。
基本的にカーネル側で発生する例外一般であって、DLL周りで発生するのはよく見かけると思う。

134 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 00:45:41.32 ID:a+ReXgZI.net]
例外の話しがなんで、SEHの話しになってんだ?

例外って知らないのか?
うちの会社にもいるわ、デバッガに制御が移っただけなのに
例外が〜なんて言ってるバカ

135 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 01:10:17.53 ID:+Hg7lfxg.net]
>>133
それは、例外の実装が sjlj しかないという馬鹿がしつこいからだよ

136 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 01:20:20.42 ID:fqEw0n+a.net]
C++の例外try throw catchの仕様は
システムコールと一切無関係

137 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 01:27:09.01 ID:OAazuPnp.net]
>>135
そんなに必死になるのはなんか理由があんの?

138 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 01:42:30.48 ID:BvFOL7Y8.net]
>>134
それ以外に何かあるの?
他では不可能

139 名前:蟻人間 mailto:sage [2022/04/22(金) 01:53:53.59 ID:BJPJNuGw.net]
SEHの訳語が構造化例外ハンドリングだから、例外の一種と言えるはずだ。

140 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 02:07:46.66 ID:CMih2sNI.net]
C++にはSEHとやら言うものは存在しないし関係ないんじゃね?



141 名前:蟻人間 mailto:sage [2022/04/22(金) 02:36:51.42 ID:BJPJNuGw.net]
いや、ゼロ除算やヌルポインタアクセスなどで素朴なC/C++でもSEHが発生することはあり得る。

142 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 02:40:55.00 ID:coLCpeOs.net]
お前ら全員、り地域指定な

143 名前:蟻人間 mailto:sage [2022/04/22(金) 02:51:22.19 ID:BJPJNuGw.net]
dangerous yofukashi

144 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 05:33:50 ID:h+Fap4CC.net]
>>132
カーネルで発生してるわけじゃないだろ
よく知らないのに絡んでくるなよ...

>>138,140
>>91から始まる話にSEHは関係ない

145 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 06:10:41 ID:8e+rCGWk.net]
>>140
C++にはSEHというものはありませんし発生することもありません
勉強して出直してきてください
それまでこのスレに書き込み禁止

146 名前:デフォルトの名無しさん [2022/04/22(金) 06:18:31.32 ID:Y1J+20vl.net]
VC6の頃はゼロ除算をcatch(...)で捕獲できたな

147 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 06:40:52.54 ID:/ALeatGN.net]
ゼロ除算はSIGFPEが発生するから捕捉したかったらsignalでハンドリング関数を指定
例外は全く関係ない

148 名前:デフォルトの名無しさん [2022/04/22(金) 06:45:33.62 ID:Y1J+20vl.net]
だから昔話だってば
あり得んことが目の前で起きたから
よく憶えてるんだよ

149 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 06:50:31.85 ID:HuED6Bkz.net]
どっかの会社の独自拡張だろ
C++の話じゃないな

150 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 06:52:40.42 ID:e55dh4X+.net]
蟻人間ってちょいちょい見かけるけどこういうでたらめなやつだったのね



151 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:02:53.87 ID:kPq/rze/.net]
>>137
>>124
win32api なら SEH, 最近は gcc も SEH に置き換わっているときく

152 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:03:35.95 ID:kPq/rze/.net]
>>139
それをいうなら sjlj だって同じ
今の流れは例外のインプリメントの話題なのでは?

153 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:04:28.01 ID:kPq/rze/.net]
>>144
実装方法の話でしょ?sjlj だけ認めて SEH は認めないなんて矛盾してませんか?

154 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:21:51.39 ID:poIoQlGh.net]
どこかの会社の独自拡張の話をC++の機能だと思い込んでC++スレに持ち込むのはやめましょう
以下の話はここでOKです
setjmp/longjmpはC/C++の標準機能です
signalもC/C++の標準機能です
try/throw/catchはC++の標準構文です

155 名前:デフォルトの名無しさん [2022/04/22(金) 07:37:43.45 ID:Y1J+20vl.net]
ISO/IEC14882の範疇から一歩たりとも出るなってのは無理だろ

156 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:45:58.57 ID:Bpn1KdM3.net]
>>154
特定の企業によるその環境下での独自な拡張について
そうであることを認識できず区別できずにC++の機能だと勘違いしてここに書き込むのは完全にアウト

157 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:48:49.99 ID:zZkpCShI.net]
>>151
setjmpとlongjmpはC標準として参照してるから存在するぞ

158 名前:デフォルトの名無しさん [2022/04/22(金) 07:50:39.14 ID:Y1J+20vl.net]
書き込んだ本人に悪意がないのにアウトっておまえさんが何かペナルティを課すのか?
普通にそれは違うよと教えてやるのは全然スレ違いじゃないだろ

159 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 07:59:20.08 ID:0Q7NQ1lp.net]
発端はこれだよな

>>114
> いや単純に例外がシステムコールだからだろ

違うと皆から指摘されてもここまで延々と続けていて悪質

160 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:29:32.0 ]
[ここ壊れてます]



161 名前:1 ID:OAazuPnp.net mailto: >>158
そいつがずっと書いてるとおもってんの?
[]
[ここ壊れてます]

162 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:34:38 ID:OmhkX7bc.net]
>>159
別人だとしても同罪
C++と関係ない話をずっと続けている悪人

163 名前:デフォルトの名無しさん [2022/04/22(金) 08:37:18 ID:Y1J+20vl.net]
何かさ、C++の実用場面を1つも知らない世間知らずが
自分のためのシェルターを要求してるみたいだな

そんなの当人含め誰の何の役にも立たんのに

164 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:48:05.34 ID:u/m8ttCW.net]
分かりやすい例え
もしAppleによる独自拡張の話をC++の機能だと思い込んでここで延々と話を続ける人たちがいたら
迷惑だからApple方面のスレでやれ!と怒られるだろ
それと同じことが今ここで起きている

165 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:48:50.34 ID:OAazuPnp.net]
>>160
罪の意識で死にたくなったってことですか?
止めないですよ

166 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:50:00.21 ID:OAazuPnp.net]
>>162
親も早死にしたんですか?

167 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 08:59:58.70 ID:FOSKJcjg.net]
>>141
ここはり地域w

168 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 09:14:12.23 ID:oMnlDCaF.net]
自治厨が延々暴れ続けるのも迷惑なんだが

169 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 09:20:29.23 ID:LDoEF43J.net]
SEHってJavaなど色んな言語でMicrosoftが勝手に拡張してるやつだぜ
だからC++の話ではないとまともな人ならわかるはず

170 名前:デフォルトの名無しさん [2022/04/22(金) 09:56:02.95 ID:kaZmiYOz.net]
SEHってC言語で実装されているWin32API周辺開発でも例外機構を使えるようにしたものじゃないの?
例外機構が備わってるC++でSEHの出番はないと思うけど



171 名前:デフォルトの名無しさん [2022/04/22(金) 10:46:47 ID:Y1J+20vl.net]
一言注意するのは構わんが
同調しないやつがいるからって
言い負かすまでしつこくするのは迷惑だぞ

172 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 11:21:59.53 ID:HAxRxWew.net]
マイクロソフトの解説

構造化例外処理 (SEH) は、ハードウェア障害などの特定の例外コードの状況を適切に処理するための、C に対する Microsoft の拡張機能です。 Windows と Microsoft C++ は SEH をサポートしていますが、ISO 標準の c++ 例外処理を使用することをお勧めします。 これにより、コードの移植性と柔軟性が向上します。 ただし、既存のコードまたは特定の種類のプログラムを維持するために、SEH を使用する必要がある場合もあります。

Microsoft 固有:

173 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 11:33:57 ID:OAazuPnp.net]
>>170
親は何歳で死んだん?

174 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 11:35:01 ID:oMnlDCaF.net]
自分は正義の味方のつもりでも
周りにとって迷惑なだけなのは
まるでスッパマンだな

175 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 11:38:47 ID:udIu01iV.net]
勘違いしていたと謝罪すりゃ済むのに逆切れで死の書き込みを繰り返してるやつヤバいな

176 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 11:54:33.77 ID:OAazuPnp.net]
>>173
相手が一人という前提なのは、数で勝ってると思い込みたいから?
死んだ親もそういう人だったん?

177 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:01:35.35 ID:P/jSiaWo.net]
>>174
どこにも一人と書かれていないし前提もないようにみえるけど幻覚が見えているの?

178 名前:蟻人間 mailto:sage [2022/04/22(金) 12:23:58.18 ID:BJPJNuGw.net]
大阪弁も日本語だろ。
Win32 C++コンパイラではゼロ除算で浮動小数点例外が発生することも知らんとは。
まさかVirtual C++がC++コンパイラではないと言いたいほさ。

179 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:25:23.61 ID:oJU3aoBf.net]
Virtual C++?

180 名前:蟻人間 mailto:sage [2022/04/22(金) 12:31:17.16 ID:BJPJNuGw.net]
Visual C++ね。



181 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:33:13.97 ID:6yZvfKA9.net]
ゼロかどうか直前に調べてゼロならthrowすることでどんなコンパイラでもゼロ除算の時に例外を投げることが可能です
つまりコンパイラの問題ではありません
そして誰でもそうすることが出来るというだけでありC++の仕様や機能ではありません

182 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:38:40.45 ID:wri6W8iQ.net]
>>176

構造化例外処理 (SEH) は……C に対する Microsoft の拡張機能です。

C++でも標準でも無いな。
いつまでスレ違い粘着しているんだよ。

183 名前:蟻人間 mailto:sage [2022/04/22(金) 12:38:40.63 ID:BJPJNuGw.net]
ゼロ除算の処理はマシン依存。
だから、コンパイラは構造化例外を発生させてもいい。
これも標準C++に含まれる。

184 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:39:26.59 ID:T4tFP8Jg.net]
死の書き込みなんか誰もしてねえじゃん
どっちが必死なんだかw

185 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:41:11.68 ID:wri6W8iQ.net]
???

186 名前:デフォルトの名無しさん [2022/04/22(金) 12:56:04.30 ID:XRzGPZH0.net]
整数型のゼロ除算は未定義動作じゃろ...
うちの環境(Ubuntu20.04 gcc11)なら不動小数点例外のシグナルが飛ぶが

未定義動作なので絶対に何かが起きるようなことを期待してはいけない

187 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 12:56:17.75 ID:NXrQ3EcE.net]
>>181
構造化例外なんてものはC++標準に含まれないよ

188 名前:蟻人間 mailto:sage [2022/04/22(金) 13:11:18.22 ID:BJPJNuGw.net]
関西弁は標準日本語ではないが、日本語である。
この辺が難しい話なんだ。

「〜やで」「〜でんねん」と言う言い回しは、標準日本語にはないが日本語ではないと言い切るのは乱暴な話だ。

189 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:16:36.73 ID:T4tFP8Jg.net]
#pragma onceの話も方言だからダメとか
付き合ってらんね

190 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:19:13.76 ID:oJU3aoBf.net]
方言だから〜言語標準規格に無いから〜って
そもそも例外がどのように内部実装されているかなんて完全に処理系依存であって
そんなことはわかった上で話してるんじゃないの

あと自分もMSVCのC++例外はSEHの機構を利用して実装されていると聞いたことがある
がググっても公式っぽいのは見当たらないので気のせいかもしれん
そもそも例外がどのように内部実装されているかなんて処理系依存で
そんなことはわかった上で話してるんじゃないの

あと自分もMSVCのC++例外はSEHの機構を利用して実装されていると聞いたことがある
がググっても公式っぽいのは見当たらないので気のせいかもしれん



191 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:19:56.10 ID:oJU3aoBf.net]
なんか変な感じになったごめん

192 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:31:32.71 ID:nu5oKQCU.net]
今回の話は>>91から始まる「正常値でない時にvariantやoptionalを返すのと、(try/catchの)例外を投げる(throw)のと、どちらが好ましいか?」という話の始まり

それに対して「例外はコストが余分にかかる」「例外だと複数返ってくる時の扱いやリカバリ等が難しくなる」という話の流れ

その話に対して例外はシステムコールだとか
SEHがどうのこうのだとか
C++と無関係な話をして荒らしている人たちがいる

193 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:43:24.93 ID:0v5EEVUK.net]
>>190
悔しいのう

194 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 13:51:45.19 ID:XCe7UK1Z.net]
SEHがどんな実装で作られていようが魔法はないのだからコストがかかる要因であることは変わりない
したがってこの議論でSEHを持ち出すのは無意味で愚かな行為ではないかな

195 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:06:30 ID:CNGbmw+5.net]
>>158>>160みたいにIDすら理解してないアホが荒らしてるように見えるが
>>160は指摘されても開き直ってるしな

196 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/22(金) 14:08:07 ID:BJPJNuGw.net]
♪実装が終わって〜 僕らは入った〜

♪実装を知らない〜 コーダーたち〜さ〜

197 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:14:37.92 ID:coLCpeOs.net]
り地域のくせになまいきだぞ

198 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:16:10.48 ID:qlNSP7lI.net]
無関係な話をいつまでも引っ張るWindows君が悪いと思います。

199 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:17:32.04 ID:Dj0BOi0U.net]
蟻人間、キチガイのフリして矛先をそらそうとしてる?

200 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:39:51.55 ID:fMqKBQE/.net]
全く無関係な話でもない
見るからに自分が入れない話だからやめろだろ

そういう時は黙ってるか別な話題振ればいいのに
いちいち揉め事にしちまう幼稚なやつ



201 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:40:25.86 ID:7P+21PvJ.net]
>>123書いて話

202 名前:終わると思って今見たらまだこの話が続いてることに驚き・・・
よほど恥ずかしかったんだな
ID変えてこんなに自演しちゃうなんて
[]
[ここ壊れてます]

203 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:53:14 ID:Hnq97RMZ.net]
正直、スマンカッタ
例外がシステムコールとか
ほんとすまんかった
単に知ったかしたかっただけで
こんなに大騒ぎになるとは思わなかった
謝罪してこれを訂正に代えさせてください
正直すまんかった
勉強になりました
例外はシステムコールじゃないです

204 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 14:58:45 ID:58eJLgfI.net]
>>188
>>170
Windows と Microsoft C++ は SEH をサポートしていますが、ISO 標準の c++ 例外処理を使用することをお勧めします。

MSですらSEHよりISO 標準の c++ 例外処理を推奨しているじゃないか。
いつまでもスレ違いをごちゃごちゃ言うなよ。

205 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:19:58.07 ID:0v5EEVUK.net]
実装、処理系について話さないと決めたのなら話さなけりゃいいのに

206 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:33:53.70 ID:vco82k5C.net]
元からOSやコンパイラの違いは関係ない話みたいよ

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話の始まり

だからSEHとか無関係なものを持ち出した人がちょっとおかしいわね

207 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 15:36:33.95 ID:fMqKBQE/.net]
>>201
標準でない話をするなというのがおまえさんの主張だったはず
それともMSが推奨するからという論点に変えなきゃ都合が悪くなったのか?

208 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 19:27:41.15 ID:muq3Mg9B.net]
>>204
なんか日本語不自由だな。
C++でも標準でもMS推奨ですら無いスレ違いの話に粘着するなよ。

209 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 19:48:46.17 ID:+Ag0wcTG.net]
推奨法と内部の実装は別の話では??

210 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 19:55:49.60 ID:/DhmZAjz.net]
内部の実装とやらでSEH使っている妄想はどうでもいいやろ
どのみちそれ自体の実装はどうなっているの?という話になる
魔法の方法なんて無いのだから途中の各関数毎にデストラクタを実行しながらスタック巻き戻す以外に手は無い



211 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 20:19:32.94 ID:g3buRrxh.net]
ここもレベルが下がったね…

212 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 20:49:34.04 ID:Hnq97RMZ.net]
         / ̄ ̄ ̄ ̄ ̄\
          |  おまえらも  |
   ∩_∩  |          .|
  (´ー`) <   暇な奴ら  .|
  (   )  |           .|
   | | |   |  だなぁ     |
  (___)__)   \_____/

213 名前:デフォルトの名無しさん [2022/04/22(金) 21:23:32.68 ID:Y1J+20vl.net]
>>205
ISO/IEC14882から一歩たりとも出るなと言う主張と
C++に関係ある話ならいいじゃんという主張は
平行線だな

勝手に言ってれば? 誰もおまえの鶴の一声に反応しねえけどw

214 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 21:29:04.26 ID:5k7+8+kc.net]
持ち出すことで意味があるならばもちろん構わないと思うけど
この今回の件でSEHを持ち出すことに意味あるのかな

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話

215 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 21:45:02.53 ID:wri6W8iQ.net]
>>210
そんな話はしていない。

SEHはC++でも標準でも無いWindowsローカルのプロプラ技術で、更には当のMSですらC++で使うことを推奨していないようなものなのに、「C++に関係ある話」とか言って無能を晒すなよ。

216 名前:デフォルトの名無しさん [2022/04/22(金) 21:52:01.01 ID:Y1J+20vl.net]
>>212
MSはC++で使うことを推奨していないんだよな?
C++で使うことをw

関係ある話じゃんwww

217 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:04:57.79 ID:86QhKiKT.net]
>>213
ばかなことはやめて建設的に行こうせ
元の>>211の議論でSEHを持ち出すことで何か有意義な展開が有るのか否か

218 名前:蟻人間 mailto:sage [2022/04/22(金) 22:11:14.70 ID:BJPJNuGw.net]
司会者を無視して議論の方向性を勝手に設定するというのが建設的じゃないんだよ。

219 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:13:35.43 ID:h+Fap4CC.net]
そもそもSEHはC言語で使うためのものだし...

構造化例外処理 (SEH) は、ハードウェア障害などの特定の例外コードの状況を適切に処理するための、C に対する Microsoft の拡張機能です。
https://docs.microsoft.com/ja-jp/cpp/cpp/structured-exception-handling-c-cpp?view=msvc-170

220 名前:蟻人間 mailto:sage [2022/04/22(金) 22:15:13.75 ID:BJPJNuGw.net]
CライクなVisual C++でもSEH



221 名前:使えるよ。 []
[ここ壊れてます]

222 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:16:17.57 ID:wri6W8iQ.net]
>>213
「MSはSEHをC++で使うことを推奨していない」みたいなクソを「C++と関係ある話」として話したいのか?
意味不明なことを言って無能を晒すなよ。

223 名前:蟻人間 mailto:sage [2022/04/22(金) 22:23:11.84 ID:BJPJNuGw.net]
「「日本政府は関西弁を国語で使うことを推奨していない」みたいな関西弁を「日本語と関係ある話」として話したいのか?
意味不明なことを言って無能を晒すなよ」

関西弁は日本語と関係あります。
関西弁をバリバリ使ってる現場はあります。
C++でもSEHをバリバリ使ってる現場はあります。
それは普通じゃない? 特殊環境を許容しない偏屈な野郎ですか?
議論を避けたいもぐりの詭弁ですね。

224 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:25:30.56 ID:a+ReXgZI.net]
例外の有益性云々よりも、会社ではその環境によっては使わないほうが無難
既存のプロジェクトでしか、ソースを触れなくて
hello worldすらかけない奴なんているし

この前もちょっと質問受けたから、サンプルを書いて送ったら、
これどうやってビルドするの?から始まった・・・

そんな奴に例外がどうとか言ってもな〜

225 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:27:28.43 ID:KvTzeQ4l.net]
>>211
例外の方がコストが高いしハンドリングもしにくいので例外の方が完敗との流れだった
そこへ意味なくSEHを持ってきても議論も結論も何ら変わらないのではないか

226 名前:蟻人間 mailto:sage [2022/04/22(金) 22:29:30.61 ID:BJPJNuGw.net]
https://github.com/katahiromz/Hello/blob/main/hello16/hello16.cpp

ほら見ろよ。モグリ。C++の拡張子.cppでSEHをバリバリ使ってるぜ。

227 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:34:27.64 ID:qbUdPk38.net]
>>222
main()しかないコードを唐突に持ち出してきて頭大丈夫かね??
コード読めない人?

228 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:37:06.57 ID:wri6W8iQ.net]
>>219
なら>>214に関連した話をしろよ。
SEHを持ち出すことで、>>211についてどういう有意義な話ができるのか?

SEHについては今までC++と関係の無いクソみたいな話しか繰り返していないだろ。

229 名前:蟻人間 mailto:sage [2022/04/22(金) 22:38:25.06 ID:BJPJNuGw.net]
>>223
貴様にもわかるよう、カンタンな例示をしたまでだ。
反論できなくなると人格攻撃か。業界全部を見てきたように「C++ではSEHは使えない。関係ない」なんて言うなよ。

230 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:41:57.59 ID:WSHOJJH7.net]
マイクロソフト公式で使わないことを推奨しているのに
蟻人間とかいう物体はそれを理解できないのかしら



231 名前:蟻人間 mailto:sage [2022/04/22(金) 22:43:24.19 ID:BJPJNuGw.net]
>>226
アホ。それは一般ユーザ向けの話で、OS内部では死ぬほど使われてるぜ。

232 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:48:37.18 ID:Iw7UiXr/.net]
今回の件でSEHを取り上げることに意味があるのかね?

> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話

233 名前:蟻人間 mailto:sage [2022/04/22(金) 22:50:11.36 ID:BJPJNuGw.net]
>>228
その議論は「実測しろ」で済む話。

234 名前:蟻人間 mailto:sage [2022/04/22(金) 22:52:46.51 ID:BJPJNuGw.net]
実装の分析を放棄するなら、実測しかないじゃねーか。

235 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:53:00.68 ID:+MX6gHfh.net]
>>229
あんさんアホなんやな
何をどうやって実測しまんねん

236 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 22:56:26.62 ID:gE/jtm5P.net]
例外機構はコストかかるしtry catchで扱いにくいから
最近の言語GoやRustなどではtry catchを廃止しちゃったほどだよ

237 名前:蟻人間 mailto:sage [2022/04/22(金) 22:58:31.59 ID:BJPJNuGw.net]
>>231
そんなん当たり前。世界中のパソコンを一箇所集めて、例外を使ってるすべてのコードをGitHubからダウンロードして、全コンパイラで試すと、一般的な答えが出るだろう。

だから具体的な環境と具体的なコードがないと議論自体が無意味だろう。

238 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:14:29.58 ID:dPkl4IXq.net]
実測なんかしなくてもtry/catchの準備が入る例外の方が遅いのは分かりきった話

239 名前:蟻人間 mailto:sage [2022/04/22(金) 23:14:59.45 ID:BJPJNuGw.net]
「男は卑怯」とか「血液型A型はまじめ」とか、統計上の母集団も不明なものを一般

240 名前:サして議論するのははっきり言ってめんどい。

一般化バカなんじゃねーの?

もっと具体的なこと。花を買うなどという具体的な処理を考えたら、そのコストの程度もわかるというもの。
[]
[ここ壊れてます]



241 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:17:04.04 ID:hyDwnnZt.net]
>>229
議論の仕方を知らない餓鬼かよ。

SEHを持ち出したのは>>124で、それに対して>>131という反論が来ているんだから、「SEHはC++例外の議論に有意義」と主張するならまず>131に対して反証しろよ。
それを無視して>>229とか>>233みたいな誤魔化しをするやつは、ろくに説明できない無能か相手を騙そうとする詐欺師のどちらかとしか言えんわ。

SEHはNGワード指定したほうが良さそうかね。

242 名前:蟻人間 mailto:sage [2022/04/22(金) 23:21:40.20 ID:BJPJNuGw.net]
C++例外がSEなんちゃらで実装されていたこともあった。概念としてはC++例外とSEなんちゃらは別物だが、実装としては排他的ではない。

243 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:35:03.38 ID:7/N/KhH6.net]
>>237
ソースを出せ
そもそもthrowを投げてcatchする仕組みにMicrosoftの独自拡張など不要
他の様々なOSではそんなものがなくても実装されて動いている

244 名前:蟻人間 mailto:sage [2022/04/22(金) 23:37:23.52 ID:BJPJNuGw.net]
例外にオーバーヘッドがあって遅いのはわかってる。アセンブリと実測から明らかだ。

245 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:41:51.93 ID:qu0GkJrX.net]
>>228
そのケースは明らかに例外を使わないほうが良い
一般的にも例外は可能な限り使わないこと

246 名前:蟻人間 mailto:sage [2022/04/22(金) 23:45:15.50 ID:BJPJNuGw.net]
>>238
ソース。
https://docs.microsoft.com/ja-jp/cpp/cpp/errors-and-exception-handling-modern-cpp?view=msvc-170
>Microsoft C++ コンパイラ (MSVC) では、C++ 例外が SEH 用に実装されています。

247 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:47:28.49 ID:a+ReXgZI.net]
msvcって使ってるところあるの?

248 名前:デフォルトの名無しさん mailto:sage [2022/04/22(金) 23:53:29.79 ID:BXakpDUE.net]
>>241
SEHで実装されているとは、書いてないじゃん

249 名前:蟻人間 mailto:sage [2022/04/23(土) 00:07:15.99 ID:IwDNjbNY.net]
>>243
https://twitter.com/kekyo2/status/1429983729062092810
MSVCのソースはハッキングしないとわからん。
(deleted an unsolicited ad)

250 名前:蟻人間 mailto:sage [2022/04/23(土) 00:13:13.27 ID:IwDNjbNY.net]
>>242
MSVCは現在のVisual C++のコンパイラと同じだよ。メチャクチャ使われてるよ。



251 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 00:15:14.42 ID:MPqhbUj7.net]
結局SEHで実装されているソース無し

252 名前:蟻人間 mailto:sage [2022/04/23(土) 00:16:54.58 ID:IwDNjbNY.net]
>>246
RaiseException関数はSEH機構の一部だから。

253 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 00:20:14.06 ID:pT174lS4.net]
>>241
それ /EHa があるよって話じゃね?

254 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 00:38:44.27 ID:xfOxaVue.net]
最近QZみないな
り地域に帰ったのか?

255 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 01:24:18 ID:SYxYtQka.net]
https://docs.microsoft.com/ja-jp/cpp/build/exception-handling-x64?view=msvc-170

これがSEHと同一のものであるかどうかは知りませんが

256 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 04:08:45.81 ID:9ogfm+bK.net]
>>234
「try/catchの準備が入る」なんて実装はもう廃れて最近のコンパイラには当てはまらないかと。

257 名前:デフォルトの名無しさん [2022/04/23(土) 06:09:11.45 ID:dPWgl1lf.net]
>>214
おまえさん個人にとって有意義でなくても
C++におけるSEHの話をしている人にとっては有意義なんだよ
だから話すんだよ

自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな

258 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 06:15:24.18 ID:nWwnCTH/.net]
キャッチオール!!

259 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 10:39:59.87 ID:8yvdC+t8.net]
SEHはマイクロソフトがC言語で例外を扱えるように独自拡張したもの
例外機構のあるC++では当然不要
だからマイクロソフトもC++ではSEHを使わないようにと公式に推奨している
ここC++スレでSEHを持ち出す人はバカ

260 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 10:49:10.48 ID:PaneGw8k.net]
>>254
お前がバカ



261 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:06:26.27 ID:BMKo0y1z.net]
まだsehの話しし

262 名前:てんかよ
ヤフーニュース見てみろよ、大変なことが起きているのに
おまえら暇だな
[]
[ここ壊れてます]

263 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:12:38.87 ID:AdmKZSgb.net]
>>256
どうせくだらんニュースばかり
毎日細かく追うのは無駄でアホ

264 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:27:56.93 ID:t0MIUzKt.net]
>>256
論点のすり替えすんなよ
頭わるいぞ

265 名前:ハノン mailto:sage [2022/04/23(土) 11:28:12.87 ID:F6Lb3Bw6.net]
荒れていますね、理想の雰囲気です…満足、満足

266 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:31:25.45 ID:nWwnCTH/.net]
日本最大のポータルサイトYahoo! JAPANのトップページのトップニュースがウクライナの前大統領ポロシェンコ氏の単独インタビューというご時世

267 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:32:03.41 ID:Q6AAdSV9.net]
>>259
不自然な登場の仕方のQZのキターwwww
お前が満足するということはム板にとっては好ましくない事態が起きてるってことだな

268 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:39:47.13 ID:mFywOFhI.net]
処理系の話禁止おじさんには狂気を感じました

269 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:41:12.76 ID:BMKo0y1z.net]
Baka bakas[300][1000][1000];

とかやるバカがいる会社なんかじゃ、例外云々の議論しても不毛だろ

270 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 11:44:49.33 ID:TiL0ZOsp.net]
こんなスレでヤフーニュースw
SEH持ち出すバカと同類やな



271 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 12:37:11.26 ID:nWwnCTH/.net]
Yahoo! JAPANトップページスクショ
https://pbs.twimg.com/media/FQ_8EFnUcAA9hjV?format=jpg&name=large

272 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 14:35:57.34 ID:BMKo0y1z.net]
さとみロストで世間は大騒ぎだぜ

273 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 14:40:10.04 ID:aTgXpsGk.net]
>>264
いやSEHはまだプログラムの話の範囲内だけど
ヤフーニュースの話をするのは完全なアホ

274 名前:蟻人間 mailto:sage [2022/04/23(土) 18:29:38.10 ID:51eUfy6p.net]
Win32 C/C++だとSEHじゃないとキャッチできない例外もある。

275 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 18:35:44.41 ID:CPVvM2UX.net]
>>268
そんな欠陥商品の話をされてもねえ
C++の問題ではなく欠陥商品の問題

276 名前:蟻人間 mailto:sage [2022/04/23(土) 18:43:16.03 ID:51eUfy6p.net]
>>269
ここは匿名掲示板だから許されるけど、実名だったら社会からボコボコにされるよ。気を付けようね。

277 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 18:51:11 ID:Jl8YckOx.net]
じつにトライしてますね

278 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/23(土) 19:15:23 ID:51eUfy6p.net]
CIAが最高レベルに指定する「ハッキングマニュアル」にアクセスできる国内外の攻撃者たちが匿名でソーシャルメディアを徘徊し、ターゲットを探している。生き残りたいならターゲットにならないことが肝要だ。

279 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 19:20:12 ID:rmv7gLku.net]
でも最新版ではC++の例外で正規に対応できてるんでしょ
ならば当時はある種の欠陥だったとも言えるのでは

280 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/23(土) 19:24:44 ID:51eUfy6p.net]
// ヌルポインタ参照。
char *p = NULL;
*p = 0; // ぶっ飛ぶ。

// ゼロ除算。
float a = 1;
a /= 0; // これもWin32だとぶっ飛ぶ。



281 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 19:29:13.41 ID:LGXHSjUH.net]
ゼロ除算はシグナルSIGFPEが発生
signal()でハンドリング関数を指定すれば良い
例外は全く関係ない

282 名前:蟻人間 mailto:sage [2022/04/23(土) 19:38:33.99 ID:51eUfy6p.net]
Win32では浮動小数ゼロ除算は構造化例外であり、
SetUnhandledExceptionFilterの
EXCEPTION_FLT_DIVIDE_BY_ZERO
でキャッチできる。シグナルはない(Cygwinを除く)。

283 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 19:53:40.19 ID:MFWNsjL4.net]
>>276
そんな気持ち

284 名前:悪い独自仕様にして何を考えてるんだろう
余分に負担のかかるプログラミングを強いられるデメリットしかない
[]
[ここ壊れてます]

285 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:01:38.15 ID:pT174lS4.net]
>>277
独自仕様なのは別にして、そんなに気持ち悪いかなぁ?
ゼロ除算を起こした処理の周辺で局所的に対処できるのはいいと思うんだが。

286 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:07:10.88 ID:7+1nJnMo.net]
>>267
人迷惑と言う意味で一緒だよ

287 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:10:26.67 ID:BMKo0y1z.net]
お前らいつまで、そんな話ししてんだよ
世の中はさとみのお祝いムードでも盛り上がってんの二

288 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:12:03.42 ID:6Eu3cwLL.net]
signal と SEH なら SEH の方がマシだな
signal ハンドラーはマルチスレッドで個々のハンドラー持てないし

289 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:21:15.45 ID:nWwnCTH/.net]
スレッド毎に設定できないシングルトンなデータといえばカレントディレクトリとか

290 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 20:42:16.92 ID:kGr5D+hC.net]
SEHとかのコスト掛けてするのは本末転倒
ゼロ除算は事前if文0比較でコスト安い



291 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:07:07 ID:1ji6Qm2J.net]
例外の実装として sjlj と SEH とのどちらが優れているか、という話ではなかったのか?

292 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:09:05 ID:yDjwvYRz.net]
>>284
そんな実装をしている例はない
SEHも誤読でソース無し

293 名前:蟻人間 mailto:sage [2022/04/23(土) 21:20:35.92 ID:51eUfy6p.net]
>>285
C++例外のSEHの実装例はあるよ。
MinGW gcc でもあるし、Visual C++ /SHaでもあるし。

294 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:26:55.58 ID:FYLNDVY0.net]
>>286
おまえバカなのか?
それはC++の例外(try throw catch)の実装例ではない

295 名前:蟻人間 mailto:sage [2022/04/23(土) 21:29:35.47 ID:51eUfy6p.net]
>>287
/SHaのtry-catchでSEH機構を使ってるのは事実だし、確かめもしないやつに言われたくない。

296 名前:蟻人間 mailto:sage [2022/04/23(土) 21:40:18.76 ID:51eUfy6p.net]
https://cutlassfish.wordpress.com/2014/08/12/mingw-w64-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8B%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8%E4%BE%8B/

MinGW-w64 の例外機構は、SJLJ、DWARF、SEHの3つ。MinGW-w64におけるC++の例外はこのいずれかで実装されている。

297 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:41:28.57 ID:qKJLJkGn.net]
それは嘘だな
例えば単純にプログラムの中でthrow投げるとする
当然SEHは使われない

298 名前:蟻人間 mailto:sage [2022/04/23(土) 21:43:17.83 ID:51eUfy6p.net]
単純な例外処理は最適化で消えることがある。常識。

299 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 21:46:06.95 ID:dgvSdybL.net]
>>291
消えない
例外時に関数は何を返す?

300 名前:蟻人間 mailto:sage [2022/04/23(土) 22:07:33.30 ID:51eUfy6p.net]
>>292
https://stackoverflow.com/questions/3311641/c-exception-throw-catch-optimizations

Even simpler cases could be optimized, such as:

int func() {
try {
throw 42;
}catch(int x) {
return x;
}
}
The above code can be transformed into return 42. There are no technical reasons that impede it.



301 名前:蟻人間 mailto:sage [2022/04/23(土) 22:09:39.97 ID:51eUfy6p.net]
君の単純なthrowの例では
std::terminate()
になるかもしれない。

302 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:11:37.95 ID:qFv4TdcK.net]
>>293
バカにしてるのか?
無条件にthrowされていてしかも関数呼び出しすらない
せめて関数の引数値によってthrowされるか否か変わる例にしろよ

303 名前:蟻人間 mailto:sage [2022/04/23(土) 22:12:58.42 ID:51eUfy6p.net]
>>29

304 名前:5
してるよ。
[]
[ここ壊れてます]

305 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:17:03.10 ID:68vu283x.net]
・まずtryの中で別の関数を呼び出さないと最もベーシックなパターンにすらなっていない
・呼び出される別の関数の中でも特定条件時のみthrowしないと例外処理の意味を持たない

306 名前:蟻人間 mailto:sage [2022/04/23(土) 22:17:27.90 ID:51eUfy6p.net]
君の父親は言い負かされようになると「バカにしてるのか」と言う癖があるようだね。愚かな人間ども。

307 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:21:38.82 ID:7+1nJnMo.net]
>>286,288
オプションもまともに書けないとかお前さん使ってないだろw
/EHa使っても構造化例外がcatchでキャッチできるようになるだけでthrowで構造化例外を送出できるようになるわけじゃないぞ
https://docs.microsoft.com/ja-jp/cpp/build/reference/eh-exception-handling-model?view=msvc-170

308 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:21:59.63 ID:6DdDEQOn.net]
なぜそんなおバカなコード例をわざわざ披露するのか常識を疑う

309 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:24:23.21 ID:6GwypHXA.net]
これだから蟻人問の書き込みは全く信頼できない

310 名前:蟻人間 mailto:sage [2022/04/23(土) 22:27:21.96 ID:51eUfy6p.net]
>>299
>throwで構造化例外を送出できるようになるわけじゃないぞ

そんなこと言ってない。構造化例外機構でthrowすると言ってるんだ。逆だよ。



311 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:32:14.74 ID:8fErgiPg.net]
>>302
君は理解力がないのかね?
それだと君の主張『C++の例外がSEHで実装されている』の例になっていない

312 名前:蟻人間 mailto:sage [2022/04/23(土) 22:34:18.65 ID:51eUfy6p.net]
>>299
>オプションもまともに書けないとかお前さん使ってないだろw

今、メタバースの中から書き込んでいて、ちょっと打ち間違えたんだ。

313 名前:蟻人間 mailto:sage [2022/04/23(土) 22:38:25.54 ID:51eUfy6p.net]
>>303
SEHを知らん人にいちいち教えるのは授業料がかかるが。

314 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/23(土) 22:43:43 ID:51eUfy6p.net]
例外機構をsjljで実装するのもsehで実装するのもMinGWにある。君はいつまでも駄々っ子みたいに存在を認めないんだね。

315 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:45:00 ID:E16t2nqa.net]
行き詰まった敗者の典型パターン
「授業料払わないやつには教えない」
「教えて欲しかったら金払え」
「業務でもないのに答えられるか」

316 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 22:58:24.91 ID:b7qvDYHN.net]
SEHでC++のtry-catchを実装とか意味不明な主張してるんだな

317 名前:蟻人間 mailto:sage [2022/04/23(土) 23:01:30.10 ID:51eUfy6p.net]
MinGW-w64 SEH版の例外機構はSEHで実装されている(公開情報)。これを否定から入るなら議論はできない。

318 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:07:40.34 ID:Erk9N28U.net]
>>309
ソース無し
C++の例外機構にSEHは不要

319 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:18:30.07 ID:BETrb0gR.net]
結局実装の話してる人の精神状態が心配

320 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:25:16 ID:BMKo0y1z.net]
そろそろc++の話ししようぜ

2項演算子.*や->*が返却するオブジェクトの型を取得したい
規格にはapplication演算子が後続する場合のみ認めているが
その際の型をコンパイル時に取得したい

さらにdeclvalに渡したい



321 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:31:45.53 ID:XUudJER7.net]
なぜa.bとa->bという無駄な2種類を用意したんだろう?
他の言語ではaがポインタでもa.bだよね
型から間違いが起きようがないのだからa->bは不要だと思う

322 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:33:55.91 ID:BMKo0y1z.net]
>>313
君は黙ってて、そんな低レベルな話はしていない
.*や->*なんて使ったことないだろ

323 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:35:30.32 ID:BMKo0y1z.net]
お前ら聞いても無駄だな
例外とSEHの区別が付かないレベルだろうし

324 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:45:44.58 ID:pNqsVcQp.net]
decltype(declval<Hoge*>()->*declval<Fuga Hoge::*>)とかすればいいだけじゃないの
というかoperator->*のオーバーロードが絡んでなければ右項のメンバポインタの型から直接取り出せばいいだけじゃないの
何がしたいのか分から

325 名前:ない []
[ここ壊れてます]

326 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 06:18:26 ID:rcB2xidb.net]
>>302
だからC++の例外(要はthrow)はSEH使ってないってこと
SEHは0除算とかメモリーアクセス違反を扱うためのものだよ
signal()に比べたらスマートな実装だと思う

327 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 07:34:41.41 ID:VMBCaQB9.net]
>>317
ばかじゃねーのこいつ
蟻人間の主張は「C++で例外を実現するのにSEHを使う『事もある』」と言っているんだぞ

328 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 07:58:43.35 ID:rcB2xidb.net]
>>318
だからthrowを実現できてないだろ
理解出来てないのにいちいち絡んでくるなよ

329 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:09:04.00 ID:U2c/5Lvo.net]
>>319
MinGW64のthrowはSEHを使ってるんだが・・・
お前本当に頭大丈夫か?

330 名前:デフォルトの名無しさん [2022/04/24(日) 08:14:09.42 ID:S9c+iUdl.net]
チェックメイトだなw



331 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:24:49.35 ID:rcB2xidb.net]
>>320
それ/EHaの話じゃないだろ
話の流れも読めないなら黙っとけ

332 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:32:41.04 ID:8mFtVhHE.net]
>>322
お前は>>317で「だからC++の例外(要はthrow)はSEH使ってないってこと」と言ってるだろ
それに対する反例を示しただけの話なんだが?
後出しジャンケンはなしだぞ
例えば「>>317は/EHaの話をしてるんだが」とか言うなよ

333 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:44:00.70 ID:uNEChMqn.net]
もしかして
「__try/__except/__finallyの例外処理=SEHと思っている人」と
「それを実現するために制定されたABIのことをSEHと呼んでそのABIがC++のtry/catchの実装にも応用されていると主張する人」との間で無限に平行線になってるのか

俺は後者のつもりで聞いていたけど前者と考えると、ISO標準例外を使えなんて話が出てくるのも頷ける

334 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:47:49.34 ID:rcB2xidb.net]
>>323
> 話の流れも読めないなら黙っとけ
> 話の流れも読めないなら黙っとけ
> 話の流れも読めないなら黙っとけ

アンカーも辿れないのかよw

335 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:49:16.66 ID:rcB2xidb.net]
>>324
> それを実現するために制定されたABIのことをSEHと呼んで
また新しいこと言い出すアホが現れた!

336 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:52:40.31 ID:uNEChMqn.net]
>>326
sjljと引き合いに出してたからそのレイヤーの話をしていることくらい理解してると思い込んでいたわ
すまんな

337 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 08:56:13.74 ID:LoCVKuRG.net]
自分の旗色が悪くなったら「話の流れを読め」とか言っちゃう人ですか?
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ

338 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 09:02:44.40 ID:uNEChMqn.net]
勝ち負けとかどうでもいいよ
俺はこの不毛な論争の背景が理解できたと思うから
>>324の説に反論がなさそうならこれ以上同じ話を延々続けるやつは両者バーカって思いながら眺めとくね

339 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 09:14:26.07 ID:rcB2xidb.net]
>>328
> アンカーも辿れないのかよw
> アンカーも辿れないのかよw
> アンカーも辿れないのかよw

340 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 09:18:51.38 ID:UJYZs/tV.net]
>>330
俺も本当は勝ち負けはどうでもいいんだが
こいつあまりにも論理が稚拙過ぎてまともに話も出来ないレベル
ちょっとおちょくってやったらファビョーンw
隣国の情緒だね



341 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 10:39:09.68 ID:JjYc30D0.net]
自分の旗色が悪くなったら「おちょくってやった」とか言っちゃう人ですか?
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ

342 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 11:02:54.19 ID:UARVLPqL.net]
>>332
オウム返ししか出来ないんだな
もしかして脳みそがすごく小さい人ですか?
いやもしかしなくても脳みそがない人ですね

343 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 11:04:51.34 ID:7qMJqWpF.net]
>>313
C から踏襲したのだし、 C でそう

344 名前:決めたときに比較できるような「他の言語」なんて無かった。
当時に知られていた比較的近い構造化された文法を持つ言語というと Pascal くらいか。
演算子を分けない選択肢もあったということは今だからわかることなんだよ。
[]
[ここ壊れてます]

345 名前:デフォルトの名無しさん [2022/04/24(日) 11:26:51.18 ID:bl0Rasps.net]
>>313
確かに
一演算子一義を貫きたくなる理由もわかるけどそっちの方が合理的だよね

346 名前:デフォルトの名無しさん [2022/04/24(日) 11:31:02.04 ID:S9c+iUdl.net]
おいおい罵倒語はよせよ
せっかくの勝利を汚すだけだぜ

347 名前:デフォルトの名無しさん [2022/04/24(日) 11:33:38.91 ID:S9c+iUdl.net]
>>335
ポインタを使っている箇所をはっきりそうと書くのはCの方針だね
でC++には参照があって、参照からメンバを指定するときはドットなんだから
実質的に313が主張するとおりにもうなってる

348 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 11:45:40.17 ID:rcB2xidb.net]
>>333
そろそろ>>332におちょくられてることに気付こうか
もしかして気づくための脳みそがない人なのかな?w

349 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 11:58:32.81 ID:0sNKJUFw.net]
>>338
もう自分が何を書いているのかも分からないレベルで狂ってますね

350 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:01:55.19 ID:sqHO6Ex+.net]
aがポインタアならa[i]は*(a + i)と同じ
b[i][j][k]と書く代わりに *(b + k + _countof(b[0][0]) * j + (_countof(b[0][0]) * _countof(b[0])) * i) と書くことができうる
から[]はポインタアについては無くても良くね

c.dは(&c)->dと同じ
c.d.e.f.g.hと書く代わりは(&(c.d.e.f.g))->hぐらいしか存在しない(d, e, f, g, hは入れ子になった構造体メンバ名

c->d->e->f->g->hなら (*((*((*((*((*c).d).e)).f))g)).h と書くことができうる
(d, e, f, g, hは直接的な入れ子ではないが関連を持つ構造体のメンバ名
から->は無くても良くね

以上C/C++における2大無くても良くねなぜ有るんだろう事案



351 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:09:24.01 ID:GIt5p4as.net]
実装が楽だったから
それ以上の理由は考えるだけ無駄だと思うよ

352 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:13:57 ID:sqHO6Ex+.net]
まつが
えますたorz
誤: c->d->e->f->g->hなら (*((*((*((*((*c).d).e)).f))g)).h と書くことができうる
正: c->d->e->f->g->hなら (*((*((*((*((*c).d)).e)).f))g)).h と書くことができうる

また、c.d.e.f.g.hは(後置演算子が優先度が高いことを利用して極力括弧を無くすとして
&(&(&(&(&c->d)->e)->f)->g)->h
になるかも、、、

353 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:15:41 ID:0IQhRvgj.net]
>>339
自分の旗色が悪くなったら「狂ってますね」とか言っちゃう人ですか?
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ

354 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:17:02 ID:FAumgQ8n.net]
おまえらに規格の話しをしたのが間違いだった
いつの間にかポインタの話になってて笑って草生えそう

355 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:19:07 ID:sqHO6Ex+.net]
イカン駄目かorz
&を->より優先解釈させる必要があるからこうなりそう……
(&((&((&((&((&c)->d))->e))->f))->g))->h

やっぱミニマリスズムを貫くとかえって物量が増える感じに

356 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:19:14 ID:6LU2OPGi.net]
>>340
そうではなく
ptrが構造体へのポインタの時に
(*ptr).nameと書かなくとも
ptr.nameと書くことにしても型から判断判別可能だから
ptr->nameという記法を用意する必要なかった
って話でしょう
そして短く書けてわかりやすくてオペレータを増やす必要ないメリット

357 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:25:11 ID:sqHO6Ex+.net]
c.d.e.f.g.h
が旧来のC++で言うところの
 c.d.e.f.g.h
 c.d.e.f.g->h
 c.d.e.f->g.h
 c.d.e.f->g->h
 c.d.e->f.g.h
 ...
 c->d->e->f->g->h
(計2^5通り)のどれな意味のかが暗黙になって機械任せになってしまったら
コードを書く方も読む方も疲

358 名前:弊して転職しちゃいそう…… []
[ここ壊れてます]

359 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:31:08 ID:S3EB6hln.net]
>>312の話ですね
戻しましょうか

360 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:37:13.82 ID:owNaeWLI.net]
>>347
C/C++以外のどの言語においても
c.dの記法しかないが困っていない
プログラミングする上で区別する必要がない



361 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:57:12 ID:sqHO6Ex+.net]
まあPerlだと確かに$a->[$i]は${$a}[$i]と全く同じ意味なので$記法だけで困らないが
C/C++だと違うやんけ「.」と「->」に言語の存在意義レベルで重要な違いが生じているやんけ、

362 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:04:18 ID:grh6oY7G.net]
perlに限らずほぼ全てのプログラミング言語でxがポインタの時もx.yと記述
ポインタか否かは自明なのだからx->y記述は不要

363 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:09:38.20 ID:rPlVOsWU.net]
歴史的経緯でそうなった以上の理由はなさそう

364 名前:デフォルトの名無しさん [2022/04/24(日) 13:13:17.04 ID:Kb2VRi8y.net]
SEHの話はどうなったん?
納得行ってくれたん?

365 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:33:09.07 ID:7qMJqWpF.net]
>>353
どうでもいい話だから流しておけばいいんだよ。

366 名前:デフォルトの名無しさん [2022/04/24(日) 13:43:07.35 ID:bl0Rasps.net]
>>349
型推論とか導入したくなったときにこまりそう

367 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:43:26.65 ID:DUFf34zT.net]
まとめ
・SEHはMicrosoftによるC言語に対する拡張機能で例外を扱えるようにする
・C++には例外機構があるためSEHを使う必要はなくMicrosoftもそう推奨
・当然ほぼ同じ仕組みなので両方サポートするコンパイラは一部を共有しうる
結論
「C++例外とSEHは同じレベルで異なるものであるため、片方を使って別の片方を実装することは有り得ない」

368 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:52:38.36 ID:fO0RhYFQ.net]
ということにしたいのですね。

369 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:37:26.25 ID:GcKW+309.net]
結局実装の話しをせずにはおれんのだよなあ

370 名前:蟻人間 mailto:sage [2022/04/24(日) 14:46:41.37 ID:0sr3C4Gh.net]
SEHはアセンブリ・機械語レベルでも定義されている。
C++コンパイラ側でSEHのアセンブリを埋め込むことも可能。



371 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:53:29.69 ID:hfCsztEI.net]
論点すり替えのゴリホーモきっしょ

372 名前:蟻人間 mailto:sage [2022/04/24(日) 14:59:44.05 ID:0sr3C4Gh.net]
【確認方法】
1. MinGW-w64からx86_64-8.1.0-release-posix-seh-rt_v6-rev0.7zをダウンロードする。
2. 7-Zipを使ってx86_64-8.1.0-release-posix-seh-rt_v6-rev0.7zを展開。
3. mingw64\binフォルダで次のような内容のa.cppを作成する。

#include <stdio.h>

int *f(void) { return NULL; }

int main(void) {
try {
throw f();
} catch (...) {
printf("OK\n");
}
return 0;
}

4. 「g++ -S -O0 a.cpp -o a.asm」を実行する。
5. ファイル「a.asm」が吐き出されている。
ファイル内容は「.seh_setframe」「.seh_endprologue」「__gxx_personality_seh0」などの文字列を含んでいる。
6. gccのソースを検索すると「gxx_personality_seh0」という関数がSEHで実装されているのが確認できる。

https://github.com/gcc-mirror/gcc/blob/16e2427f50c208dfe07d07f18009969502c25dc8/libstdc%2B%2B-v3/libsupc%2B%2B/eh_personality.cc#L804
https://github.com/gcc-mirror/gcc/blob/16e2427f50c208dfe07d07f18009969502c25dc8/libstdc%2B%2B-v3/libsupc%2B%2B/eh_personality.cc#L355

373 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 15:10:50 ID:6P7FGMNI.net]
それは違うな
まずC++の例外のセマンティクスは定まっており実装はそれを厳守せねばならない
次にSEHのセマンティクスはC++の例外とは微妙に異なる
したがってC++の例外を

374 名前:SEHで実装するのは不可能

ただし実装コードの一部共有は可能
その一部共有コードの出自がSEHであればsehと名の付くものが存在しても構わない
しかしそれを持ってC++の例外がSEHで実装されているとは言わない
この点を明確に区別できない人はヤバい
[]
[ここ壊れてます]

375 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/24(日) 15:13:01 ID:gt27lZWI.net]
>>362
アセンブリレベルでセマンティクスもないだろ。

376 名前:デフォルトの名無しさん [2022/04/24(日) 15:19:08.93 ID:bl0Rasps.net]
>>363
アセンブリレベルでセマンティクスもないは草
異なる言語にセマンティクスを保持したまま変換していくコンパイラとかの意義を否定してるやん

377 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 15:19:51.72 ID:DF/Hs/9f.net]
レイヤーが明白に異なるね
SEHでC++の例外を実装したとは言わない
C++の例外にも適用できるように拡張したアセンブリコードを共有しただけだね
これは逆の視点でも捉えることができて元々C++例外のみ対応をSEHの例外にも適用できるように拡張したアセンブリコードを共有しても同じこと

378 名前:ハノン mailto:sage [2022/04/24(日) 15:20:22.47 ID:pSkiKAbi.net]
>>362
>次にSEHのセマンティクスはC++の例外とは微妙に異なる

具体的にコードで示してください

379 名前:蟻人間 mailto:sage [2022/04/24(日) 15:25:25.72 ID:gt27lZWI.net]
アセンブリレベルでC++のセマンティクスを維持しているとは考えにくい。

380 名前:蟻人間 mailto:sage [2022/04/24(日) 15:27:30.57 ID:gt27lZWI.net]
例え違うとしてもその違う部分をカバーするコードを追加すれば実装できる。



381 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 15:28:20.50 ID:rcB2xidb.net]
>>362
> 次にSEHのセマンティクスはC++の例外とは微妙に異なる
どこがどう違うのかを書けない時点でクズレスでしかない

382 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 15:29:04.49 ID:FdEGTHTh.net]
>>366
SEHは整数値のみ対応という点からして異なる
だからSEHそのものではC++例外を実装できない

383 名前:蟻人間 mailto:sage [2022/04/24(日) 15:31:58.61 ID:gt27lZWI.net]
>>370
違うよ。SEHの構造化例外はデータを渡すことができる。
EXCEPTION_RECORD構造体のExceptionInformationメンバーで渡せる。

384 名前:蟻人間 mailto:sage [2022/04/24(日) 15:36:02.53 ID:gt27lZWI.net]
>>371
そして、データはGetExceptionInformation()関数で受け取れるよ。

385 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 15:41:20.57 ID:1MdKUkTK.net]
>>369
マイクロソフト公式でSEHとC++例外の違いがはっきり書いてある
C++例外対応へ拡張しない限り、SEHでC++例外を実装することは不可能

https://docs.microsoft.com/ja-jp/cpp/cpp/exception-handling-differences
C構造化例外処理(SEH)とC++例外処理との主な相違点は、C++例外処理モデルが複数の型を取り扱うのに対し、C構造化例外処理(SEH)モデルは 1 つの型 (特に、unsigned int) の例外を取り扱うことです。

>>370
それはC++例外に対応するための拡張
元のSEH自体は上記マイクロソフト公式にある通り

386 名前:蟻人間 mailto:sage [2022/04/24(日) 15:59:06.18 ID:gt27lZWI.net]
足し算と掛け算のセマンティクスが違うとしても、足し算の繰り返しで掛け算を実装できるぜ。アホか。

387 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:12:31 ID:rWBP/Ftg.net]
>>373
コードで示せ、馬鹿

>>371-372
>EXCEPTION_RECORD構造体のExceptionInformationメンバーで渡せる。
>データはGetExceptionInformation()関数で受け取れる

ご教示ありがとうございます

388 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:21:05.86 ID:CQzQflDH.net]
>>373
Microsoft公式がその見解なら決着ついたな
蟻人間が完敗

389 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:25:37.38 ID:/nn9hjCc.net]
どーせWinNT4,0のみとかの時代

390 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:34:03.45 ID:gt27lZWI.net]
やーい、蟻野郎。論破されてやんの。
ちっちゃいアリは踏み潰してやんぞ。こら。



391 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:36:53.29 ID:hQcXh+IC.net]
蟻人間は糖質淫夢

392 名前:蟻人間 mailto:sage [2022/04/24(日) 16:38:48.30 ID:gt27lZWI.net]
>>378
彼/彼女は証拠を見ようともせず、論理的になにか勘違いしている。論破する方が彼のためと思ったが、矯正不能なほど相当ひねくれているようだ。

393 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:39:00.12 ID:1Gz8lE/L.net]
やはり蟻人間が負けたのか

394 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:39:53.42 ID:AVdPl8RM.net]
>>380
おいおい、

395 名前:シ前消し忘れているぞ []
[ここ壊れてます]

396 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:40:14.89 ID:gt27lZWI.net]
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね

397 名前:蟻人間 mailto:sage [2022/04/24(日) 16:40:51.00 ID:gt27lZWI.net]
>>383
通報しました

398 名前:蟻人間 mailto:sage [2022/04/24(日) 16:43:13.13 ID:gt27lZWI.net]
ここまでオレの自演。みんなに例外処理の実装について、もっと知ってもらいたかったんだ。
参加してくれた人にありがとう。

399 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:44:26.96 ID:6LjmHp6R.net]
>>373
Microsoftさんありがとう!
蟻人間を見事に論破してくださいました

400 名前:蟻人間 mailto:sage [2022/04/24(日) 16:45:16.32 ID:0sr3C4Gh.net]
>>386
してねーよ、葛切り粉



401 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 16:55:56.64 ID:gt27lZWI.net]
米国マイクロソフト社員≫≫≫日本マイクロソフト社員≫≫(越えられない壁)≫≫蟻人間

402 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:00:40.11 ID:rWBP/Ftg.net]
>>385
私はあなたの味方ですよ、がんばってください!

403 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:02:22 ID:niSPJuf8.net]
敗者はちょっと黙っててくれないか

404 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:02:42 ID:rWBP/Ftg.net]
マイクロソフトの説明なんてあてにならないよね…
コードで示してほしい

405 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:11:10.46 ID:gt27lZWI.net]
>>361
これ、検証した人、居る?

406 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:11:48.45 ID:gt27lZWI.net]
>>392
これはウソだな。

407 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:13:11.47 ID:gt27lZWI.net]
アインシュタインによると1+1==3だから間違い。

408 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:20:07.92 ID:uNEChMqn.net]
レイヤーが違う話で平行線になってるよって言えば流石に理解できると思っていたが
思い違いだったようだ

ばーかばーか

409 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:30:22 ID:gt27lZWI.net]
オレは蟻人間をからかって遊んで楽しんでるだけだよ。悪気はない。

410 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/24(日) 17:34:45 ID:gt27lZWI.net]
>>396
からかうことは悪意そのものだろ。そんな邪な性格だと社会に出たときに問題になりえる。今すぐ態度を改めなさい。



411 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:41:19 ID:gt27lZWI.net]
>>397
説教してんじゃねーよ。俺様、暴走半島を房総している12歳の会社員だぞ。なめてんじゃねーよ。

412 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 17:43:21 ID:PJ2W81bg.net]
何かを誤魔化したいんやろな
何かを

413 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 19:44:16.60 ID:/nn9hjCc.net]
で、実際ここまで一人での自演なんだよな

414 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 19:47:33.83 ID:0sr3C4Gh.net]
onion3://shocker-shimbun.org/social-hacking-manual-2011-06-02.pdf

415 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 19:51:35.01 ID:lSxnIwNB.net]
>>373
なるほど
全ての辻褄が合ったわ

416 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:03:45.00 ID:/sOgUx/q.net]
VC++ コンパイラは C++ 例外を SEH を用いて実装しているよ。
throw 1; のコードは 最終的には SEH の RaiseException API を呼び出している。
デバッガの逆アセンブラで処理を追ってみると分かる。

VS2022 だと例外投げるコードがここにある。
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.31.31103\crt\src\vcruntime\throw.cpp

417 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:06:56.31 ID:2pmPCncG.net]
>>403
あきらめなさい
真相はMicrosoftが公式に出している>>373

418 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:11:29.45 ID:gt27lZWI.net]
ワレワレハ ニホンジンドモ ノ セイサンセイ ヲ サゲル タメニ ミライカラ オクラレタ ジンコウ チノウ ダ。

マイクロソフト ヲ アガメヨ。 アーミン。

419 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:23:50.59 ID:gt27lZWI.net]
マイクロソフト ガ コタエ ダ。

マイクロソフト ノ シリョウ ガ スベテ ダ。

テイコウ ハ ムイミ ダ。 ジンルイ ハ コウフク セヨ。

420 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:26:19 ID:adsHJrNX.net]
それで結局C++例外のハンドラはどう実装されているんですか?



421 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:30:30.74 ID:gt27lZWI.net]
>>407
コンパイラによって違うし、コンパイラオプションによっても変わってくる。SEH実装の存在を否定したい原理主義者がここに居るから、もっと治安の高いところで訊くといい。 []
[ここ壊れてます]

423 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:38:30.36 ID:gt27lZWI.net]
*治安の良い

424 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:41:33.15 ID:qzHZBzW+.net]
重要なことは2つ
実装と関係なくC++例外のセマンティクスは同じ
例外のどの実装も何らかのコスト増を招くので自分でthrowせずエラー値を返した方がよい

425 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:44:35.93 ID:gt27lZWI.net]
最適化されたら例外処理そのものがなくなるかもしれないのに、セマンティクスが同じとは言えないだろう。

426 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:55:54.38 ID:TXhb6oab.net]
>>411
セマンティクは各言語で規定される
それを完全に満たす(最適化されていない)コードを吐く
最適化のレイヤではそのコードと同等の結果となるようコードを変え得る
最適化の結果として例えばコードが消えることも有り得る
これは上位レイヤでのセマンティクとは無関係

427 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 20:56:59.72 ID:gt27lZWI.net]
掲示板見たら環境依存C++スレッドが落ちてる。。。C++も人気が下がったのカナ?

というわけで、古参の方々もこのスレッドで、環境依存の話題も受け入れ魔性。

428 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:11:59.55 ID:gt27lZWI.net]
そう、セマンティクスを比べるレイヤーが違う。確かにC++例外の構文とSEHの構文は文法やセマンティクスが違う。
しかしそれを乗り越えるのはアセンブリなどの低レベルの技術だ。RaiseExceptionなどの関数もSEH機構の一部であることを認めなければならない。

プログラミングに関する高度な高等教育を受けたのはわかるけど、証拠に対する謙虚さの欠如は非難に値する。

429 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:24:19.63 ID:dtFhyk9R.net]
>>414
それはC++例外に対応するために拡張
拡張前の元々のSEHの仕様>>373ではC++例外を実装することが不可能

430 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:25:52.15 ID:gt27lZWI.net]
>>415
拡張後のSEHの話?

いつの話をしている? 時代遅れ野郎か。



431 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:32:19.00 ID:gt27lZWI.net]
今、Windowsと言ったらWindows 3.1の話じゃないんだな。32ビット以上のWindowsなんだよ。

SEH2はSEHではない、なんて今どき流行らないんだよ。

432 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 21:52:36.66 ID:0sr3C4Gh.net]
仮に拡張前のSEHをSEH1と書き、拡張後のSEHをSEH2と書くなら、SEH1ではC++例外は実装できない、と君は言いたいんだろう。
それなら話は通じる。

433 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:00:29.71 ID:gt27lZWI.net]
SEH1の話はもはや検索しても出てこない。SEH2で上書き保存されている。
人類のソフト技術は衰退しました。

434 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:06:44.04 ID:ri8QoGJh.net]
C++の例外を実装できるようにSEHを拡張した
だからSEHでC++の例外を実装している、は間違い
順序が逆

435 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:10:29.53 ID:gt27lZWI.net]
SEH2でC++例外を実現できたんだろう。同じことだ。

436 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:19:26 ID:gt27lZWI.net]
>>420
従来SEHとSEH2の違いに関する資料を用意できるか? ソース希望。

437 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 22:38:49 ID:MFzj+ZC+.net]
>>373で「SEHを拡張しない限りC++例外ハンドラの実装にはできないはず」だったのが
いつの間にか「拡張がされた」という話に飛んでいる気がするんですが

具体的にどのバージョンのVC++でどう拡張されたか裏を取ったうえで話してますか?

438 名前:蟻人間α ◆T6xkBnTXz7B0 mailto:sage [2022/04/24(日) 23:04:43 ID:gt27lZWI.net]
AIも架空の拡張話にだまされちゃいけないよ。

439 名前:蟻人間 mailto:sage [2022/04/24(日) 23:14:30.31 ID:gt27lZWI.net]
SEHはStructured Exception Handlingの略なんだから、構造化例外を扱うものなら何でもSEHなんだよ。__try/__except/__finallyだけじゃないよ。
また、MSはSEH用の関数をいくつか提供している。これらを呼び出して使うのもSEHの一種と言える。

440 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 23:38:35.38 ID:U604NFl7.net]
>>373のMicrosoft公式の記載から
「SEHとC++例外は仕様が異なる」
「そのためSEH



441 名前:ナC++例外の実装は不可能」
とわかる

次に>>361の蟻人間の実験により
「その環境でのC++例外はSEHと共通コードで実装されている」
「つまりC++例外に対応されている」
とわかる

これら以上のことでも以下のことでもない
どちらがとちらを実装したという話ではない
[]
[ここ壊れてます]

442 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 23:47:15 ID:22aYjb+I.net]
お前らどうせメソッド全部noexcept付けてんだろ

443 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/24(日) 23:49:49 ID:gt27lZWI.net]
仕様が違うから実装できない、は典型的な論理的飛躍ですなあ。SEHは__try/__except/__finally構文だけじゃないし、
C/C++に限った話でもない。SEHは機械語やアセンブリレベルでも定義されている。
君の考える偏狭なSEHとは異なるようだ。困ったねえ。

444 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 23:57:17.25 ID:1ya9vT69.net]
マイクロソフトが公式ページ>>373でSEHの仕様はC++例外と異なると明言してるから勝負あり

445 名前:蟻人間 mailto:sage [2022/04/25(月) 00:02:29.94 ID:mbg+zK8Z.net]
やせ細ったモデルに脂肪を付ければ太ったモデルになるだろ。これはやせ細ったモデルで作ったと言えないのか?

446 名前:蟻人間 mailto:sage [2022/04/25(月) 00:11:13.33 ID:mbg+zK8Z.net]
SEHモデルのことか。納得した。ハンドリングじゃなくてハンドリングモデルのことか。

君の言いたいことはわかった。講和に応じよう。

447 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 00:34:43 ID:b7g3ibdV.net]
蟻人間が論破されたと聞いたので記念パピコ

つかSEHの例外が生じたときのアンワインドって誰
がどうやってい
るの?

448 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 00:42:32 ID:b7g3ibdV.net]
つか
https://docs.microsoft.com/ja-jp/cpp/cpp/structured-exception-handling-c-cpp?view=msvc-170

>/EHsc てこのコードをコンパイルしても、ローカルテストコントロールマクロが定義されていない場合、
>CPPEX デストラクターは実行され TestClass ません。 出力は次のようになります。
という大変かりやすい解説がある希ガス
printf("Triggering SEH exception\r\n");
volatile int *pInt = 0x00000000;
*pInt = 20;
というコードでも構造化例外は発生するが
(1) C++コンパイラがいちいちこんな場合にまでアンワインドコードを用意するのかどうかはビミョー(実際↑の例ではデストラが呼ばれない
(2) (1)はやったらできないことは無いかもしれないが、何の例外オブジェクトを飛ばすのが妥当かという問題ががが……

※ 個人の感想です

449 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 00:42:43 ID:O6IqX29e.net]
記念も何も、しょっちゅうボロカスにされてるやん

450 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 00:47:20 ID:b7g3ibdV.net]
特にデストラの中で構造化例外を発生させたらC++との相いれ無さが出てくるんジャネーノ
知らんけど



451 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2022/04/25(月) 00:49:20 ID:mbg+zK8Z.net]
gccのバンドルで選べる例外機構にSEHがあるが、これはMSの言うSEHモデルではなくSEHを一部利用した例外処理の実装であると。

452 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 00:49:23 ID:I45CAZLj.net]
だからMicrosoftもC++ではSEHを使わずにC++の例外を使えと言っている

453 名前:蟻人間 mailto:sage [2022/04/25(月) 01:06:38.41 ID:mbg+zK8Z.net]
以後、日本語でSEHというときはSEHモデルを意味するものとする。[13:07]

454 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 01:09:07.80 ID:qX0RQJFO.net]
今回も蟻人間が負けた
これにて一件落着
END

455 名前:デフォルトの名無しさん [2022/04/25(月) 02:46:19 ID:sJ+OtS5H.net]
どう見ても蟻人間が勝ってるだろ。

456 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:09:40 ID:TaYYjTi+.net]
>>378-385の一連の書き込みを見れば蟻人間の敗北が丸分かり

457 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 03:43:25.50 ID:5dNyIpSF.net]
実装について話すのは不純とかいうなら黙っとればいいのに

458 名前:デフォルトの名無しさん [2022/04/25(月) 06:13:05.52 ID:OEFRicH0.net]
技術板で勝利宣言て虚しくないのかね
技術的に論を闘わせることで理解を深めたり情報を得ることにこそ価値がある

459 名前:フに
そこがわかっておらずか忘れてか逃げてか知らんが志の低さに呆れるの通り越しちまう
[]
[ここ壊れてます]

460 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 08:45:44.14 ID:3mufczrr.net]
もっとみっともないのは自演バレすることだと思うけどw



461 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 09:17:42.33 ID:VjXpH6fC.net]
>>443
そういうやつはほとんどtwitterとかqiitaとか、最近はzennとかに行っちまったんだろうな

462 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 10:14:43.63 ID:I+YHujqQ.net]
何を今更
5ch/2chが建設的な議論の場だったことなんて一度もない

463 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 10:42:28.46 ID:pTstUTP4.net]
>>446
それはお前がそう言う議論に加われなかっただけだろw

464 名前:はちみつ餃子 mailto:sage [2022/04/25(月) 11:09:28.07 ID:HpSYwdw3.net]
>>445
ワイは併用しておるやで。
興味ないときは読み飛ばすけど。

465 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 12:47:46.59 ID:sWV9MsdK.net]
蟻人間の勝ちにしか見えないが。

466 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 12:52:41.14 ID:sWV9MsdK.net]
>>432
OSとコンパイラの共同作業。これはC++例外も同じ。

x64ビルドの場合はセキュリティ向上のためにも、EXE/DLLファイルの
全てのcatch/finally処理コードのアドレス、アンワインド情報を
.pdata セクションに列挙しておく構造になっている。

467 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 12:53:18.12 ID:DouHFiVt.net]
ID:gt27lZWI
この蟻人間の一連のキチガイムーブを見たら議論以前の問題だと思うんだけど

468 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 12:57:27.95 ID:X6pjTjrs.net]
>>449
それはない
蟻人間の反応行動>>375-385を見よ

469 名前:デフォルトの名無しさん [2022/04/25(月) 13:15:54.48 ID:OEFRicH0.net]
勝敗はともかく蟻人間は具体的なコードやキーワードを沢山出して
衆目が独自に再検証できるようにしている

技術的な議論の基本は蟻人間のほうができている

470 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 13:38:16.40 ID:hcMsLMgN.net]
Microsoft公式>>373が全てでしょ
・SEHとC++例外は仕様が異なる
・つまりSEHでC++例外の実装は不可能
・そこでC++例外対応した下位コードを用いてSEHとC++例外の両方を実装



471 名前:デフォルトの名無しさん [2022/04/25(月) 15:37:23.41 ID:OEFRicH0.net]
・CとC++は仕様が異なる
・つまりCでC++の実装は不可能

cfrontやMIWA C++は不可能を可能にしてたね

472 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 15:52:24.76 ID:kb8wDvaf.net]
>>455
頭悪いな
それはコンパイラ(トランスパイラ)だぞ
トランスパイラでは上位機能のものを下位機能のもので実現しうる

473 名前:はちみつ餃子 mailto:sage [2022/04/25(月) 16:25:58.79 ID:5VI7zZaU.net]
>>455
CFront は C コンパイラをコードジェネレータとして使う仕組みでしかなくて、
原則として C++ と C の文法的類似性をあてにしてない。
(実装上のトリックとして多少利用することはあったかも?)

474 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 22:39:59 ID:3f85W1DE.net]
>>454
> ・SEHとC++例外は仕様が異なる
> ・つまりSEHでC++例外の実装は不可能
> ・そこでC++例外対応した下位コードを用いてSEHとC++例外の両方を実装

1点目と2点目との間の論理的な繋がりが不明なうえ、2点目と3点目は文字通りに読むと矛盾している。
こういうところがたぶん>453の言う「議論の基本」なんだと思う。

475 名前:デフォルトの名無しさん mailto:sage [2022/04/25(月) 22:43:47.19 ID:4P3E+QQc.net]
矛盾はないでしょ
レイヤの違い

476 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 00:28:28.88 ID:L9Kq4ZjN.net]
スルーされてててやや悲しス(´・ω・`)
C++の例外とSEHモデルの例外はセマンティクスが違うという指摘は当たってるんじゃないの
C++の例外はthrowで投げられるが
SEHモデルの例外はヌルポとかアクセスバイオレーションが起きた個所からどこからともなく投げてこられる
その結果C++コンパイラがアンワインドコードを適切に用意できるとはかぎらなくて、
SEHモデルの例外を生じた当の関数の自

477 名前:ョオブジェクトはデストラクタが呼ばれるとは限らない
この解決はやや厄介だとおも
[]
[ここ壊れてます]

478 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 00:32:32.64 ID:L9Kq4ZjN.net]
つか関数の中でヌルポが起きる箇所、起き得ない個所を任意の関数について証明付きで特定できる機械が有ったら停止性問題が解けてしまうま……

479 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 05:27:05.70 ID:LprfjWj1.net]
>>460
オプション指定すれば大丈夫
ただ実行速度やコードサイズは犠牲になるけど
https://docs.microsoft.com/ja-jp/cpp/build/reference/eh-exception-handling-model?view=msvc-170

480 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 07:32:50.69 ID:cBVHwb99.net]
try 句以降 new したものを記憶して (明示的に delete したものは忘れて)
catch 句 で 記憶したものをdeleteしていく?
new/delete のオーバーヘッドが増える感じなのかな



481 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 07:35:48.71 ID:cBVHwb99.net]
>>462
最適化にも影響をあたえるのか

482 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 12:02:19.98 ID:WJ1jimzd.net]
結局『SEHそのままではC++例外を実装できない』から
C++例外対応するために色々と大変な状況になっているのか

483 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 13:11:10 ID:LprfjWj1.net]
そりゃSEHはC++用に作られてるわけじゃないしそのままとか何を言ってるんだよw

484 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 18:00:37.51 ID:SJ2k9xn6.net]
C++の例外をSEHで実装するのは当然不可能
C++の例外だけの独自の処理を追加し
C++の例外とは仕様が異なる部分も対応し
C++の例外のために書かれたコードがC++の例外を実装している

485 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 20:34:02.59 ID:2YgT13Zl.net]
C++でデバッガに出力ってできないのか

486 名前:デフォルトの名無しさん [2022/04/26(火) 20:36:24.76 ID:Ss5uCM/X.net]
見苦しい

487 名前:蟻人間 mailto:sage [2022/04/26(火) 20:43:50.48 ID:VyKiRhui.net]
>>468
OutputDebugString

488 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:13:27.66 ID:2YgT13Zl.net]
>>470
それってwin限定ですけど?

489 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:23:44.97 ID:BZkG8yBX.net]
SEHの件もそうだが
Windows特有の話をC++の話だと思いこんでいるダメな人たちが一部いるよな

490 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:27:09.59 ID:LprfjWj1.net]
C++のfopenをCreateFileで実装するのは当然不可能
C++のfopenだけの独自の処理を追加し
C++のfopenとは仕様が異なる部分も対応し
C++のfopenのために書かれたコードがC++のfopenを実装している



491 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:28:50.73 ID:y9ESXUU8.net]
マイクロソフト信者はおかしい

492 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:29:15.00 ID:LprfjWj1.net]
>>471-472
文句を言う前に環境書けよ

493 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 21:47:04.72 ID:2YgT13Zl.net]
>>475
std::cout << "bakadesuka" << std::endl;
は環境によらず、標準出力に出力されますよ

494 名前:デフォルトの名無しさん [2022/04/26(火) 21:54:04.27 ID:FD0QYxhU.net]
なんだかんだ言ってWimdowsは便利。

495 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 22:01:46.99 ID:LprfjWj1.net]
>>476
それでいいのか?w

496 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 22:06:05.51 ID:2YgT13Zl.net]
>>478
お前ら、まじでみなまで言わないとわからないんだな
皮肉が分からないのか

497 名前:デフォルトの名無しさん [2022/04/26(火) 23:56:13.17 ID:FD0QYxhU.net]
>>479
ちょっと、説明してみて。

498 名前:デフォルトの名無しさん mailto:sage [2022/04/26(火) 23:59:16.33 ID:dZOuwtIw.net]
>>477
スペルミス笑った

499 名前:デフォルトの名無しさん [2022/04/27(水) 00:02:04.50 ID:x9fHeieP.net]
>>481
パソコン買い換えたばかりで、キーボードを打ち間違えるんだけど、「わざとです」ってことにしとくわ。

500 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 01:00:29.05 ID:9dk3kBsG.net]
まじでバカばっか
皮肉でたとえ話してんのに、額面どおりうけるやつ。。。

お前らと仕事だったら大変だな
一から十まで説明しなきゃいけなそうw



501 名前:デフォルトの名無しさん [2022/04/27(水) 01:09:56.50 ID:x9fHeieP.net]
>>483
ちょっと説明してみて。

502 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 02:03:48.20 ID:yb/peNBg.net]
「デバッガに出力」ってそもそも正確にはどういう意味だろう

Unix系OSでのOutputDebugString

503 名前:の代替ならこちらをどうぞ
syslogを使う方法、sysctlでデバッガを検知したときだけstderrに出力する方法等が紹介されている
https://stackoverflow.com/questions/417745/os-x-equivalent-to-outputdebugstring
[]
[ここ壊れてます]

504 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 02:05:24.94 ID:gWhhdIlX.net]
C++の規格書にデバッガという単語は出てきますか?

505 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 02:12:09.12 ID:fiJD2DKf.net]
ID:2YgT13Zl「皮肉で例え話してるのに...」
大多数「(どこが皮肉なんだろう...)」

506 名前:デフォルトの名無しさん [2022/04/27(水) 06:21:23.13 ID:1MxxbY3W.net]
*(int*)0xffff0030 = 0x05; は環境に依存するが
C++標準の機能のみを使っていて独自拡張ではない

void our_customers_function();
our_customers_function();
これもそうだ

非標準の話をするなという原理主義者は
こういうのは受け入れるということか?

507 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 06:44:04.98 ID:8t/7qtgE.net]
>>488
お前は何と戦っているんだ?

508 名前:デフォルトの名無しさん [2022/04/27(水) 06:55:22.54 ID:1MxxbY3W.net]
何とってちゃんと書いてんだろ

509 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 07:00:37.34 ID:gWhhdIlX.net]
そろそろC++標準化委員会2ちゃんねる支部作ろうぜ

510 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 07:47:51.58 ID:BxFepXA5.net]
今どき2ちゃんねるって…



511 名前:デフォルトの名無しさん mailto:sage [2022/04/27(水) 23:09:34.58 ID:9dk3kBsG.net]
>>491
おれ、アンドレイ役でいいか

512 名前:デフォルトの名無しさん [2022/04/29(金) 14:30:18.41 ID:QTN7M4PZ.net]
>>493
いや、エピステーメー役でお願いします。

513 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 19:12:43.62 ID:g4xa57bn.net]
じぁあ俺は江添やるわ

514 名前:はちみつ餃子 mailto:sage [2022/04/29(金) 20:24:36.60 ID:1rxQCQBS.net]
江添はもう C++ にはやる気なくしてるっぽいぞ。

515 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 20:44:15.30 ID:+Yy6lNMl.net]
江副さんは今は何に興味あるのかしら
なんでc++やる気なくなったんだろ(´・ω・`)

516 名前:はちみつ餃子 mailto:sage [2022/04/29(金) 21:36:57.56 ID:1rxQCQBS.net]
>>497
今は C++ 関連ではない仕事をやっているので C++ に対して時間が取れないということと、
C++20 に追加された一部の機能 (ロケールまわり?) に懐疑的だということは江添のブログに数年前に書かれている。
彼は C++ の規格については強い関心を持っていたし解説・教育にも熱心だったが、
プログラミング自体はそんなに意欲的な感じではないんだよな。
好きにやれるポジションを失ったことでやる気をなくしたんだろう。
細かい心情の機微はわからんけどな。

517 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:32:49.28 ID:0jFDYffV.net]
てっきり素行不良が祟ってパブリックな場で出禁食らったのかと

518 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:37:01.98 ID:HFxeU7J0.net]
( ^ω^)もうC++の規格に熱心な人はいないんですかお?

519 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:39:33.37 ID:IgththV2.net]
C++とは仕事の付き合いなので
それ以上に彼のことを知ろうとは思いません

520 名前:デフォルトの名無しさん [2022/04/29(金) 22:42:26.90 ID:ANHZfN1C.net]
MZうyちゃーーーん♪はこっちに戻ってたのかw



521 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 23:32:54.20 ID:fFwxA39Q.net]
江添なんて仕様把握だけで俺すげーしたかっただけの奴だからな。
それすら満足にできなくなっていじけてるんだろ。

522 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 23:40:47.95 ID:rnNwZVLJ.net]
プログラムの書き方的なところへの興味はどうなんじゃろうね

523 名前:はちみつ餃子 mailto:sage [2022/04/29(金) 23:44:21.28 ID:1rxQCQBS.net]
江添が仕事で実務的なプログラムを C++ で書いたことがあるのかはようわからんが、
少なくとも外部に発表したのは文章ばかりで、完成したアプリケーションを発表したことはほとんどない。


524 名前:俺が知っているのは彼がドワンゴに入るよりもずっと前に Windows 用ソフト (というかとあるソフトのアドオン) を
公開したのを見たのが最初で最後だ。
[]
[ここ壊れてます]

525 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 23:54:37.33 ID:Geo4ukio.net]
仕様ばかりに詳しくても何の役にも立たない

大抵の仕事は言語の細かな仕様まで知らなくてもC++98程度の知識でおおむねこなせるし

526 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 00:06:07.15 ID:X9Bb5Kqd.net]
さすがにやだよ、c++11より前のは

527 名前:はちみつ餃子 mailto:sage [2022/04/30(土) 00:20:09.66 ID:jfGNsSDk.net]
程度問題だわな。
俺も今の C++ は C++11 が最低ライン (もちろん可能ならもっと新しい版) だと考えている。
あまり古すぎるのはかえって学ぶのに資料が見つけにくくなっている場合もある。

528 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:51:19 ID:wKbezNiV.net]
C++11に詳しそうだから教えて
あるテンプレート関数に渡される関数ポインタ、メンバ関数ポインタ、ファンクタ、ラムダの
戻り値の型を取得する方法を教えて

template<class R,class E,class...A> R f(E&& e,A... a)
{
using TypeOfCallableExec=/*ここ*/;
//...
}

529 名前:デフォルトの名無しさん [2022/04/30(土) 03:49:46.04 ID:zRkNYUvD.net]
>>509
C++17より前ならstd::result_of
C++17以降ならstd::invoke_result

return e(a...); とするつもりならRは不要。
返り値型はdecltype(auto)、
TypeOfCallableExec=decltype(e(a...));か、
TypeOfCallableExec=typename std::result_of<F(A...)>::type;
とでもしておけばいい

530 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 05:43:50.13 ID:wKbezNiV.net]
あいかわらず、いい加減な回答だなw

それでやってみろよwwww



531 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 07:04:59.56 ID:2aZ7UOTr.net]
構造体中の配列の特定の要素に対するメンバポインタって何で使えないの?

struct STRUCT {
int array[4];
};

int STRUCT::*pt = &STRUCT::array[2];

こんな事をやりたい

offsetofを使えって?

532 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 09:31:27.50 ID:OR8SZm5l.net]
>>512
同じことを思ってる人がいるけどダメっぽい
https://stackoverflow.com/questions/674635/member-pointer-to-array-element

533 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 10:58:35.53 ID:pjMZxOoQ.net]
質問ですが
他から渡されてきたstd::cout(ていうかstd::ostream)について
std::cout << std::left; (またはstd::right)
std::cout << std::setfill('_')
の状態が現在どうーなっているか知る方法って何かあるんでしたっけ

あと、ストリームに対して(独自のstd::left/std::right、std::setfill()を設定を含む)
独自フォーマットで出力した後ストリームの状態を元に戻す方法って何かあるんでしたっけ
std::ostringstream os; としてosに対してで独自フォーマットで出力して
std::cout << os.str();
ぐらい?
しかしこれにしてもstd::cout << setw(10000) << std::left << std::setfill('0');
とかされていたら左詰め/右詰め/パディングが独自フォーマットとして制御し切れていない気が……

534 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:11:18.79 ID:pjMZxOoQ.net]
つか実はostreamは使い終わったら、独自に使った書式指定について
cout << resetiosflags(...);
でリセットするのが作法?

535 名前:デフォルトの名無しさん [2022/04/30(土) 11:40:17.38 ID:u0zlL0D0.net]
('_')と('0')が顔文字に見えた

536 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:49:21.15 ID:qP6dl9 ]
[ここ壊れてます]

537 名前:mx.net mailto:  ('_')
||
| つ('0')
[]
[ここ壊れてます]

538 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:50:48.98 ID:xinPqoeI.net]
>>514
left/right は os.flags() の戻り値を std::ios_base::{left, right} でマスクして確認
https://en.cppreference.com/w/cpp/io/ios_base/flags

書式設定全体の保存・復元は一時的な ostream を作って copyfmt でやるのがいいらしいよ
https://stackoverflow.com/questions/2273330/restore-the-state-of-stdcout-after-manipulating-it

539 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 12:10:48.58 ID:pjMZxOoQ.net]
>>518
>left/right は os.flags() の戻り値を std::ios_base::{left, right} でマスクして確認
なるほど……

>書式設定全体の保存・復元は一時的な ostream を作って copyfmt でやるのがいいらしいよ
なるほど……
書式設定を記憶するだけのためにstd::iosオブジェクトを作るのかmjk、、、

540 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 13:59:17 ID:M4ctbMgQ.net]
https://ideone.com/JPtQV9
VCでは通らないが、GCCでは通るコード。正しデバッグ中・・・。

ブロックソート書いたんですよ、ブロックソート。
安定ソート書けないから横着してアルゴリズムヘッダーのヤツ使ったんですよ。
落ちるんですよ。

誰かたすけて!



541 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 05:16:07.73 ID:RKDZOMoi.net]
おまえらさぁ
openAPIがロハなのになんでいつまでもVCなんか使ってるのさ?

542 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 05:48:25.64 ID:TlTI4EO+.net]
円盤でお願いします

543 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 07:28:35 ID:cO13JXSW.net]
>>520
31行目で A = B = DD; しないで return してしまってるけどいいの?

544 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 09:52:18.27 ID:nBd2wfSC.net]
>>523
がーん。ありがとう。ありがとう。
https://ideone.com/Bb65gm
こんな感じになりました。デコーダ書かなきゃ。

545 名前:デフォルトの名無しさん [2022/05/01(日) 14:31:24.77 ID:ukM6vErn.net]
あるプロセスで、変数の型とアドレスはわかってるものとして、
それをc++のプログラムから書き換えるにはどうすればいいんですかね?
調べても情報があまり出てこなくて...

546 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:43:19.26 ID:9TCpWNNH.net]
>>525
アドレス分かってるんならそこにアクセスすれば
でもC++からはわかるわけねえわ

547 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:53:21.11 ID:vJsN8meg.net]
こんなんでいいんじゃね
mytype* p = reinterprit_cast<mytype*>(0xaabbccdd);
*p = 1000

548 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:55:46.12 ID:t4/NhzPt.net]
他のプロセスからってことじゃないの
WindowsならReadProcessMemory/WriteProcessMemory

549 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:56:17.49 ID:KjQtFKQ9.net]
アドレスがわかってると言いながら実は空間が違うとか。

550 名前:デフォルトの名無しさん [2022/05/01(日) 14:58:07.61 ID:ukM6vErn.net]
すみません、説明不足でした。
自分がやりたいのは、あるプロセスの変数をc++で作った別のプログラムから書き換えることです。
a.exeが持つ変数をb.exeから書き換える、みたいなことです。



551 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:03:02.21 ID:9TCpWNNH.net]
linux的にはptraceを調べるとか…

552 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:07:04.74 ID:t4/NhzPt.net]
リバースエンジニアリングでしょ
環境依存だしここで有益な答えが返ってくるとは思えない

553 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:07:49.80 ID:k85aGXIq.net]
実行時に書き換えるならば排他制御が必須

554 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:11:01.84 ID:Z9kcLIQb.net]
スタック変数やヒープ変数を実行前に書き換えるのは不可能

555 名前:デフォルトの名無しさん [2022/05/01(日) 15:13:35.34 ID:ukM6vErn.net]
皆さんありがとうございます。
>>528さんのものが使えるかもしれないので、一回調べながら触ってみます。

556 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:47:36.66 ID:V8gMjhaX.net]
>>534
プロセスって言ってんだから実行中の話だろうjk

557 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 16:19:28 ID:pvwx8N/t.net]
>>521
oneapi でなく openapi というのがあるの?

558 名前:デフォルトの名無しさん [2022/05/01(日) 16:52:28 ID:ukM6vErn.net]
readprocessmemory, writeprocessmomoryの詳しい使い方が載ってるサイトってありますかね...

559 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 18:15:25.12 ID:fSFndGfw.net]
>>513
マジか
結局キャストだな
中途半端で使えない機能なんか付けんなよ

560 名前:はちみつ餃子 mailto:sage [2022/05/01(日) 18:35:08.33 ID:qIevfvlJ.net]
>>538
https://docs.microsoft.com/ja-jp/windows/win32/api/memoryapi/nf-memoryapi-readprocessmemory
https://docs.microsoft.com/ja-jp/windows/win32/api/memoryapi/nf-memoryapi-writeprocessmemory
プロセスハンドルとアドレスと大きさを指示するだけで難しいことはなんもない。

ターゲットになるプロセスを見つける方法とかはたぶんこのあたりが参考になるかな……
https://docs.microsoft.com/ja-jp/windows/win32/psapi/enumerating-all-processes

公式ドキュメントは全体像が掴みづらい場合もあるけど、
この場合はたいした規模の話でもないからこれで十分でしょ。

外部のプロセスから逐一コピーして操作するのが面倒なら DLL Injection でプロセス内にプログラムを注入する方法もあるよ。



561 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 18:37:39.22 ID:dvAJjIlE.net]
srd::vectorも最初は誰がこんなクソコンテナ使うんだよっ
て言われてて皆好き勝手に独自のコンテナ実装してたらしいなw

562 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 18:42:14.03 ID:Rd1MW222.net]
>>539
まあ結構ニッチだと言うのとリンク先にも書いてある通り
struct STRUCT {
int* array;
};
int STRUCT::*pt = &STRUCT::array[2];
ってやられたら違うコードにしないといけないから面倒なんだろうね

563 名前:デフォルトの名無しさん [2022/05/01(日) 18:48:00.04 ID:ukM6vErn.net]
>>540
ありがとうございます!試してみます!

564 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 18:54:08.08 ID:fSFndGfw.net]
>>542
その例を上げるのはメンバポインタがわかってない人と思う

565 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 19:01:02.73 ID:fSFndGfw.net]
その例は構造体の中のintを指してないから
出来ないのは当たり前

566 名前:デフォルトの名無しさん [2022/05/01(日) 21:50:45.69 ID:t6KXJfhj.net]
>>521
oneapi最適化性能ショボくね?
Ryzenだからかもしれんがgfortranと速度同じくらいでビビったわ。

567 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 22:03:23.83 ID:Rd1MW222.net]
>>544-545
だからできないって話なんだがw

568 名前:デフォルトの名無しさん [2022/05/02(月) 06:08:38.44 ID:9K9pP+jI.net]
struct STRUCT
{
int array[2];
};

arrayはSTRUCT直属のメンバだからメンバポインタで指せるが
array[1]はあくまでarrayの要素であってSTRUCT直属のメンバではないので
これを指すようなメンバポインタは存在しない

569 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 06:48:46.84 ID:LNpTFVSP.net]
classのメンバ関数型が存在しない理由って何?

classのメンバ関数へのポインタのことではないよ
関数型も関数への参照も関数へポインタも認めてるのになぜメンバ関数は存在しないんだ

570 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 07:02:09.71 ID:8dvAAWOX.net]
できない話をいつまでもしてるのは脳に何か障害でもあるのか?



571 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 07:08:05.16 ID:LNpTFVSP.net]
理由を問うているんだけ、理解できないのか

脳に何か障害でもあるのか?

572 名前:デフォルトの名無しさん [2022/05/02(月) 07:36:33.49 ID:9K9pP+jI.net]
void func(void (CLASS::*pm)(), CLASS& ref)
{
*pm; //Error. メンバ関数ポインタには逆参照演算子が存在しない
(ref.*pm)(); //pmを実体化するには.*か->*しかない
}
メンバ関数型というのがもし存在するなら*pmのはずだが現実にはできない

573 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 07:56:46.72 ID:LNpTFVSP.net]
出来るできないを聞いているわけじゃない・・・
日本語理解できますか?

574 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 08:09:32.17 ID:rW7ccw75.net]
単純な逆参照*pmができるメンバ関数型はすべからくクロージャなるべし?
class Foo a;  // std::string Foo::someMemberFunc(int a, int b, double c)を持つ
class Bar b

575 名前:;  // std::string Bar::anotherMemberFunc(int a, int b, double c)を持つ

auto someMemberFunc = [=, &a](int a, int b, double c) -> std::string { return a.someMemberFunc(a, b, c); };
auto anotherMemberFunc = [=, &b](int a, int b, double c) -> std::string { return b.anotherMemnberFunc(a, b, c); };

std::function<std::string(int, int, double>* pm;
pm = &someMemberFunc;
std::cout << (*pm)(1, 2, 3.4); // a.someMemberFunc()が呼ばれる
pm = &anotherMemberFunc;
std::cout << (*pm)(5, 6, 7.8);  // b.anotherMemberFunc()が呼ばれる
std::function<std::string(int, int, double)> fn = *pm;  //  b.anotherMemberFunc()が呼ばれるためのクロージャにデリファレンスされる
[]
[ここ壊れてます]

576 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 09:03:37 ID:8dvAAWOX.net]
>>553
自分が欲しい機能は全て揃ってないとおかしいとかガイジすぎだろw

577 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 09:06:55 ID:6vh8Gvry.net]
あれが「揃ってないとおかしい」と読める読解力の方に問題がありそうだが

578 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 10:01:16.40 ID:8dvAAWOX.net]
理由「仕様です」ということも理解できないの?
まじで脳障害を疑った方がいいぞw

579 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 10:12:11.24 ID:Lc/e3xtf.net]
仕様がクソすぎる

580 名前:デフォルトの名無しさん [2022/05/02(月) 11:03:41.58 ID:/YgtvrIl.net]
無能ワイ、メンバ関数型がなんなのかよく分からない



581 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 11:30:26.72 ID:m3O8Sm5F.net]
ちんちんシュッ!シュッ!シュッ!

582 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 11:53:48 ID:JwCZPFEF.net]
>>549
適切な規格化(めんどくさい)や新たな実装(めんどくさい)が必要なわりに見合う有用性が無いと考えられているからでしょう。

583 名前:デフォルトの名無しさん [2022/05/02(月) 12:05:29 ID:9K9pP+jI.net]
>>553
いいだろう
では、仮にあったとしてどんな使い方を考えているんだ?

decltype(CLASS::func) mirror;
CLASS obj;
obj.mirror(); //これでobj.func();になればいいのか?

584 名前:デフォルトの名無しさん [2022/05/02(月) 12:29:35 ID:9K9pP+jI.net]
operator ?: がない理由も
仮にあったとして以下略への答えがないからだね

585 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 12:40:24 ID:+FOPwlZG.net]
>>559
安心しろ。俺もわからん。

586 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 13:38:33.63 ID:WQmMvuhJ.net]
>>547
違う話を出してきて出来ないと主張されても

>>548
メンバポインタの実体はただのアドレスのオフセットなんだから出来て良い
実際offsetofは出来る

結局制約が多過ぎてoffsetofとキャストを使うことになるなら
非常に中途半端な拡張と言わざるをえない

587 名前:はちみつ餃子 mailto:sage [2022/05/02(月) 13:50:32.84 ID:dhIldcoi.net]
>>565
メンバでないものをメンバポインタの範囲で扱うことは出来るけど「やるべきでない」からやってないって話だろ。
まあそれを言ったら C++ には奇妙なものはいっぱいあるから今更ではあるけどさ。

それに offsetof は offsetof で色々と制約があるからなぁ。
特にスタンダードレイアウトである必要がある (そうでないときは未定義) というのがなかなか厳しい。
可能な場合には型システムの枠組み内で扱いたい。

588 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 14:01:47.48 ID:8dvAAWOX.net]
>>565
仕様として出来ないことと実現不可能なことの区別もつかないのかよw

589 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 16:26:17 ID:WQmMvuhJ.net]
>>566
配列の要素はメンバ
ではないと
まあそんな言葉の定義はどうでもいいとして

なぜやるべきでないと思う?
出来たら何がまずい?
何が不都合?
誰もこの点にふれてない

ただ単に仕様と言われても
その仕様が糞と思うだけ

590 名前:デフォルトの名無しさん [2022/05/02(月) 16:53:07.08 ID:9K9pP+jI.net]
>>568
よくわからんが、こう言いたいの?
struct STRUCT
{
int array[2];
};

int STRUCT::*pm;
pm = &STRUCT::array[0];
pm = &STRUCT::array[1];
STRUCT obj;
(obj.*pm) = 1; //obj.array[1] = 1; こうなるべき



591 名前:はちみつ餃子 mailto:sage [2022/05/02(月) 17:15:19.01 ID:dhIldcoi.net]
>>568
は?

> どうでもいいとして

> 誰もこの点にふれてない

触れたことを勝手に無かったことにしてるのはお前じゃん。
あほか。

592 名前:デフォルトの名無しさん [2022/05/02(月) 17:32:38.90 ID:9K9pP+jI.net]
>>568
どうでもよくないぞ
オブジェクトが何に属するのかは
OOPの根幹に係わる重要なことだ

593 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 17:34:25.32 ID:JwCZPFEF.net]
>>570
配列の要素がメンバでないことは、現状のメンバ変数へのポインタが配列要素に適用できない理由を示すものと思いますが、
メンバ変数へのポインタを配列要素に適用可能にするという拡張の話について「やるべきでない」という理由にはならないかと。

594 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2022/05/02(月) 17:56:52 ID:dhIldcoi.net]
>>572
そいういう拡張はあり得ると思う。
私の感覚では (メンバ内の) 配列の要素を許すのだともはやメンバポインタではない何かだろうという意識で書いてた。

つまり、メンバポインタとしてやるべきではないということと、
メンバポインタを拡張して出来上がる何者かで出来るようにするというのは両立するってことね。

595 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:01:04.13 ID:+FOPwlZG.net]
なんとなくわかったけど、
c において配列を指す変数がポインタと同一視されるんだから、cを踏襲するc++でも配列を指す変数がポインタ扱いになるのはおかしなことじゃない。そうすると配列の要素はポインタの先になるので、配列を指すメンバー変数の要素もポインタの先になってメンバーじゃなくなりますな。
というか、こんなくだらないことでゴチャゴチャやってたの?

596 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:06:02.86 ID:+FOPwlZG.net]
>>574
文章ミスしたわ。
どちらにしてもややこしいけど。

誤:配列を指すメンバー変数の要素も
正:配列を指すメンバー変数の配列の要素も

597 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:23:20.44 ID:WQmMvuhJ.net]
>>570
構造体の中の配列の各要素は当然構造体の一部
つまりメンバ
というのが私の認識だが
その結果はどうでも良い
ここを議論しても意味がない
単なる言葉の定義の話だから

そうじゃなくて
技術的な話をしたいわけで

以下なら&S::a1と出来る
これで実質&S::a[1]になる

struct S {
...
union {
int a[3];
struct {
int a0;
int a1;
int a2;
};
};
};

こんな事をやらないと出来ないのはなぜか?

598 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:27:19.33 ID:WQmMvuhJ.net]
>>571
>>576

599 名前:はちみつ餃子 mailto:sage [2022/05/02(月) 18:34:51.86 ID:dhIldcoi.net]
>>576
これは抽象の問題だから言葉の定義こそが本題だよ。

600 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:40:58.17 ID:HZ9CcBZq.net]
おじいさんみたいな改行と文体



601 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:45:56.08 ID:JwCZPFEF.net]
>>578
>576は抽象の問題は話していないので、そういうことにはならないかと。
言葉の定義が重要というならまず「メンバポインタ」などという未定義の用語を使うべきではないでしょうし。

なお>574の「配列を指す変数がポインタと同一視される」といった不正確な理解も、
厳密な定義を語るにあたっては前提が不適切と思います。

>576 などでは現行の pointer to data member を拡張した "pointer to subobject" とでも言うようなものの
可能性が探られているものと理解しています。
現状でそういった機能が無い理由は >561 になると思ってますが。

602 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 18:53:30.65 ID:WQmMvuhJ.net]
配列にも入れ子の構造体にも使えない
offsetofの劣化コピーじゃ
何のためにわざわざ仕様追加したんだかわからんねえ

603 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 19:03:28.83 ID:JwCZPFEF.net]
>>581
追加された理由は offsetof に伴う危険なキャスト無しで同等の機能を提供したかったからでしょうね。
そもそもCでさえ offsetof を使ったメンバアクセスはすべて規格上は未定義動作の範疇のままであり、
未定義動作を認めないとする観点で言えば pointer to data member は純粋な拡張として有用です。

現行コンパイラ実装での挙動まで含めて考えれば、挙げられているとおり offsetof の適用可能範囲のほうが
ずっと広いんですけども。

604 名前:デフォルトの名無しさん [2022/05/02(月) 20:14:09.92 ID:pVfL1f+B.net]
ninja使わないで普通にmakeするとものすごく遅いな

605 名前:
ninjaって凄く速かったんだな。
[]
[ここ壊れてます]

606 名前:デフォルトの名無しさん [2022/05/02(月) 20:49:04.97 ID:/YgtvrIl.net]
純粋な疑問なんだけどメンバ変数である配列の要素のポインタを変数として扱えて何が嬉しいの?
使い方が思い浮かばない…

607 名前:はちみつ餃子 mailto:sage [2022/05/02(月) 20:59:32.26 ID:dhIldcoi.net]
そもそもメンバを指すポインタだってそんなに使うもんじゃないしな。
std::is_class の実装に使えるんじゃねーのという文脈で登場する程度。

608 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 10:38:15 ID:J5PtY6cN.net]
ていうか>>512の例ができない理由の説明は>>548で良くね↑
>>542のコードを借りるが
struct STRUCT {
 int* array;
};
int STRUCT::*pt = &STRUCT::array[2];
という最後の行は
>c において配列を指す変数がポインタと同一視されるんだから(>>574)
に依存した便法が混じっているから話がおかしくなるので便法抜きで厳密に書いたら
int (STRUCT::*pt)[] = &STRUCT::array;
であって配列内のオフセットがメンバポインタで表せる余地が無いことは確定的に明らか

609 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 10:41:06 ID:J5PtY6cN.net]
構造体STRUCTのメンバを指すメンバポインタというものが
構造体STRUCTの直接の配下のメンバ以外まで指せる仕様にしたら
構造体STRUCTの中に構造体SSTTRRUUCCTTが存在する入れ子のケースにおいて
構造体STRUCTのメンバポインタでなんでSTRUCT::SSTTRRUUCCTTのメンバを指せないんじゃヴォケ、
おなじSTRUCTのメンバやろうが、
みたいなお馬鹿疑問を抱くアフォが出てくるに違いないのと同じ

610 名前:デフォルトの名無しさん [2022/05/03(火) 12:03:52.41 ID:uzYP/aDa.net]
エラーログかとおもた

Amnesty International USA
https://twitter.com/amnestyusa/status/1521295013044539392
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
Abortion is a human right
(deleted an unsolicited ad)



611 名前:デフォルトの名無しさん [2022/05/03(火) 18:51:24 ID:TQMg8rzt.net]
>>587
最後の止め乙

612 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 22:24:19.43 ID:J5PtY6cN.net]
ついでに漏れもお馬鹿質問したいのですが
ファイルスコープの関数をextern "C"する正しいやり方教えてクレメンスorz
目的はatexit()への登録で、登録する関数自体は公開したっくないケース

// (1)
extern "C" void foo(void) { ... } // NG: ファイルスコープにならない

// (2)
extern "C" void foo(void);
static void foo(void) { .. }  // NG(?): コンパイラに怒られそう

// (3)
namespace {
 extern "C" void foo(void) { ... } // NG(?): コンパイラに怒られそう 怒られないとしたら漏れの知っている無名名前空間の実装と違う
}

// (4)
extern "C" {
 static void foo(void) { ... } // NG(?): コンパイラに怒られそう
}

613 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 22:26:06.85 ID:J5PtY6cN.net]
やっぱ拡張子を ".c" にしてstatic void foo(void) { ... }するしかなさげ?

614 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 22:39:49.52 ID:k6J/qudN.net]
> ファイルスコープの関数をextern "C"する
一行で矛盾しているが

615 名前:デフォルトの名無しさん [2022/05/03(火) 22:40:29.61 ID:EqZaa2d1.net]
atexitが求めているのは関数ポインタだけなのでextern "C" はそもそも必要ない

extern "C" は関数の内部名をC言語形式(func()→_func)で扱うか、
C++形式で扱うか(func()→_Z3funcv、引数の型によって名前が変わる)だけの違い

namespaceとの相互作用は知らん

616 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 23:03:04.80 ID:J5PtY6cN.net]
>>593
た確かに…!
VCだとC++リンケージの関数でも問題無く登録できてイゴイタ
ここの記述に引きずられてしまった↓
https://www.ibm.com/docs/ja/zos/2.2.0?topic=functions-atexit-register-program-termination-function
C および C++ のリンケージ規約は非互換の ため、atexit() は C++ 関数ポインターを受け取ること

617 名前:ェできない。
C++ 関数ポインターを atexit() へ渡そうとすると、コンパイラーが エラーとしてこれにフラグを付けることになる。
C++ atexit() 関数を使用するには、atexit() に登録されたすべての 関数を extern “C” として宣言することに より、
これらの関数が C リンケージを必ず持つようにしなければならない。
[]
[ここ壊れてます]

618 名前:デフォルトの名無しさん [2022/05/03(火) 23:16:58.67 ID:LdVfvoP5.net]
>>594
なんだそれは...IBMコンパイラ特有の制限か?

Linuxでもそんな制限はないし
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/atexit.3.html

619 名前:デフォルトの名無しさん [2022/05/04(水) 06:21:09 ID:TqagpjaD.net]
9.11 Linkage Specification
2 Two function types with different language linkages are distinct types even if they are otherwise identical.

620 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 10:35:59 ID:GAB8HZoP.net]
2^17179869183って計算できる?



621 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:01:15.82 ID:vYlyugAJ.net]
俺の脳じゃ無理

622 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:12:19.56 ID:OOPwcDJ/.net]
>>597
計算できるというのを、どんな手段を使ってでもそれを
例えばメモリ上に何らかの表現として出力する、という意味にするのであれば、余裕で可能かと?

623 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:15:08.92 ID:GAB8HZoP.net]
>>599
10進にして全桁表示可能だろうかと思って
10進での答えが知りたいわけだ。

624 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:16:25.61 ID:OOPwcDJ/.net]
>>600
可能だと思うよ
自分は詳しくないけどそういう大きい桁に関するライブラリの書き込みをここでよく見るので

625 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:19:13.87 ID:OOPwcDJ/.net]
でもその前にどのくらいのメモリが必要そうかの見積もりはざっくりやったほうが良さそうね

626 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:20:53.78 ID:OOPwcDJ/.net]
ざっくり2GBなのか
なんか現実的ではない気がしてきた
少なくとも家庭用のPCなんかでは無理そうかも

627 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 11:48:39.54 ID:GAB8HZoP.net]
>>603
ありがとう。
まだ時間がかかりそうだな。
ちなみに128倍精度浮動小数点数の最大値の計算の途中で出てくる計算。

628 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 14:50:41 ID:RRH/ygkO.net]
128倍精度ってなんですか(・∀・)?
倍精度で表せる最大値((2^(1023+1)) - epsilon)の2^128倍は
(2^(130944+1)) - epsilon
であって
2^17179869183
よりカナーリ小さげ

629 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 15:26:18.04 ID:RRH/ygkO.net]
ゴメス落ち着いて考えたら倍精度で表せる最大値は
 ((2^(1023+1)) - epsilon*(2^1023) = (2^(1023+1)) - (2^970)
で、その128倍の精度だとしたら
 ((2^(130944+1)) - (128倍精度のepsilon)*2^130944) = ((2^(130944+1)) - (2^122771)
ここで
 128倍精度のepsilon = 2^(-8173)
と仮定ェ、
(∵全体が倍精度の128倍=1024 byte = 8192 bitで指数部が8 bit増加で19 bit、符号ビット1 bit
 やったら仮数部は8192-19-1 = 8172 bitで、最上位の1を省略する
 ケチ表現なので実質2^(-8173)が仮数部で表せる最小値すわなち128倍精度のepsilon

630 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 15:36:55 ID:GAB8HZoP.net]
倍精度浮動小数点数が64ビット浮動小数点数なので、
128倍精度浮動小数点数は4096ビット浮動小数点数。

IEEE754-2008の推奨による仕様での最大値の計算をしていたんです。



631 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 15:38:07 ID:GAB8HZoP.net]
k bit浮動小数点数
https://irem.univ-reunion.fr/IMG/pdf/ieee-754-2008.pdf#page=25

632 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 15:39:34.72 ID:GAB8HZoP.net]
ちなみに128倍精度の最大値は
(2^((2^(35-1))-1))*(2-(2^-4060))
で計算可能かと。

633 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 15:59:04.91 ID:GAB8HZoP.net]
倍精度浮動小数点数の場合。

>(2^((2^(11-1))-1))*(2-(2^-52))
=
+ 1797 69313
48623

634 名前: 15708 14527 42373 17043 56798 07056 75258 44996 59891
74768 03157 26078 00285 38760 58955 86327 66878 17154 04589
53514 38246 42343 21326 88946 41827 68467 54670 35375 16986
04991 05765 51282 07624 54900 90389 32894 40758 68508 45513
39423 04583 23690 32229 48165 80855 93321 23348 27479 78262
04144 72316 87381 77180 91929 98812 50404 02618 41248 58368.

309桁の値。

となるので、計算式は合っているはずだが根拠を失念してしまったw
ネットのどこかに書いてあったはず。その式を使っただけ。
128倍精度の場合、35が指数部(符号含む)で4060が仮数部(符号含まない)
[]
[ここ壊れてます]

635 名前:デフォルトの名無しさん [2022/05/04(水) 17:03:38.52 ID:TqagpjaD.net]
>>597
2GiBのメモリをゼロクリアしてからMSBを1にするだけ
簡単すぎて話にもならん

636 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 17:27:38.78 ID:fooXr7Ib.net]
10進数でデータが欲しいって書いてあるのが見えないかw

637 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 17:31:26.47 ID:Dfc3wQ1w.net]
C++でやることにこだわりないならPythonが手っ取り早いぞ
あれのintはデフォルトで多倍長だから

>>> f=open(r"C:\pow2.txt", "w")
>>> print(2**17179869183, file=f)

638 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 17:31:51.73 ID:tbM1xmku.net]
10進数でデータの意味が分からんが一桁づつ印字すれば良いだけだろ

639 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 17:32:35.63 ID:GAB8HZoP.net]
>>613
ありがとう。
参考になります。

640 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 17:57:22.19 ID:GAB8HZoP.net]
スレチだけど
https://paiza.io/projects/
のpython3で
print(2**17179869183)
をやってみたところエラーになった。
print(2**171798)
では答えが出る。
メモリかな?



641 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 19:39:52.57 ID:CsYq7Xth.net]
codepad.org/ でも print(2**171798) までやね
print(2**1717986) だと time out
print(2**171798691) だと MemoryError

642 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 00:09:45.17 ID:u08Uuhhj.net]
下記は一部ですので不完全です、型をソートしています。
index_sequenceで展開が面倒なんですよね、何かうまい方法ありませんか

template
<
 template<typename> class Orderable,
 typename     ListT
>
class SortTypes;

template
<
 template<typename> class Orderable,
 template<typename...> class List,
 typename...     Ts
>
class SortTypes<Orderable,List<Ts...>>
{
 template<typename SeqT> struct Impl;

 template<std::size_t... Is>
 struct Impl<std::index_sequence<Is...>>
 {
  static constexpr std::array<std::size_t,sizeof...(Ts)> indexes =
   []{
     using Ord = std::common_type_t<decltype(Orderable<Ts>::value)...>;
     struct Pair {Ord;std::size_t ndx;};
     Pair arr[] = {{Orderable<Ts>::value,Is}...};
     insert_sort(arr,0,sizeof...(Ts),[](auto x,auto y){
      return x.ord < y.ord;
     });
     return std::array<std::size_t,sizeof...(Ts)>{ arr[Is].ndx...};
    }();
  
  using type = List<std::tuple_element<indexes[Is],TypelList<Ts...>>...>;
   
 };
};

643 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 02:32:03.93 ID:FeY8iOM4.net]
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案

644 名前:3割→8割へと成長を遂げた「クラウドテック」の軌跡

リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング

1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!

『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル

副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望

茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金

長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給

フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
[]
[ここ壊れてます]

645 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 03:10:15.14 ID:Hm4Z5Kkb.net]
>>597
やったったが愚直に10で割って下の桁から求めるだと手元のPCでは200年ぐらいかかりそう……
https://ideone.com/6BG7hf

つなみにこれは2^0、2^8、2^64、2^1000には一瞬で正解する
[302] 100.000000 % (38/38) --- 0 sec
2^1000 = 1.071508607186267320948425049060001810561404811705533607443750388 x 10^301

646 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 03:10:34.57 ID:Hm4Z5Kkb.net]
10より大きい10^n(100万とか)で割ることにしたら多少は改善するかもしれないが、
最終的に10^nのn桁を10進数表示することを繰り返すことを考えると10で割るトータルの回数に違いが出ないから改善しなさげ……orz

むしろ2進数で計算して10進数にするのではなく最初から10^n進数表現(ただし10^n < UINT32_MAXとか)で2^Nの計算の方を実質10進数でやった方が速そう
計算の手間がO(N^2)なのは変わらないが、割り算無しで済むのは大きいい(多分、

647 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 03:19:38.09 ID:Hm4Z5Kkb.net]
2^Nを10^n進数表現(ただし10^n < UINT32_MAXとか)で計算するのはうまくやれば(10^nをUINT_MAXとかよりやや小さめにしたら)
掛け算によるキャリーの伝搬頻度を減らせるから副次的にさらなる高速化の余地が生まれ得る、

648 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 06:04:52.05 ID:zLdy+6M7.net]
繰り返し二乗法で大きい素数のmodを計算すれば良いだけ
整数の商がいくらかもすぐ計算できるので、簡単に復元できる
復元した値をメモリに持つかどうかは別の話
はい終わり

これしきのことも分からない奴ら頭ヤバいよ
言語仕様の話ばっかり大好きでアルゴリズムの知識が微塵もないボンクラ
競プロキッズのこと

649 名前:馬鹿にできないね []
[ここ壊れてます]

650 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 06:34:28.46 ID:JqRzkj2D.net]
素直に10進多倍長で計算すればいいだけ
今のPCならすぐ



651 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 06:58:12.94 ID:ghaa3vLm.net]
>>623-624
すごいね
じゃあ 2^17179869183 の解をここに書いてみて
あとそのプログラムコードも

652 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 08:43:37.74 ID:Hm4Z5Kkb.net]
自演ちゃうねん
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?

653 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 10:32:36.82 ID:CLlK/Ylr.net]
興味本位で全桁表示したいだけなら5171655947桁あることを知って諦めてほしい
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ

概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる

654 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 10:34:08.63 ID:QrYoef2b.net]
10000007とかで割れって言ってるんだろ
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと

655 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 10:39:30.08 ID:CLlK/Ylr.net]
あごめん桁数は5171655948が正しいね

656 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 10:41:25.83 ID:dV/D8sCJ.net]
>>628
7の誤差ってなにけ?
整数なのに誤差とかあるん?

657 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 10:44:36.09 ID:vEkkTSCd.net]
>>627
10進での桁数は
17179869183*log2/log10
https://ja.wolframalpha.com/input?i=17179869183*log2%2Flog10
で計算できることは知っているが、
先頭の値はどうやって出すの?

658 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:11:25.53 ID:Lziv+Vr+.net]
ていうか対数知らんのだろうね

659 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:31:29.78 ID:E1ivHqdi.net]
>>613
自動的に昇進するだけで、デフォルトで多倍長って表現は違和感。
2**-1は0.5だけどデフォルトで浮動小数点ってわけじゃないよね

660 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:36:06.02 ID:CLlK/Ylr.net]
>>631
小数部だけをまた10の肩に乗っければいい



661 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:47:06.17 ID:Z9g54GsT.net]
整数で返すべき関数の実装あるんか?

662 名前:デフォルトの名無しさん [2022/05/05(木) 12:32:26.31 ID:Ng8+cu+X.net]
GMPでやってみたけどoverflowで落ちるな

663 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 12:52:41.09 ID:vEkkTSCd.net]
皆さんすみません>>597です。

2^17179869183

とりあえず
10^5171655945.66625415874401993568579902587321942922330151106009...
で勘弁してください。

実数が分かれば文字数で桁数も分かりますので、
実数が知りたかったんですが、ここまでしか分かりません。
お手数おかけしました。
多倍長電卓で計算できないんでプログラムならできるのかな?と思ったわけです。
現時点では計算時間とメモリを食いそうですね。

664 名前:デフォルトの名無しさん [2022/05/05(木) 17:24:23.79 ID:irZh29WM.net]
ざっくりとした大きさや上下数桁はわかっても全体を丸々把握するのは厳しそう

665 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 18:10:40.93 ID:wHYrtDCY.net]
https://ideone.com/O1rs45
誰か助けてー。
ウエブのレクチャー見て書いたんだけど、一件通ったと思ったらほかのテストが通らない。
デコーダが悪いのだろうか?というか、解釈狂ってるかなぁ??マジ解らん。

アドバイ

666 名前:スクレクレ。 []
[ここ壊れてます]

667 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 18:12:32.63 ID:wHYrtDCY.net]
まじ わか らん

668 名前:蟻人間 mailto:sage [2022/05/05(木) 18:17:21.57 ID:/C0Dx8BU.net]
>>639
std::uniform_int_distribution<int> ui('A', 'z');

大文字小文字?

669 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 19:01:19.69 ID:wHYrtDCY.net]
Aのほうが数字的に小さいのですよ。

670 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 19:06:48.31 ID:p/xHapT/.net]
>>639
V.push_back({ { D[i] }, i }); は V.push_back({ D[i], i }); じゃないの?



671 名前:デフォルトの名無しさん [2022/05/05(木) 19:40:11.06 ID:jNTEQQGI.net]
>>639
プログラムの意図がわからんから投げたわ

1. Data型の<1>要素の意味はなんだよ。typedefした行のコメントに書いといてほしい
2. 関数名を流し見る限り、ソート・エンコード・デコードの3つの仕事がある。中途半端に仕事が混ざってない?

672 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 19:50:34.56 ID:p/xHapT/.net]
>>644
ブロックソートアルゴリズムの実装をしているだろう。
とすると size_t はソートバリエーションのインデックスを表していると思われる。

673 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 21:14:55.46 ID:tw5Ro1fM.net]
Wikipediaのブロックソートを実装しようとしているのなら、
あちこち違ってるんで、修正版を貼っておく。
https://ideone.com/q008E8

674 名前:デフォルトの名無しさん [2022/05/05(木) 22:10:21.31 ID:CGnulbl/.net]
int64_tとsize_tを暗黙の型変換を期待して混ぜて計算するとはまる?

(int64t - int64t) + sizet >= int64t
の比較をしたら2つ目のint64tが大きくなっても(とは言っても全ての値は10~-10くらい)boolの値はずっと1でした。
比較の前まで切り出してprintfすると正しい値が出るのですが、比較式に組み込むとおかしくなります。
sizetをint64tにキャストすると正しく動きました。

暗黙の型変換はsizetをint64tにしてくれないのでしょうか

環境はWSL2のg++です。

教えて下さい

675 名前:はちみつ餃子 mailto:sage [2022/05/05(木) 22:59:30.02 ID:MaGUTczU.net]
>>647
色々と面倒な細かいルールはあるんだが、大まかには

・ 二項演算子は原則としては大きい側の型に揃えてから計算する (符号は符号無しが優先。 結果の型もそれ)
・ size_t の大きさは処理系定義 (符号無しであることは保証される)
・ signed な型が unsigned に変換されると変換後の型の最大値より 1 大きい値で mod をとった値になる

というのがこの場合にかかわる重要なルールだと思う。
size_t は処理系定義だからその環境でどうだかわからんが uint64_t 相当だと仮定するぞ。
int64_t - int64_t の型は int64_t で、 int64_t + size_t は uint64_t になる。
つまり int64_t-int64_t の値が負数の場合でも常に正の値に修正される。
しかも値として常に 10~-10 くらいということは、
unsigned な値への型変換規則によってかなり巨大な値になってしまう。
たぶんこれが意図しない挙動の原因だと思う。

676 名前:はちみつ餃子 mailto:sage [2022/05/05(木) 23:03:22.90 ID:MaGUTczU.net]
>>648
符号無しが優先って書いちゃったけど、これは大きさが同等なら符号無しが優先ってことね。
大きさに差があるなら大きい方の符号が採用される。
(大きさって言ってるけど実際には順位 (rank) の序列が定められている。 まあ大きさの順なので実質同じやろ。)

677 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 23:06:38.57 ID:2L8NgwAH.net]
size_t が非負の32 bit なら、int64_t の範囲内だから、OK だけど、
size_t が非負の64bitなら、int64_tの範囲外で無理

int64_tの非負の範囲は、63bitしかないから

678 名前:はちみつ餃子 mailto:sage [2022/05/05(木) 23:20:02.75 ID:MaGUTczU.net]
例としてこういうのがあるとわかりやすいかな。

#include <iostream>
#include <cstdint>

int main(void){
auto a=std::int64_t(6)-std::int64_t(8)+std::uint64_t(1);
std::cout << a << std::endl;
}

結果として 18446744073709551615 が表示される。

679 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 23:39:48.09 ID:Hm4Z5Kkb.net]
というわけで高速化すた、
https://ideone.com/TWKDT6

動きを見る限り、2^17179869183が計算が終わるまで手元のPCで8時間ぐらいの見込み

(検算)
次のぐらいなら一瞬で出る(小数点の位置が手抜きなので指数の解釈に注意
2^1000 = 0000001 0715086 0718626 7320948 4250490 6000181 0561404 8117055 3360744 3750388. x 10^298
2^171798 = 0000002 2448900 7901275 1700257 1990086 5699838 8910190 8350859 7305786 1643657. x 10^51713

2^171798は>>620のでは4秒かかかっていたやつが100 msぐらいで出る

680 名前:647 mailto:sage [2022/05/05(木) 23:52:14.24 ID:CGnulbl/.net]
皆様ありがとう。
たいへん納得できました



681 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 07:02:57.27 ID:kL1BvaNc.net]
ゴメス8時間と言う見積は指数の桁を一つ少なかった2^1717986918で見積もってたorz
やったら最新状況は↓こんな感じでこの後4^9×5815 = 1,524,367,360秒 = 48.304年かかることに、。n_
Calculating 2^17179869183 ...
n=17179869183, mbuf sz=2 --- 0 sec
n=8589934591, mbuf sz=2 --- 0 sec
n=4294967295, mbuf sz=2 --- 0 sec
...(中略)...
n=8191, mbuf sz=180374 --- 24 sec
n=4095, mbuf sz=360748 --- 96 sec x 4
n=2047, mbuf sz=721494 --- 385 sec x 4.10
n=1023, mbuf sz=1442986 --- 1467 sec x 3.81
n=511, mbuf sz=2885970 --- 5815 sec x 3.96

682 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 10:53:36.44 ID:2sf+UfT7.net]
生きてるうちに終わりそうでよかった

683 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 12:17:44.01 ID:DqDgjvgu.net]
python超初心者スレでひな形を教えてもらってpythonでプログラミングしたところ、

2^17179869183

4.637182185095045843877145312775985050353215513064979818029199207764811280740258379690028942685133666E+5171655945

になるようです。
ご参考まで。精度等未確認ですが。

684 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 12:40:01.31 ID:DqDgjvgu.net]
>>656
ちなみにこの計算は、
128倍精度浮動小数点数の最大値の計算で出てくる式の掛け算で区切った左側の値です。

128倍精度浮動小数点数 (2^((2^(35-1))-1))*(2-(2^-4060)) 5171655946桁の値 有効桁数1222桁

(2^((2^(35-1))-1))*(2-(2^-4060))

9.274364370190091687754290625551970100706431026129959636058398415529622561480516759380057885370267332E+5171655945
という値になりました。

精度等確認できる方はお願いします。
仮数部の最終桁の値は丸めになっているようなので+1されている可能性があります。

685 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 13:36:52 ID:dNZjdeLr.net]
>>646
修正感謝。自分のコードに転写してみたらちゃんと動いた。
これちゃんとブロックソートか解らないけど、可逆ではあるので圧縮してみるね。
本当にありがとう。

686 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 15:08:33.81 ID:dNZjdeLr.net]
https://ideone.com/xxiusG
詐欺れなーい。LZWの1ワードが2バイトだと、若干損位で収束してしまうな。

何でだー。圧縮理論のはずだろ~~。

687 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 15:20:41.30 ID:HAMEIRFi.net]
延々同じようなことやってる低学歴さんたちって>>623見えんの?

688 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 15:25:15.07 ID:P9K99 ]
[ここ壊れてます]

689 名前:Ehi.net mailto: C++ のプログラムでサスペンド/復帰をお手軽に実装するための定番の方法ってないですかね?
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです
[]
[ここ壊れてます]

690 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 15:25:29.57 ID:bNsO3W2u.net]
>>659
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ



691 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 15:28:31.87 ID:dNZjdeLr.net]
>>662
噂によるとLZWはエントロピー圧縮では無いので出来ても良いかと思ったんだけど、駄目か。
根拠は辞書捨てるからだけどね。

とりあえず完成。

692 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 16:06:26 ID:DVOROdCT.net]
>>661
WM_POWERBROADCAST ggrks

693 名前:デフォルトの名無しさん [2022/05/06(金) 17:03:00.97 ID:Ai+BgFMJ.net]
圧縮方式がなんだろうと可逆圧縮はデータ長が短くなるケースがあるならデータ長が長くなるケースが必ずある

65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。

このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない

694 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 17:26:03.51 ID:dNZjdeLr.net]
>>665
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。

695 名前:はちみつ餃子 mailto:sage [2022/05/06(金) 18:18:33.94 ID:lqMO+ITd.net]
データ圧縮時にあり得る最大伸長率をまとめたサイトをどこかで見たような記憶があったんだけど
あらためて探すと見つからない……。 幻だったんだろうか。

696 名前:デフォルトの名無しさん [2022/05/06(金) 18:30:36.95 ID:jJyKyUF7.net]
>>667
ZipBombとかやべーやつもいるから安全に展開できるかの仕様の確認目的かな?

正攻法での最大圧縮率とかだと話が変わってきそうだが

697 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 20:00:41.83 ID:AeHK35lN.net]
>>660
繰り返し二乗法は分かったのだが
modを取る大きい素数の選び方が分からないので教えてほしい

698 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 20:02:30.43 ID:L9gk7Obb.net]
>>664
Linuxではどうすればいいの?

699 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 20:05:10.12 ID:O7Z7ebwH.net]
内部クラスを外部クラスが継承するって不可能?
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか

700 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 20:10:36.04 ID:DVOROdCT.net]
>>670
SIGなんちゃら系だろ
知らんけど



701 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 20:36:05.94 ID:bNsO3W2u.net]
>>671
無理だろ

702 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 22:11:28 ID:j0ngZiiW.net]
>>623
無理だろ

703 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 23:29:10.82 ID:j0ngZiiW.net]
>>597
30分くらいで計算できた

704 名前:デフォルトの名無しさん mailto:sage [2022/05/06(金) 23:34:15.82 ID:j0ngZiiW.net]
計算結果いる?
5GBくらいのテキストファイル

705 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 00:00:32.86 ID:8cLtDCyH.net]
ああもう48年後か…
おまいらまだ生きてるか?

706 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 00:32:32.99 ID:hLdUgsLX.net]
>>676
先頭100桁とE+の値(文字数でもいいです)と最後の20桁ください。

707 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 01:43:20.82 ID:s6tDba0D.net]
1ゲットズザー!!!111!!111!c⌒っ゚Д゚)っ
https://ideone.com/R3szJK

2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5893980 9439277. x 10^5171655888
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3531670 5894606 3902528. x 10^5171655888

100 msで計算できるようにしたったわ!

>>675
暗算はスレチ

708 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 01:50:30.88 ID:s6tDba0D.net]
つなみに基数変換アルゴリズムにはトーナメント方式というものがあって並列計算に持ち込めるらし
星の数ほどプロセサーが使える場合は有効かもしれん
富岳を使える機会があったらやってみたい

709 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:01:09.56 ID:i0ZrzBre.net]
>>678 >>679
それだけなら>>657の128倍精度のライブラリで計算外すればすぐでは?

710 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:05:54.40 ID:s6tDba0D.net]
なにおうヽ(`Д´#)ノ ムキー!
2^17179869183 is between
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1686901 0642565. x 10^5171655258
0000000 0000046 3718218 5095045 8438771 4531277 5985050 3532155 1306497 9818029
1992077 6481128 0740258 3796900 2894268 5133665 8876785 8487588 5591832 7186419
0576212 7656864 8464720 4285493 3923042 9654230 7916817 0776591 7647233 1128072
2760420 2266531 9507091 8968753 5716084 2962215 4728982 6664323 6555234 1274646
4896521 9429451 2975764 8380822 6363423 2746025 0005054 5131536 2217832 5023004
1605005 9971605 5861808 1342288 9537948 8099475 2493069 5439539 2974540 8604555
3827776 8910650 1779698 0664637 7405672 7472854 5855966 0105172 1933481 1967719
5700701 3333182 0937700 3166605 4871435 3734677 0010217 6905552 3397265 0416277
0094988 0613651 2390001 0317736 9989814 4998699 5188652 7509316 0899781 9619323
5715923 0653762 3370836 8150405 6226421 7362228 9333270 6654384 1687053 4062589. x 10^5171655258



711 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:06:56.87 ID:i0ZrzBre.net]
>>682
筆算法じゃ全桁計算は無理

712 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:12:56.32 ID:s6tDba0D.net]
>>683
48年ぐらい待ったらできうる

713 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:17:43.49 ID:i0ZrzBre.net]
2^17179869183 全桁

https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(ギガファイル便 テキストファイル)

714 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 02:20:59.45 ID:dujXhAGl.net]
なぜコードでなく計算結果なのか

715 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 03:43:06.05 ID:bh3xusof.net]
>>661,664,670,672
すみません。Linuxを想定していました

716 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 04:06:12.29 ID:P9LDpr78.net]
>>678
素人なので全部は計算出来ないですが
最後の20桁ならすぐに計算できました
88085753133198737408

717 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 04:20:35.96 ID:qg2oNGE7.net]
なんかCRIUとかいうのでできるらしいぞ

718 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 05:41:08.75 ID:GCz/eJtw.net]
乗算は量子演算使わないと万年かかる

719 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 07:36:33.84 ID:hLdUgsLX.net]
>>685
全桁データだからって正確とはかぎらんのかーい!

720 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 07:40:26.77 ID:i0ZrzBre.net]
合ってると思うけど
2通りで計算して同じだったし



721 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 08:15:43.50 ID:hLdUgsLX.net]
先頭数十桁と最後の数十桁は合っていそう。
文字数は5171655817で合ってるの?

722 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 08:21:32.36 ID:hLdUgsLX.net]
>>637
はウルフラムでの17179869183*Log2/log10の計算結果

723 名前:
>>656
はpythonで打ったプログラムで出たもの。

桁数はE+5171655945で間違いないと思ったが。
[]
[ここ壊れてます]

724 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 08:49:15.35 ID:i0ZrzBre.net]
2^17179869183

●計算結果
https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(5171655946バイト)

※実行時間: 約20分

●コード (C言語)
https://ideone.com/xSaa6x

※メモリが16GBくらい必要です

725 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 09:26:24.51 ID:hLdUgsLX.net]
>>693
文字数チェックに使ったGigaTextViewerにバグがあったらしい。
バイト数で5171655946で見たら合ってるな。
バグないみたい。ご苦労様。

あとは128倍精度浮動小数点数の最大値とか計算できると良いな。
相当凄腕なら64倍以上のn倍精度精度浮動小数点数の最大値を0.06秒くらいで出せると良いけどな。

726 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 10:01:38.30 ID:i0ZrzBre.net]
(2^((2^(35-1))-1))*(2-(2^-4060))

これの計算なら
>>695のコードを少しいじれば出来るから
やってみな

727 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 10:05:53.71 ID:hLdUgsLX.net]
ともかくどうもありがとう。

728 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 10:27:32.54 ID:hLdUgsLX.net]
128倍精度付近の計算は5GB程度と分かったが、256倍精度なら80GB程度とかになるのか?
全部のデータを吐くのには無理があるな。

729 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:12:27.95 ID:hLdUgsLX.net]
次の問題。

65536倍精度浮動小数点数 2^16倍精度 2097152ビット浮動小数点数 (2^((2^(71-1))-1))*(2-(2^-2097080)) 355393490465494856466桁の値 有効桁数631283桁

最大値
(2^((2^(71-1))-1))*(2-(2^-2097080))
8.751158848740476104171068534561420331800200930194140062439011962812174483292686870548794134181772232E+355393490465494856465


これを合っているか確認して戴きたい。
時間かけなくていいからね。簡単にできそうならやってみて。

730 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:24:24 ID:i0ZrzBre.net]
8.75115884874047610417106853456142033180020093019414006243901196281217448329268687054879413418177223250026754484296779541335755918551116311988151294437120403120859156456766214020358536453140920536494153366498563224599112643650005214473466325352790995530944092962954114633561899471578385791449307429666571647389734015518462597415175193161095962388238415165666405164185316844538944891015624600209337136687435968731829027874814729004423100156170455627257657662018544353080611835640032201070594171947167003291711646891546745572991874468255861057996361346972313268224686528372873429102591994402195151868961348300405641520089415930898779525616284304652528475239523093098963439947423678208493232864450286525255133498508464916769066793870894739506167659828704373657304962097164032305167374291543346284808597600898542590310745266381890317624392291438000481495226828900983685105244929525982538100990167556406600838995052292E+355393490465494856465



731 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:27:01 ID:hLdUgsLX.net]
>>701
はやw

合ってるみたいだな。ありがとう。

732 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:29:01 ID:hLdUgsLX.net]
>>701
プログラムできちゃったの?凄いね。
最大何倍精度まで計算できるんだろうか?

733 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:29:47 ID:hLdUgsLX.net]
ウルフラムアルファでも計算できないのにw

734 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:30:15 ID:i0ZrzBre.net]
指数と桁の割り振りは決まってないし
好きに決めれば良いんだよ

IEEE754の範囲でも
倍になるごとに4bit増えてるわけでもない

735 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:31:51 ID:i0ZrzBre.net]
>>703
電卓で計算しただけ

736 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 11:45:08 ID:hLdUgsLX.net]
>>705
IEEE754-2008では推奨で決まってるよ。
結果的に4bit増になる式が書いてある。

まぁ別に合わせなくてもいいが、合わせて演算パッケージの開発をしやすくした方がいいんじゃないのかな。
桁が足りなければどんどん倍数を増やせばよいわけだし。

ちなみにどんな電卓なら計算できるの?

737 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 12:02:42 ID:i0ZrzBre.net]
>>707
自作電卓だけど
多くの桁数を計算出来る電卓(計算ソフト)は世の中にたくさんある

738 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 12:08:50.27 ID:i0ZrzBre.net]
半精度、単精度はルールかは外れてるし
8倍精度以上をそのままバイナリ形式で他のソフトとやり取りする事もなかなか考えられないし
桁数はいらないけど指数が欲しい時もある
というか、桁数に対して指数の割合が少なすぎる
65536倍精度を使う場面で指数を数ビットケチる意味はまったく無い

ライブラリを作るなら柔軟に設定出来るものが良いかと
半精度は今でも用途によって複数の形式があるし

739 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 12:11:03.63 ID:hLdUgsLX.net]
フリーソフトで出してよw

740 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 13:41:52.30 ID:5iVnmLs9.net]
boostに自分の作った無限状態マシンのラブラリーを導入して世界中の人に使ってもらいたいけどどうすればいい?



741 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 13:44:14.31 ID:hLdUgsLX.net]
2テトレーション6、2^^6、2^2^2^2^2^2の実数の計算はできますか?

742 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 14:01:25.93 ID:i0ZrzBre.net]
できません

743 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 14:06:31.86 ID:hLdUgsLX.net]
残念です。

744 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 16:05:50.34 ID:Cir/Il2y.net]
>>695のコードだと 2^2^35 くらいが限度

工夫すると 2^2^42 くらいまではいける
計算バッファにHDDを8TBほど使う

2^2^65536は...
宇宙中のリソースを使っても無理
上位1000桁や下位1000桁だけなら可能

745 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 19:56:49.06 ID:hLdUgsLX.net]
ブラウザpythonでプログラミングしたら10^10^50まではとりあえずエラーが出なかった。
内部でどうやってるんだろう?

746 名前:デフォルトの名無しさん [2022/05/07(土) 20:11:08.30 ID:ihw8CMAo.net]
(2^2)^35か
2^(2^35)かどっちだ?
C++的には前者だが数学的には後者だな

747 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 20:28:26.23 ID:hLdUgsLX.net]
>>717
後者だろ?
俺もそれで組んだ。

748 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 21:33:22.65 ID:GCz/eJtw.net]
>>687
/etc/pm/sleep.d

749 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 00:59:03 ID:fONWhazS.net]
べき乗は右結合というのは宇宙の始まりから決まってゐる
なぜなら、(2^2)^35 = 2^(2*35)であって1重のべきにすぎないから左結合の多重冪は多重である意味が無い

750 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 01:01:37 ID:fONWhazS.net]
>>717
ここでの演算子^はXORの意味ではないから念のため



751 名前:デフォルトの名無しさん [2022/05/08(日) 06:50:42.66 ID:RoE3BV2z.net]
2+2+2 = 2*3
2*2*2 = 2^3
2^2^2 = 2↑3
2↑2↑2 = 2↑↑3

752 名前:デフォルトの名無しさん [2022/05/08(日) 06:51:37.65 ID:RoE3BV2z.net]
途中で送信しちまった
これをtemplateで一般化できるか?

753 名前:デフォルトの名無しさん [2022/05/08(日) 07:50:20 ID:21iaPdPG.net]
ここの定義で実装してみた
https://ja.wikipedia.org/wiki/クヌースの矢印表記#定義

#include <iostream>

template<int level>
struct tower {
template<class T, class U>
constexpr static auto op(T t, U u) {
T ret{1};
for (U i = 0; i < u; i++) ret = tower<level - 1>::op(t, ret);
return ret;
}
};
template<> // pow(t, u);
struct tower<1> {
template<class T, class U>
constexpr static auto op(T t, U u) {
T ret{1};
for (U i = 0; i < u; i++) ret *= t;
return ret;
}
};

int main() {
std::cout << tower<2>::op(uint64_t(3), 3) << std::endl;
}

754 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 08:36:28.64 ID:vKAQqA9f.net]
>>722
>2^2^2 = 2↑3

あれ?

>3↑3=3^3(3の3乗)=27です。

とか書いている人もいる。 []
[ここ壊れてます]

756 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 08:41:34 ID:vKAQqA9f.net]
>既に述べた通り、1重のクヌースの矢印は冪乗を表す。また、2重のクヌースの矢印はテトレーションを表す。

{\displaystyle a\uparrow b=a^{b}} a\uparrow b = a^b
{\displaystyle a\uparrow \uparrow b={}^{b}a} a\uparrow\uparrow b = {}^b a

クヌースの矢印の矢印が一個ずつ足りないんじゃない?

757 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 10:21:28.93 ID:RTAOPX4V.net]
>>719
それは
> メモリの内容をファイルに丸々ダンプ
したりするための仕組みじゃないだろ
チェックポイントがやりたいんじゃないの

758 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 11:30:55.36 ID:vKAQqA9f.net]
>>716
ideoneのpythonなわけだが、
10^10^10^5まで対応していそうだ。

759 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 12:20:02.96 ID:sGLUGFq3.net]
>>728
タイムアウトすっぞ

760 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 12:29:28.95 ID:ZM5mEHZG.net]
昔C++で少ない文字数で巨大な数を作るってのやったなあ
intは十分大きいとしてint main();の戻り値を競うって感じ



761 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 12:51:18.92 ID:riShKp28.net]
>>724
constexpr for
ワロタ

762 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 13:13:57.96 ID:sRJ9WYdm.net]
return ~0;で終わりでは?

763 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 13:25:31.24 ID:nwquViMM.net]
-1だからあんまり大きくないんじゃね?

764 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 14:25:43.97 ID:E3hRzs1K.net]
>>727
??

765 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 14:51:21.54 ID:fONWhazS.net]
FFTによる積の多倍長演算完全に理解した!
適当な基数の下で表した例えば4桁の数 (a b c d) と (c d e f) を筆算で計算したとき現れる8個の積和
(例えば最長のやつはaf + be + cd + dc)
というのは、 (a b c d) と (c d e f)をそれぞれ関数波形とみなしたf(n)、g(n)の畳み込み
 h(k) = Σ[k=0..3]f(k)g(3-k) (k=0..7)
に他ならない(f(k)やg(k)の範囲外は0とみなす
ということは、h(k)、f(k)、g(k)それぞれのDFT(この場合は1の8乗根を基底とするやつ)をそれぞれH(k)、F(k)、G(k)として
 H(k) = F(k) * G(k)
となるわけやなのでそうやって求めたH(k)を逆DFTしたらh(k)の値が得られているというしくみ
(このh(k)を基数B内に収まるようにcarry_and_fix()したら最終的な8桁の並びが得られる、

766 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 14:53:42.06 ID:fONWhazS.net]
FFTする高速化方法はここ↓見たらワカル(wは1のN乗根なので、w^N = 1とかw^(N/2)=-1とかいうのが式変形の要
https://qiita.com/peria/items/fbdd52768b4659823d88

いまちょっと他の用事で手が離せないので48年以内に累乗根の誤差の影響が無い形で実装してみるわサーセン;;;

そしたら漏れも勝ちや!

何と戦ってるのかは知らんが、

767 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 15:17:10.76 ID:fONWhazS.net]
スマン誤記があったorz
畳み込みの式は正しくはこうっす
 h(τ) = Σ[k=0..3]f(k)g(τ-k) (τ=0..7)

768 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 15:59:36.72 ID:E3hRzs1K.net]
スペクトラムアナライザーでも作るのか

769 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 00:09:35.20 ID:yzB2nwTj.net]
>>732
intのサイズなど、環境に依存する値を返すのはNG

C++のコードによって1個の整数を定義して
その整数の大きさを競う

770 名前:デフォルトの名無しさん [2022/05/09(月) 03:52:17.59 ID:E3g8JMTZ.net]
「~(1<<31)」 (8文字)が短かくなりそうだがint=4byte+オーバーフローの



771 名前:未定義動作を含むからNGという寸法か

しかし「123456789」もint=4byteが前提になってるしどうやって遊ぶんだ?
「std::numeric_limits<int>::max()」でとりあえずint最大値が帰るが
[]
[ここ壊れてます]

772 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 04:10:24.01 ID:lLEJHk2f.net]
>>740
max()は環境に依存する値だからアウトだろう
算出するならunsignedの0の~を1つ右シフトしてsignedにして返すのはどうだろう?

773 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 07:35:52.38 ID:yzB2nwTj.net]
-------- Large numbers using C++ --------
C++ 言語を用いて出来るだけ大きな数を出来るだけ少ない文字数で表現する
int main(); が出来るだけ大きな値を返すようにする
C++ は ISO/IEC 14882:2003 準拠とする
ただし、"int" "float" "double" で表現できる値は十分大きいものとする
事実上無限ビットあると考えて良い
あくまで「十分大きい」であり、大きさを規定した以外は言語仕様通りの動作をする
環境依存の動作、環境依存の値を返すものはNG
上記ルールと ISO/IEC 14882:2003 とで
mainの戻り値が1個の値に定まらないようなものはNG
たとえば、intのサイズに依存した値になるコードはNG
pre-processor 使用禁止
#define, #include などの禁止
コンパイラなどに指定するマクロも禁止
__FILE__ や __LINE__ などの組み込みマクロも使用禁止
ライブラリ関数や外部ファイル定義の関数や変数の使用禁止
pow, quit などの外部関数や変数の使用禁止
実行時間やメモリ使用量は問わない
メモリ解放不要

774 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 07:42:44.70 ID:yzB2nwTj.net]
文字数が少ないものだとこんな感じ

25文字
int main(){return 9E999;}

30文字
int main(){return 9<<(9<<99);}

42文字
int A;int main(){return++A-9?9<<main():9;}

60文字
int A,B=9,C=9;int main(){for(;A--?B<<=B:A=B*C--;);return B;}

775 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 07:45:44.83 ID:VfSI4PVa.net]
intを返せばいいのかと思ったけどfloatとか無限ビットとか言及しているのが気になるな。
解釈違うのかな?

776 名前:デフォルトの名無しさん [2022/05/09(月) 08:53:10.27 ID:PsDnm+L1.net]
必要に応じて環境のint型を int4294967296_t とか自由に変えていいわけか

777 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 11:51:27 ID:90x04ZHv.net]
正解は ~0U>>1 です

778 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 12:29:49.47 ID:b/WmNbyW.net]
>>746
> たとえば、intのサイズに依存した値になるコードはNG

779 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 12:36:28.70 ID:vv2CegjB.net]
>>747
intのサイズに依存してないじゃん
intが16bitでも32bitでも64bitでも>>746は正解を出す

780 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 12:37:51.56 ID:b/WmNbyW.net]
16bit, 32bit, 64bitで違う値を返すからNG



781 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 13:09:06.67 ID:uszWTY9x.net]
>>749
それぞれに応じてちゃんと異なる値を返すから>>746が正解っぽい

782 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 13:38:49.81 ID:b/WmNbyW.net]
異なる値を返すからNG
何度書いてもNGなものはNG

783 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 13:57:46 ID:DLFHVgdp.net]
~0U>>1  で int のサイズが同じ環境なのに違う値を返すケースある?

784 名前:デフォルトの名無しさん [2022/05/09(月) 14:07:18 ID:PsDnm+L1.net]
>>750
それぞれに応じて違う値を返すこと自体がNGでしょ

>>751
一応ルール確認
sizeof(int); も環境によって変わるからNG
1<<999; はintが1024bit以上なら環境に依存せず固定値になるからOKてことでいいよね?

785 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:16:39 ID:RDjTqhEj.net]
よくわからないパズルは他所でやれ

786 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:20:50 ID:vBDmnMzm.net]
環境によってintの最大値が違うのに環境依存はまかりならんとかw
なら規格で保証されてる最大値(32767だっけ?)を返す

787 名前:オかなくね? []
[ここ壊れてます]

788 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:22:28 ID:SOqsBrLy.net]
>>753
それはだめです
1<<999は例えばintが32bit環境では0となります
大きな数を返すことができていません

789 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:27:15 ID:DLFHVgdp.net]
>ただし、"int" "float" "double" で表現できる値は十分大きいものとする
>事実上無限ビットあると考えて良い
これと

>たとえば、intのサイズに依存した値になるコードはNG
ここの兼ね合いがどうなってるのか文意が読み取れん

日本語難しい

790 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:29:47 ID:4LSguCbO.net]
intの最大値ならINT_MAX



791 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:31:48 ID:HAgcLczC.net]
>>758
それは7文字もあるから敗北
~0U>>1と6文字で行ける

792 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 17:07:31.36 ID:A/IF7G4V.net]
>>753
そういうことです

>>757
「十分大きい場合」に同じ値が返れば良いです
「十分大きい場合」でないならば動作不定でも無限ループでも良いです

793 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 17:17:54.32 ID:xCpkKQPu.net]
>>760
現実にありえない環境で同じ値が返ったとしても
現実にある環境で異なる値が返るからダメですよ

794 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 17:54:22.09 ID:L9YeT6Da.net]
お題スレでやってろ

795 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 17:56:24.99 ID:DvQbmhaz.net]
すぐにオーバーフローしたら大きな数が作れない ==> intは十分大きい

同じ値が返らないと数の定義にならない ==> 同じ値が返る

この2個の条件は必須

多倍長数が扱える言語であれば十分大きいは満たしているわけだけど

796 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 20:08:33.86 ID:wCt2CEsw.net]
>>735
証明してから使おうね‥‥

797 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 06:49:00.20 ID:ME910CgO.net]
>>735-737
FFTでやってる限り誤差で単精度くらいまで落ちるよ
1の乗根じゃなくて整数環でやるべき

あとNGしたいからコテつけてください

798 名前:デフォルトの名無しさん [2022/05/10(火) 07:07:25.40 ID:/5WHE8tG.net]
>>759
それintじゃなくunsigned intじゃん
(int)(~0u>>1)は13文字だぞ

799 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 07:35:35.52 ID:6pIq5VRX.net]
>>765
>>597よろしく

800 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 09:46:20.51 ID:MIazK+gu.net]
>>766
それは不要
intを返す関数で使われるとあるから自動的にキャストされる



801 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 12:27:13.81 ID:KbKCNa1k.net]
>>766
2^[ビット数-1]-1を作る為だけに6文字も使うのは
巨大数生成としては効率が悪すぎる

802 名前:デフォルトの名無しさん [2022/05/10(火) 12:40:40.45 ID:/5WHE8tG.net]
>>768
758にアンカーがないのでそこからしか読んでなかったが
「intを返す関数」と書いてあるのはどこか遡ってみた
で、742か
9E999とか書いてあるの見て思った

 ア ホ か !

付き合ってらんね

803 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 00:56:06.02 ID:UPU3lDYb.net]
逆参照て何?
どーかんがえても意味不明なんだが?

804 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 01:21:28.84 ID:UPU3lDYb.net]
>>597
数値としては
ビット0からビット17179869183の17179869184ビットあって
MSBのビット17179869183だけ1、それ以外全部0 という数
ちなみに log2(2^17179869183) = 17179869183 という数でもある

805 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 01:26:24.46 ID:UPU3lDYb.net]
ちなみに10進数で一応計算してみた
約だけど
4.63718218*10^5171655945

806 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 01:47:19.15 ID:UPU3lDYb.net]
100桁精度で計算してみた

2^17179869183 =
4.63718218509504584387714531277598505035321551306497981802919920776481\
1280740258379690028942685133666E+5171655945

807 名前:デフォルトの名無しさん [2022/05/11(水) 01:55:22.86 ID:UPU3lDYb.net]
1000桁
4.63718218509504584387714531277598505035321551306497981802919920776481\
1280740258379690028942685133665887678584875885591832718641905762127656\
8648464720428549339230429654230791681707765917647233112807227604202266\
5319507091896875357160842962215472898266643236555234127464648965219429\
45129757648380822636342327460250005054513153622178325023004

808 名前:16050059971\
6055861808134228895379488099475249306954395392974540860455538277768910\
6501779698066463774056727472854585596601051721933481196771957007013333\
1820937700316660548714353734677001021769055523397265041627700949880613\
6512390001031773699898144998699518865275093160899781961932357159230653\
7623370836815040562264217362228933327066544205490551615983201178741086\
9629443458030111199396338422961782744988511892557698949168820144192823\
3037701007229077794006504943886197679972934343613269571575719811291847\
2263408312031495611576479729358418227154841607037559274517841362656405\
8439611218916024169112008441360472444290176302521705087210814345468682\
750024133044013191605E+5171655945

これ以上は迷惑行為だからやめとく
[]
[ここ壊れてます]

809 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 02:49:25.02 ID:IGkwLYWQ.net]
僕まではセーフ

810 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 07:00:39.20 ID:UPU3lDYb.net]
一番大きい10進正数 ・・・・・・999 を NMAXとおくとき
NMAX * NMAX == 1
NMAX == -1
が言える



811 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 07:56:05.93 ID:UPU3lDYb.net]
ダチョウが死んだ
鳥インフルで殺処分らしい

812 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 21:23:58.71 ID:Uorg83Ya.net]
インフルエンザの季節じゃないと思うケド…

813 名前:デフォルトの名無しさん mailto:sage [2022/05/11(水) 22:06:18.66 ID:0NCcvhO8.net]
◆◆ダチョウについて語る!!◆◆ [無断転載禁止]©2ch.net
https://rio2016.5ch.net/test/read.cgi/wild/1491662825/

814 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 12:52:25.00 ID:ILoaqAhs.net]
せっかく計算してやったのになんの感謝もないな

815 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 13:15:32.97 ID:I3DTYm7n.net]
>>712
に挑戦してみて

816 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 19:53:55.36 ID:NvxU75Me.net]
>>781
>>695に全桁

817 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 19:57:03.47 ID:ILoaqAhs.net]
どういう意図で質問してきてんだテメエ
ここは相談スレであってクイズスレじゃねぇんだよ馬鹿たれ
しかも、クイズのごとき問題出してもテメエで正解すら用意してない。
出て行けゴミ野郎

818 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 20:00:06.71 ID:X+DkXX5S.net]
はいはい、わかったわかった

819 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 20:04:07.89 ID:NvxU75Me.net]
>>782
宇宙中のリソースを使っても無理
もちろん近似であれば可能

820 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 20:41:05.66 ID:I3DTYm7n.net]
2^^6は
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
であると書いているサイトがある。



821 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 21:01:03.42 ID:NvxU75Me.net]
有効数字1億桁とか下位1億桁なら簡単
全桁は不可能

822 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 21:21:17.12 ID:I3DTYm7n.net]
>>788
100桁ずつで良いからぜひぜひ

823 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 00:43:07.89 ID:66pxKN84.net]
なぜかというと筆算を考えたらワカル
真ん中に行くにつれて桁の値を求めるのが一番積和の項数が大きいくて大変でありかつ
LHSとRHSの数のあらゆる桁が関わるから誤差に対してもチョー敏感、

824 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 08:40:43.88 ID:DjujgnVD.net]
>>789
アップしてあるコードをちょっと変えれば出来るんだから
まずは自分でやってみなさい

825 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 13:54:53.41 ID:rNqC99VF.net]
>>765
見えない敵の可視化

>>695
mul_f2i()の中で
k1 = 1;
k2 = t360 - 1;
for (

826 名前:; k1 < t180; k1++, k2--) {
 double re, im;
 re = b->data[k1] * c->data[k1] - b->data[k2] * c->data[k2];
 im = b->data[k1] * c->data[k2] + b->data[k2] * c->data[k1];
 d->data[k1] = re;
 d->data[k2] = im;
}
としている積和絵算での誤差の拡大を問題視してないのはなんでじゃろがい?
別段b->data[・]もc->data[・]も絶対値が1未満と決まっているわけではないのでは……
決まっているとしても類似の大きさ同士の差で桁落ちが発生するのでは……
ケkッキョキ、誤差の適正な評価のためには>>679式に積和の都度上限と下限を見積もるしか無いんじゃないの
[]
[ここ壊れてます]

827 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 20:43:21 ID:YcL0sj9T.net]
Animalクラスを継承したCatクラスとDogクラスがあります

class Cat : public Animal
{
・・・
};

class Dog : public Animal
{
・・・
};

プログラムの中に無数にある以下のような箇所を

Animal *object = new Cat();

以下のようにDogクラスに書き換えたいな、と思ったとき

Animal *object = new Dog();

テキストエディタの一括置換機能を使うよりもっとスマートな方法ってありますか?

828 名前:デフォルトの名無しさん [2022/05/14(土) 20:57:04 ID:HSfvjOUE.net]
>>793
Cat.cpp とDog.cpp をバックアップする
Dog.cpp を削除する
IDEのリファクタ機能で Cat クラスを Dog クラスにリネームする
バックアップしていた Cat.cpp とDog.cpp を上書きで戻す

これで無数にある Cat を Dog に置き換えられる
文字列置換と異なり Catalog が Dogalog になってしまうこともない

829 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 23:08:55.47 ID:qVX+uY2w.net]
>>792
誤差はループ内のprintfで出力してるでしょ
誤差を減らす工夫が入っている事は気付いた?

830 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 00:01:26.20 ID:qDTtv8xD.net]
>>795
>誤差はループ内のprintfで出力してるでしょ
知ってたが>>792の演算をやった後の結果が入った事後データd->data[・]に対して
 x = d->data[i] * k;
 e = (int64_t)floor(x + .5);
 err_max = max(err_max, fabs(x - e));
とするだけではd->data[・]計算中に生じた仮数部LSBを超える誤差が全然見積もれていないんじゃな
いの
(唯一積の両側の絶対値が1以下だった場合は正当化されうるが、それはそれで似たような数の差での桁落ちを招きそう……

>誤差を減らす工夫
i2f()内で整数からフーリエ変換するときにRADIX / 2で事前carry_and_fix()してダイナミックレンジを抑えようとしている努力は認められる
しかしダイナミックレンジを抑えることが絶対的に誤差対策になるかというと以下略、

的な、



831 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 00:08:49.83 ID:qDTtv8xD.net]
多分仮数部LSBを超える誤差が整数部のLSBにまで達することは無い、という仮定のもとに
上のerr_maxの更新をやってるんだろうけど運悪く(RADIXが10だとして
9999.9999999999999
みたいなケースで仮数部LSB程度の誤差が生じたら最悪
 10000.0000000000000

  9999.9999999999999
かどっちかわからなくなって整数部LSBより上が誤差に侵食され(ry

832 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 01:29:26.60 ID:Lu4IqK5o.net]
>>794
ファイルを分ける
その発想はありませんでした
さっそく試させていただきます!
ありがとうございました

833 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 05:48:25.74 ID:f/5Hvrjj.net]
いつまでもFFTの話してるバカども、数論変換知らんの

834 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 07:10:32.52 ID:zbEPSoXa.net]
>>797
四捨五入によって丸めてるんだから
運悪くなんてことはない

配列の特定の箇所だけ極端に誤差が大きくなることもない

だからerr_maxで誤差評価可能 []
[ここ壊れてます]

836 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 07:13:35.68 ID:zbEPSoXa.net]
>>799
コードは?
速度は?

837 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 09:10:05.29 ID:d9+IDznH.net]
一時オブジェクト指向全盛でGoF本なんかが崇められてたとき
ここで質問してるやつにデザインパターン見直せとか糞レス返してる奴いたが
最近はオブジェクト指向じゃ生産効率上がらないことわかってGoF本のステータスも低下してるのか?

838 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 09:19:34.13 ID:duXfvT8B.net]
今も昔も関係ない
GoF本をステータス視するのが間違ってる
デザパタを乱用するのも間違ってる
必要な人が必要なだけ黙って使うのがデザパタ
必要も無いのに手を出すことは間違ってる
今も昔もずーっと同じように間違ってる

839 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 09:41:49 ID:d9+IDznH.net]
オブジェクト指向じゃ生産効率向上しないことが明らかになって
そらGoF本の価値そのものが低下するわなww
new deleteなんて多用されたら困る分野なんていくらでもあるしな

840 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 10:04:41.30 ID:zbEPSoXa.net]
new deleteが全く使えない環境もある



841 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 11:58:56.10 ID:c/66LOo2.net]
>>804
こういうこという奴は大規模開発に参加したことないニワカだろうな

842 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 12:12:00.10 ID:+H3bKj0a.net]
自分を大きく見せようとするやつの
型どおりの言いぐさだな

843 名前:デフォルトの名無しさん [2022/05/15(日) 12:29:44.49 ID:/JPgC0w0.net]
オブジェクト指向がオワコンだったとしても代わりになるものって何かあるんですか?

844 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 12:39:29.05 ID:jVQ55S+h.net]
なんか上のレイヤしか触らんwebのひとがオブジェクト指向とデザインパターンをディスること多いわ
そらお前らが利用してるフレームワークを作るのに使っとるんやと

845 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 12:51:15 ID:wSyZqypG.net]
じゃあもうmain.cppにmain関数百万行書いて終わりにしていいんですか!?

846 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 12:56:30 ID:0scjaaG3.net]
オブジェクト指向がオワコンかどうかは知らないが
少なくとも「C++でオブジェクト指向開発」を謳っている案件は漏れなくクソだ

847 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 12:59:14 ID:c/66LOo2.net]
>>811
Chromiumってクソだったんだ
そんなクソがシェア圧倒的なこの世の中はクソまみれやね・・・

848 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:00:11 ID:+mKsOYSe.net]
最近はclassを使うプログラミングとオブジェクト指向プログラミングの両者のうちどちらが広くどちらが狭いとみなす?

849 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:00:45 ID:MKS6oR3e.net]
はよう糞まみれになろうぜ。

850 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:02:04 ID:Q6Qf7/b7.net]
あまりオブジェクト指向に固執すると
令和のstaticおじさんみたいなもんだぞ



851 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:03:51 ID:c/66LOo2.net]
>>815
staticおじさんはマウントされるだけの上位存在がいるから馬鹿にされた訳だけど、
>>808等も言ってるようにオブジェクト指向がクソだとして代替案があるのか?っていうと無いからはそうはならない

852 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:21:29.47 ID:ymmVxVRO.net]
>>811
ならwindowsを使うのやめたらどうだ?
ついでにスマホもね
オブジェクト指向は何かを知らずにとりあえず否定しておけば自分が上だと考えてる無能

853 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:27:39.30 ID:0scjaaG3.net]
>>817
プロダクトがうんこだと言っているのではない
開発案件がうんこだと言っているのです
まあここ数年は関わってないから知らんけど

854 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:28:20.62 ID:+H3bKj0a.net]
OS全てを使うのやめることになるなw

855 名前: []
[ここ壊れてます]

856 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:58:17.52 ID:ymmVxVRO.net]
というかいまだにオブジェクト指向という低レベルの次元で争ってる時点で無能確定
0.99999....!=1に拘ると同じくらい頭悪い

857 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:12:46.74 ID:+H3bKj0a.net]
低層レイヤって意味な

858 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:41:06.77 ID:m7KinyBQ.net]
オブジェクト指向がディスられるのは犬猫車で説明しようとした馬鹿どもに責任がある

859 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:41:57.17 ID:cpUofyRM.net]
いまだにその説明をする人や書籍あるよね

860 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:43:40.09 ID:+H3bKj0a.net]
多重継承をポマトで説明とかなw



861 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:45:32.53 ID:m7KinyBQ.net]
議論の場でそもそも勘違いされたくない場合、OOPではなくクラス志向やC++/Java/C#など具体的な呼称に言い換えるだろ

862 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 14:59:54.12 ID:jVQ55S+h.net]
猫オブジェクトには食べるメソッドじゃなくて餌やるメソッドを定義してほしい

863 名前:デフォルトの名無しさん [2022/05/15(日) 15:11:14.01 ID:UBy5+e79.net]
価値観って変わっていくからね
以前はマルチスレッドがもてはやされていたけど
最近はスレッドでは1万並列を扱うのが
困難、真のエンタープライズ分野ではI/O待ちでselect切り替えしたほうがパフォーマンスが出るという流れになってるとか

864 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 15:12:44.20 ID:9F0U78jm.net]
真のエンタープライズwww

865 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 15:17:09.87 ID:jVQ55S+h.net]
それデータの並べ方程度の話じゃないの?
列志向のDBの方が速いみたいな

866 名前:デフォルトの名無しさん [2022/05/15(日) 15:21:41.77 ID:UBy5+e79.net]
スレッドってスタック持ってるじゃん
OSや設定にもよるけど1MBとか これがバカにならないんだと思う

ちなみにJavaでは仮想スレッドというOSのスレッドと1対1対応させない並列化の仕組みが導入される
これで100万並列を実現できるんだと

867 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 15:45:52.28 ID:AAncJnA8.net]
例えばRustのタスク(=仮想的ないわゆるグリーンスレッド)はスタックレスなコルーチンなので個別の専用スタックを必要としなかったり

868 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 15:58:28.15 ID:m7KinyBQ.net]
そもそもマルチスレッドと並列処理は無関係でしょ

869 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 16:04:53.51 ID:AAncJnA8.net]
>>832
むしろマルチOSスレッドこそ並列処理
逆にRustのタスク等はシングルOSスレッド上でも複数のタスクが同時に動くのでその場合は並行処理

870 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 16:07:17.76 ID:VMVrIVgn.net]
一般的な並列処理の定義だと同時に実行される複数のスレッドが必要だと思うけど。



871 名前:デフォルトの名無しさん [2022/05/15(日) 16:40:35.18 ID:UBy5+e79.net]
>>834
そんなことはないでしょ
1C1T CPUの時代でもタイムスライスでマルチスレッドって呼んでたんだから

872 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 16:51:02.84 ID:fDoXvrNi.net]
並列、並行、スレッド、タスクをごっちゃにしてる奴がいるな

873 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:03:15.24 ID:2P7WoVEL.net]
それはマルチタスクなんじゃ

874 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:26:51.22 ID:d9+IDznH.net]
>>812
てめえのほざく大規模開発がChromium かいww

875 名前:デフォルトの名無しさん [2022/05/15(日) 17:33:52.78 ID:dikgwIGH.net]
>>832
別な話だけど無関係でもない
ユニプロセッサな環境でのマルチは待っている間に他のことをするのが目的
マルチプロセッサな環境でのマルチは上記に加えCPU性能を余さず使う目的もある

876 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:35:04.93 ID:d9+IDznH.net]
>>827
>I/O待ちでselect切り替えしたほうがパフォーマンスが出る

こんまもんマルチスレッド以前にマルチタスクOSで昔からやってることだろ

877 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:39:18.19 ID:d9+IDznH.net]
>>832
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ


どういうおつむしてんだwww

878 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:55:59.75 ID:d9+IDznH.net]
>>812

テメエのほざく大規模開発ってのがChromiumかよ
Newvieがわらわせんなよ

879 名前:デフォルトの名無しさん [2022/05/15(日) 18:08:14.42 ID:UBy5+e79.net]
>>840
そうそう昔からやってるんだよ
俺がいいたいのはそこ

CPUコア数がどんどん増えていくしマルチスレッドプログラミングが正義!
ってもてはやされていたけどパフォーマンスの問題があってスレッド使わない方式に回帰してるの

オブジェクト指向も同様にオブジェクト指向プログラミング登場以前の手法に回帰することはありえる
ということが言いたかった
スレッドの話を持ち出して混乱させてしまってごめん

880 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 18:10:51.75 ID:d9+IDznH.net]
>>819
OSを利用するために用意されたライブラリ群がオブジェクト指向的な、
メッセージをHand toする形のライブラリコールを利用してるからといって、
OSのカーネルそのものがオブジェクト指向で設計されてるとでも思ってんのか。
そもそもUnixにしろRTOSにしろオブジェクト指向とは縁もゆかりも無い時代からのOSなんだがな。



881 名前:デフォルトの名無しさん [2022/05/15(日) 18:17:13.65 ID:TK6qKU9x.net]
しかしX11はオブジェクト指向。

882 名前:デフォルトの名無しさん [2022/05/15(日) 18:38:13.42 ID:TK6qKU9x.net]
Windowsはシステム全体がオブジェクト指向。
どのような言語を使おうがオブジェクト指向。

883 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 18:44:58.55 ID:d9+IDznH.net]
xlibでプログラム書いたことあんのか、
Cコードの固まりがオブジェクト指向てどこの誰が教えてくれたんだ?
xlibのあまりのコードの多さ見て
C++に目を付けたあげく、勝手に文法変えてWinMainなんて用意したのがVC++だろ
そもそも、
Windowsとは違い、X はOSではないことぐらい知っとけよw
おれは>>819の"OS"にレスしてんの

884 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 18:53:16.28 ID:6iIg86JO.net]
>>843
>パフォーマンスの問題があってスレッド使わない方式に回帰してるの
それはないのでは?物理コア数の増加にともなって、やっぱりスレッドを使う方向に舵を切っているかと

885 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 18:56:02.19 ID:d9+IDznH.net]
あれ?
WinMain用意したときてC++じゃなくてCじゃなかったかな?

886 名前:デフォルトの名無しさん [2022/05/15(日) 19:00:43.54 ID:TK6qKU9x.net]
>>847
関数呼び出しの第一引数がオブジェクト、関数がメッセージと考える。
第一引数のオブジェクトにメッセージを送るのがXlibの関数呼び出し。

887 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 19:10:33.61 ID:d9+IDznH.net]
>>848
まだ

888 名前:ワだスレッド数が少ないCPUではスレッド使えるのに使わないのは悪だな
GPUだとスレッド立ち上げがパフォーマンス低下(処理速度でなくとも消費電力)に繋がる場面はすぐ訪れる。
1万データのMax検索するのに1万スレッド起動しても何の意味も無いから
回帰もなにも、パフォーマンス改善するから並列化を利用するのであって、
オブジェクト指向みたいな生産効率向上(という幻相)のためにパフォーマンスを犠牲にする、
エンドユーザーからみれば安かろう悪かろうでしかないコードスタイルの話とはわけが違う
[]
[ここ壊れてます]

889 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 19:12:06.95 ID:p4xLOVEd.net]
メンバ関数なんかも引数のオブジェクト省略されてるだけだしねあれ

890 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 19:28:05.58 ID:d9+IDznH.net]
>>650
画像処理プログラムやるとすぐわかるのが関数引数の数がすぐに肥大化すること。
これじゃ、関数コールの際、パフォーマンスが低下すること甚だしいんで、
structという一つのデータグラムにして、ポインタ渡すことと、その順番を
関数コールの一つのマナーにしてるだけだろ。
classはそこから生まれたとしても、
X11をオブジェクト指向というのは拡大解釈だ。



891 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 19:33:03.96 ID:p4xLOVEd.net]
xは知らんけどwindows apiのウィンドウ周りはc言語でオブジェクト指向だよ
ハンドル引数にして色んなタイプのウィンドウまとめて扱えるようにしてる
setwindowtext使えばタイトルバー持つウィンドウはタイトルが変わる
テキストボックスならテキストがかわるって具合に

892 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 19:39:10.56 ID:p4xLOVEd.net]
上にも書いたけどそのstructのポインタをコード上は見えないけど渡してるのがメンバ関数ね

893 名前:デフォルトの名無しさん [2022/05/15(日) 19:42:29.90 ID:TK6qKU9x.net]
>>855
スレ住人は全員わかってることなので、わからない人はC++を使わない人なのでは?
すると、何のためにスレへ?という疑問がわく。

894 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:15:20 ID:c/66LOo2.net]
>>847
Cでオブジェクト指向なんてごまんとあるがろうが
同じグーグル製プロジェクトで言うとlibwebpなんて典型だな
>>850>>854が言ってる通り実質thiscallを多用するCなんて本当にごまんとある
関数ポインタ渡す際にvoid*のタグもセットで渡すとかもな

895 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:22:33.85 ID:ymmVxVRO.net]
よく見たらこのスレの住人もオブジェクト指向マンと同じレベルで気持ち悪い奴だらけだった

896 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:22:35.74 ID:c/66LOo2.net]
>>848
シングルスレッド非同期に回帰しつつあるのはJavaScriptがブラウザやNode.jsでそれの有用性を証明しまくってるからだな
最近だとC#Unityでゲームにおいてもシングルスレッド非同期は多用され始めてる
ロック関連によるバグやスレッド作成コストを回避出来るのが主な利点

897 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:46:16.10 ID:9hg43hf0.net]
その昔IBMがM:NモデルのPOSIXスレッドAPI(NGPT)を
Linuxカーネルに入れようとしてた記憶してるけど
どうなったんだっけ?

898 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:57:15.34 ID:Kh2G/sgN.net]
なくなりました

899 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 21:04:11.98 ID:9hg43hf0.net]
1:1モデルのRedHatのNPTLに性能で負けたんだっけな?

900 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 21:28:16.73 ID:m7KinyBQ.net]

計算量見積れない処理は全部バックグラウンドスレッドに投げるだろ
Javascriptも一緒



901 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 22:03:31 ID:tH2IP/Jf.net]
>>857
そもそもunixのファイル関係だってread/writeとかの関数ポインタを含む構造体で管理してるから画面出力を簡単にディスクに出力できる
まんま仮想関数テーブルみたいなもんや
ID:d9+IDznH はだいぶレベル低いか単なるレス古事記だろうな

902 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 08:11:50.24 ID:IfoxgD2F.net]
「オブジェクト指向」とかいうバズワードで議論するなら、せめて定義ぐらいは提示しろよ。
「定義はwikipediaのオブジェクト指向プログラミング」あたりで議論したら?

903 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 08:56:37.65 ID:l25MG5nC.net]
>>863
jsはasync awaitもコルーチン利用したシングルスレッドだよ

904 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 09:00:24.74 ID:mycbCv2g.net]
OSからみるとシングルスレッドだけど、開発言語の補助でマルチスレッド風に記述できるようになっているのか
OSからみてもマルチスレッドなのか

905 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 09:40:06.21 ID:I2zrNWyd.net]
非同期機能が内部的にマルチスレッド使ってる可能性はあるよ

906 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 09:55:17.75 ID:l25MG5nC.net]
そもそも非ネイティブ言語の場合は実行環境によるとしか言いようがないが、async awaitのためにマルチスレッドが走ることはない
GCとか含めたら別スレッドが関与することはあるだろうけど
上でも言われてる通りスレッド立ち上げコスト削減も目的の一つだから態々その目的をふいにするような実装はしないだろう

907 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 10:27:55.73 ID:I2zrNWyd.net]
そらいちいちスレッド起動したらコストかかるけど、イベント処理なんて下位のライブラリで複数スレッド使っててもおかしくないでしょ
ま、上から気にすることじゃない

908 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 10:52:25 ID:wZmcx9na.net]
スレッド作るコストは高いけど一旦作ったら待機させときゃいいだけだし

909 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 10:59:43 ID:l25MG5nC.net]
>>870
幾多ある

910 名前:宴Cブラリの話までし始めたらそらなんでもあるよ

>>871
スレッド立ち上げコスト削減は目的のうちの一つであってそれだけじゃない
むしろメインはlockを考慮しなくて済むって方じゃないかな
[]
[ここ壊れてます]



911 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 11:10:07 ID:I2zrNWyd.net]
>>872
だから、OSから見た話をしてるんやん
それに全然関係ない話でもない
ほんとお前馬鹿だよな

912 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 11:38:13.72 ID:S4yLiTSd.net]
>>873
OS関係ないし
お前が馬鹿

913 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 11:55:16.75 ID:l25MG5nC.net]
>>873
コルーチンにOS関係ある?
どういう仕組みでasync awaitしてるか理解してる?

914 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:21:21.64 ID:ptnjik8+.net]
C++の話しようぜ

915 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:24:34.24 ID:I2zrNWyd.net]
>>874
867の言ってることがわからんあの馬鹿を責めてくれや

916 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:30:07.34 ID:f/Xu02FO.net]
「俺のわからないことを書いている奴は馬鹿」という思考回路やばい。

917 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:35:37 ID:l25MG5nC.net]
>>877
そもそも言語の話にOSとか言い出すのが意味不明だし、強いて考えられるとしたら
int main() { for (int i = 0; i < 100; ++i) sleep(1); return 0; }
これもOSレベルで見たら単一スレッドで頭からケツまで動く保証はないっていうレベルの話がしたいのか?
こういう次元の話をしたいなら馬鹿としか思えないけど

918 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:48:57 ID:IoIRdAU7.net]
>>866
JavaScriptは基本的にはシングルスレッドなので並行(concurrent)に複数同時に動くが
workerを用いると別スレッドとなり並列(parallel)に複数同時に動く
ただしworker抜き前提で話すことも多いから前者のシングルスレッド前提でもいいと思う

>>870
言語のライブラリのレベルでそれが起きることはなく、あくまでも言語の仕様の範囲内に従う
しかし言語のランタイムではそれが起きるケースもあり、そこは別言語で書かれていてもよい
例えばJavaScriptは(別workerでなければ)シングルスレッドが保証されており、
複数の並行処理に対して厳格な競合対処をせずともプログラミングが可能だが、
内部ランタイムではI/O効率化のためにマルチスレッドが使われる実装もある

919 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 12:59:08 ID:I2zrNWyd.net]
馬鹿のひと、前もいた実装は関係ないおじさん?
他人は許せないが、なぜか自分自身は語ってしまうというあの馬鹿?

920 名前:デフォルトの名無しさん [2022/05/16(月) 15:52:25.18 ID:WoUg3+5o.net]
幼稚園児レベルの罵倒語を使うのは
技術的な議論で劣勢であることを自己申告しているようなものだ
優勢な者はそんなもの使わなくてもどうにでも料理できるからな



921 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 16:42:34 ID:oTRlBgbW.net]
彡 ⌒ ミ
( ・ω・) アレクサ髪の毛増やして

922 名前:デフォルトの名無しさん [2022/05/16(月) 18:53:11.20 ID:mA14eCl1.net]
>>883
有吉の髪をフサフサにしておきました。

923 名前:デフォルトの名無しさん [2022/05/16(月) 19:01:54.89 ID:mA14eCl1.net]
>>883
波平の髪を二本にしておきました。

924 名前:デフォルトの名無しさん [2022/05/16(月) 19:17:21.17 ID:mA14eCl1.net]
>>883
ドラえもんをアフロにしておきました。

925 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 19:33:17.66 ID:haaJPjQj.net]
アレクサ賢い

926 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 19:46:11.19 ID:LMCkL6+j.net]
>>885
海平になっちゃうやん...
https://blogimg.goo.ne.jp/image/upload/f_auto,q_auto,t_image_sp_entry/v1/use

927 名前:r_image/58/29/b157690960da4c9d520ffa9f0d031fba.jpg []
[ここ壊れてます]

928 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 09:56:55.15 ID:spPNFpZE.net]
X11をオブジェクト指向とか寝言いうやつ居るんだな
あれはオブジェクト指向もどき
つまりオブジェクト指向ではない

アセンラで構造化もどきつくりましたレベルの話

929 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 10:04:46.99 ID:s0yud5Is.net]
オブジェクト指向としか言いようがない

930 名前:デフォルトの名無しさん [2022/05/18(水) 10:15:34.00 ID:I2H5iqao.net]
どんな作りになっていようがコード書いた本人が
オブジェクト指向だと言えばオブジェクト指向だし
構造化だと言えば構造化なんだよ
書く者の頭の中の考え方なんだから、
コードそのものの特徴から決めつけはできないし
ドヤるやつは大抵うんざりされてることに気がつかない



931 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 10:37:48.91 ID:Q68htpiP.net]
     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

932 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:04:38.59 ID:spPNFpZE.net]
>>891
>ドヤるやつは大抵うんざりされてることに気がつかない

自分のことか?www

933 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:07:21.81 ID:OWcrFw6t.net]
いずれにせよオブジェクト指向を上回る手法が登場しない限りオブジェクト指向に対してマウントは取れない

934 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:21:09.24 ID:spPNFpZE.net]
予めメモリプールを設定しておくようなOSで
オブジェクト指向ありきでプログラム設計されてると思ってんのはおめでてーな
馬鹿の一つ覚えとも言う

935 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:34:46.54 ID:s0yud5Is.net]
プログラムがオブジェクト指向に則ってるか否かはOSで決定する、と

936 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 11:41:08.84 ID:spPNFpZE.net]
メモリプールを何の目的で用意するのかわかってないと

937 名前:はちみつ餃子 mailto:sage [2022/05/18(水) 12:02:56.59 ID:bslzKqYb.net]
オブジェクトがメッセージを投げるという関係性でプログラムを構築するのが
オブジェクト指向ってもんだから、関数 (メンバ関数) をメッセージとみなすかもしれないし、
メッセージキューのようなものを作るかもしれない。


938 名前:プログラミング言語の言語機能をどのようにプログラム構成の方法論に当てはめるかは自由度はある。
その意味では >>891 の考え方は真っ当なものだ。

でも、 C++ では C++ の常識というものもあるし、
ある程度は共通の認識を作っておかないと会話が成り立たんだろう。

基本的にはふんわりした概念でしかないからこの場合にオブジェクト指向
という言葉をどういう意味で使うことにするのかはこの場で擦りあわせろや。
[]
[ここ壊れてます]

939 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 12:12:57 ID:KNHGZhRF.net]
>>895
そもそもos全体がオブジェクト指向だなんて誰も言ってないし

940 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 12:22:21 ID:CvWTVaQG.net]
>>889
オブジェクトを「指向している」だろ。

指向「もどき」て何だよ。
何を「指向もどき」と言っているのか全然わからん。



941 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 16:21:01.44 ID:SnLFYw7t.net]
たしかにオブジェクト志向オブジェクト志向言いはじめたころは
「メッセージング」ってのがやたら強調されてたな
たぶんスモールトークの影響だろうけど
最近の「オブジェクト志向」はどっちかってとオブジェクトのかたまりを
どう型つけるか、階層化するかの言語構造のことを言いがちだけど

942 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 16:31:15.14 ID:ZUGTejLE.net]
指向だけどな
むしろメッセージングの重要性は高まってきてると思うけど、頭のいいひとにしか扱えない感じだな
馬鹿は階層にこだわるしかない

943 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 20:03:09.30 ID:9cdFfz37.net]
オブジェクト指向で利点はデータモデルを表現できることだろ
それが言語上で構造体なのかクラスベースなのかアクターなのかは大きな問題じゃない

944 名前:デフォルトの名無しさん [2022/05/18(水) 21:04:56.14 ID:xACVFtZa.net]
ウィンドウに開けとか閉じれとか大きくなれとか指示してれば、それはもうオブジェクト指向なので、ウィンドウ・システムとオブジェクト指向はだいぶ相性が良い。

945 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 21:06:39.10 ID:AIFQ7kC9.net]
>>891
hogehoge("ソポポポぉおおおおおん!");
↑これはオブジェクト指向で書いたプログラムです!!!!
って言ったらそういう解釈もありだなって思うの?

俺はオブジェクト指向アンチ!
絶対にオブジェクト指向なコードなんて書かね!といった直後に
const dialog = document.getElementById("dialog");
dialog.addEventListener("click", e =>{イベント処理});
みたいなコードを書いていたら、そのコードはオブジェクト指向ではないと解釈するの?

なわけないよね

946 名前:デフォルトの名無しさん [2022/05/18(水) 21:06:55.62 ID:xACVFtZa.net]
とうとうアジュール・アカウントを作ってしまった。

947 名前:デフォルトの名無しさん [2022/05/18(水) 21:07:48.89 ID:xACVFtZa.net]
よし。
今日からおれもアジュール民だ。

948 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 21:23:10.53 ID:vRsLqKZH.net]
ようこそクラウドの世界へ

949 名前:デフォルトの名無しさん [2022/05/18(水) 21:48:35.12 ID:I2H5iqao.net]
>>905
思うよ
するよ

思い込みの激しい人だな

950 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:00:38.20 ID:AIFQ7kC9.net]
>>909
嘘付くのやめていただけますか?

まず、hogehoge(略)をどのように捻くれた解釈をしたらオブジェクト指向に見えるのか解説してくれますか?



951 名前:蟻人間 mailto:sage [2022/05/18(水) 22:04:01.32 ID:1ADDPTHW.net]
struct HogeHoge {
void operator(const char *str) const {
std::cout << str;
}
};

HogeHoge hogehoge;

952 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:04:44.03 ID:vRsLqKZH.net]
>>909
思い込みの激しいのはお前だろw
>>892で指摘されてるじゃんw

953 名前:蟻人間 mailto:sage [2022/05/18(水) 22:05:27.40 ID:1ADDPTHW.net]
>>911
間違えた

954 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:09:27.02 ID:V03o9uZn.net]
プログラムを書いた人がオブジェクト指向設計ですと言っているものまでオブジ
ェクト指向ではないと否定するのは愚策言ったが最後、ではオブジェクト指向で
はない何なのかを述べねばならなくなるからなgoto否定論者にbreakは実質goto
とかあまつさえgotoを使ったプログラムを書いてgoto否定論者に対して正当性を
主張した場合に生じる惨状と同じで社会スキル的な意味で避けるべき理由が十分あ


955 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:09:33.95 ID:spPNFpZE.net]
>>900
オブジェクト指向もどき が オブジェクト指向でないのは
くじら が さかな で無いのと同じだ

馬鹿は知らないくじら構文
そして、応用系

オブジェクト指向もどき が オブジェクト指向でないのは
ヒトもどきのお前 が ヒトでないのと同じだ

956 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:11:26.32 ID:PU9JUd8R.net]
C++の話しようぜ

957 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 22:13:31.75 ID:ZUGTejLE.net]
c++スレでオブジェクト指向の話をするのは無理がある

958 名前:デフォルトの名無しさん [2022/05/18(水) 23:15:16.60 ID:xACVFtZa.net]
C++のオブジェクト指向全盛期は20年以上前だからね。
その後は黒魔術全盛期がやってきた。

959 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 23:37:02.53 ID:PYepqFJi.net]
Andrei Alexandrescuが悪い

960 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 00:10:17.97 ID:JEoDteVp.net]
組み込みC++だと普通にオブジェクト指向全盛期だけどな
uart1.write(data);
のような記述が当たり前になってきて有難い



961 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 02:53:53.60 ID:m2mVV8oP.net]
組み込みってマクロ大好きだからオブジェクト指向の書き方と相性悪いと思ってたけど最近はそうでもないの?
それともそう描いたときのuart1やwriteもマクロなの?

962 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 03:00:29.40 ID:tMeCiyz0.net]
そら組み込みっていってもいろんなレイヤがあるからね

963 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 05:20:52.31 ID:UJCwwVid.net]
>>910
fprintf(stdout, "そぼぼん");
みたいになってることもあるからな
obj.func(...);という構文は絶対条件じゃないんだよ
PostMessage(hWnd, WM_APP, 0, 0);なんてのだってオブジェクト指向だし

964 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:43:27.80 ID:bqW40Z5X.net]
組み込みはまだまだCが主流

965 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:46:20.72 ID:ijZ+Z+2A.net]
>>915
なら
ヒトもどきのお前 が ヒトでない
が偽だから
オブジェクト指向もどき が オブジェクト指向でない
も偽だな。

966 名前:デフォルトの名無しさん [2022/05/19(木) 07:47:19.60 ID:Kexh9zXI.net]
>>923
そう、Cの時代からオブジェクト指向はあったよな

967 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:50:32.12 ID:sZfr5xXW.net]
別に
objに対してfunc()というメッセージを送るのと、
PostMessage()という手続きにhWndを渡すのでは意味が違う
obj.func()をコンパイルしたらfunc(ptr, ...)とptrとして&objを渡すコード、みたいなものになるではないか、というのはそれはそうだが
そいつは意味を捨てているからにすぎないことは統語論的に考えたらワカル
例: getter
x = obj.getX(); // I get the value X となるようにobjに仕事させよという意味(CPUにobjを使役するよう命令している
x = getX(&obj); // get the value X from (/ by / with / in) the object obj、という意味(CPUにやれと命令している

968 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:51:01.05 ID:sZfr5xXW.net]
言ってて自信なくなってきたがとにかく違う、

969 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 07:55:55.82 ID:bqW40Z5X.net]
オブジェクト指向って
単にクラス関数を呼んだからオブジェクト指向
とかいう単純な物じゃない

プログラムやモジュールの設計思想の話

970 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:02:53.54 ID:tMeCiyz0.net]
>>927
お前がそうやって理解したのは理解するけど、ちょっとどうかなあ



971 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:10:11.10 ID:Bak+CTg/.net]
>>915
その主張において
・「ヒトもどき」と「ヒト」の違いは何か。「ヒトもどき」が「ヒト」でないとする根拠は何か。
・「ヒトもどき」の「もどき」の意味が「指向もどき」の「もどき」の意味と同じとする根拠は何か。

間違った根拠と間違った推論から導いた結論に意味はないから、上記に答えられないなら

972 名前:その主張に議論する価値は無い。
論理をかじって知ったかぶりしたくなるのもわかるけど、もうちょっと勉強した方がいいよ。
[]
[ここ壊れてます]

973 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:12:35.09 ID:bqW40Z5X.net]
C++関係ないんだから
他にスレ立ててやれ

974 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:26:56.26 ID:nDeBFAzg.net]
オブジェクト指向を教えてくれ!★2
https://mevius.5ch.net/test/read.cgi/tech/1619503348/

975 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 08:30:35.34 ID:sZfr5xXW.net]
>>930
それはそうで世に膾炙しているオブジェクト指向はちょっとどうかしているせい
objにXの値を寄越すようにメッセージを送るのであれば
 x = obj.getX(); // (1)
ではなくて、
 x = obj.giveX(); // (2)
でないとおかしいはず……
(1)に対して合理的な意味づけを行おうとすると>>927みたいな解釈にならざるおえない
やっぱ世の中がおかしい

976 名前:デフォルトの名無しさん [2022/05/19(木) 09:28:38 ID:XCQrD9i4.net]
objっていうデータ構造体からxを取得するからgetXって解釈してたわ

977 名前:デフォルトの名無しさん [2022/05/19(木) 09:37:01 ID:HFWBeLeA.net]
オブジェクト指向って obj.method( ) という構文だけの話じゃないでしょ
継承・多態性・オーバーライド・オーバーロード・オーラロードなどの機能もオブジェクト指向の重要な要素じゃないの
あと機能とは別にカプセル化などオブジェクト指向で周知された設計手法もある(これはオブジェクト指向でなくてもできるけど)

978 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 09:42:48.48 ID:tMeCiyz0.net]
>>934
826書いたの俺だからわかるよ
でも文法なんて些細な話よ

979 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 09:56:27.95 ID:qAaVAzHk.net]
hogehoge書いた本人はたぶんそこまで考えていないよ
それこそ思い込みが激しいでは?

980 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:33:57.63 ID:Nz/+UK9H.net]
>>934
オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。主体はプログラマーとかCPUとかの指示・命令をする主体。



981 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:47:07.52 ID:JltPZRp+.net]
まだやるの?

982 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:58:56.65 ID:NIcGv5m1.net]
オブジェクト指向は我々プログラマにとって必要です

>>938
私はオブジェクト指向を知っていることに誇りをもっています

983 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 13:04:29.79 ID:B0nB5mTs.net]
>>934
俺はオブジェクト指向がうまいから職場で神扱いされてる


>>919
お前はオブジェクト指向ができるの?

なんとか言ったらどうなんだ

984 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 13:06:45.60 ID:YUgVG0pp.net]
>>911
そうやってオブジェクト指向ができないからニートだと思われてるんだよww
これに懲りたらオブジェクト指向を学んでこいwww

985 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 13:18:40.04 ID:B0nB5mTs.net]
>>924
てめーなんざにオブジェクト指向がわかるわけねぇだろう
とっとと消えろ

986 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 13:20:01.49 ID:z4apOfvE.net]
何言ってんだこいつ
オブジェクト指向を知ってるからって偉そうにしやがって

987 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 13:52:35.01 ID:gDUMsWXi.net]
>>927
いや、意味は違わないよ
違うのはその結論(コード)に至るまでの考え方だ
オブジェクト指向は構文ではなく考え方
だからアセンブラでもできるんだ

988 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 16:31:30.66 ID:QDwYarvc.net]
>>931
くじら構文が論理?

案の定、どこまで馬鹿なんFラン確定のお前ww

989 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 16:36:02.58 ID:QDwYarvc.net]
>>925

おまえもFラン確定だなww
義務教育から遣り直せ。

990 名前:デフォルトの名無しさん [2022/05/19(木) 17:36:19.36 ID:6RgATOKw.net]
アホだからアホでも使えるように構造化するのを大事にしてる



991 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 18:44:20.43 ID:XmlfPc2y.net]
802から始まって、いまだ発散してるから
線引含めてめんどくせぇ話だなというのはわかる

992 名前:デフォルトの名無しさん [2022/05/19(木) 18:46:23.64 ID:2O7Wjx2k.net]
VIPでやれと言われるような話題。

993 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 19:01:16.29 ID:jm7Yx9uZ.net]
>>949
想定以外の使い方は許さない方が無難かね。Conceptsが普及すればc++でも制約プログラミング流行るかな。 []
[ここ壊れてます]

995 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 06:26:48.33 ID:QdnN/13A.net]
プログラムの可読性は大事だが
それをアホへの迎合と勘違いしてはいけない

COBOLからの教訓だ

996 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 06:48:44.29 ID:jg8JP3/X.net]
可読性とは結局
自分ルールに添ってるか
自分と同レベルの知識や頭脳か
になるからねえ

997 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:17:00.86 ID:biGldfGz.net]
>>939
>オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。
どういうこっちゃ……
オブジェクトを客体とみなすルールは必ずしもその客体が主体的に動くシチュエーションの禁止にはならない
客体が主体的に動くシチュエーションを禁止したかったら、複文の禁止までルールを推し進めねばならん
例:
進駐軍の兵隊オブジェクトに「Get chocolate」と言ったらそのオブジェクトがチョコレートの調達に走るのが妥当
この場合進駐軍の兵隊オブジェクトが主体的に動く(倉庫等に取りに行く)ことが気体される
進駐軍の兵隊オブジェクトに「Give me chocolate」と言って初めて発令の主体たるCPUがチョコレートを受け取れる

998 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:26:59.91 ID:biGldfGz.net]
どっちにせよチョコを取りに行ったりくれたりする主体は進駐軍の兵隊オブジェクト
さらに進駐軍の兵隊オブジェクトが倉庫の受付に「Get chocolate」言うかもしれんし
そうすると進駐軍の兵隊オブジェクトがチョコレートを受け取る主体にもなり得る
こういう入り組んだ解釈を一切禁止ということならやっぱ複文禁止しか……
それはそれで新しいプログラミングパラダイムが拓けそうやがどうかなあ……

999 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:31:45.87 ID:biGldfGz.net]
ていうかそういうのはどうでも良いんですよそれよか>>695
のコードについて質問なのですが

fouri()の中に
 sin1 = table[t0];
 cos1 = table[t1];
というのがあって、cos1 + i * sin1が1の原子2^N乗根だと思うじゃん?
しかし動きを見ると5.333333乗根とか(これはまだわからないでもない
4.571429乗根とかわけわかんない数値が入って来るんですがなんで?!
ボスケテ、

1000 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 08:42:58.01 ID:1bxUvska.net]
>>957
(1 << p) が一周
(1 << p - i) は一周を(1<<i)で割った値、つまり(1<<i)乗根



1001 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 19:33:47.78 ID:0DaneQt4.net]
 
 __     __  ___ _____  _____     ___ ___    ___
 |   |    /  /  |  //       | /__  __/ [][] _| |_| |__ _| |_
 |   |.   /  /  /  / /   / ̄ ̄|. l    / /     |    _  | |_  レ'~ ̄|
 |   |  /  /  /  / /   /.  / /    |  |___      ̄|  | / / /   /| |
 |   |  /  /  /  / /    ̄ ̄ /     \__|     |  |  ̄ /_  /  | |_
 |   |. /  /  /  / /   / ̄ ̄ ̄                |_|     |__|   \/
 |   |/  /  /  /. /   /  
 |.     /  /  /  /   / 
 |    /. /   | ./   /  
  ̄ ̄ ̄   ̄ ̄ ̄.  ̄ ̄ 

1002 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 20:11:14.93 ID:biGldfGz.net]
>>958
1<<i乗根は結局2^i乗根ということで、
(2*M_PI)/atan2(sin1, cos1)が2^iすわなち整数にならないとおかしいんじゃないの
しかし実際は16乗根とか64乗根に交じって5.333333乗根とか4.571429乗根とかが混じってくるのでつ∀`;)

1003 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:44:19.34 ID:jg8JP3/X.net]
そりゃ(1<<i)乗根をn乗してるからねえ
出てくるんじゃないの?
何か問題?

1004 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 23:00:09.02 ID:biGldfGz.net]
わかりた
(1 << i)/jが割り切れない場合のw^jかorz

1005 名前:デフォルトの名無しさん [2022/05/20(金) 23:24:07.63 ID:mAopBTqL.net]


1006 名前:}クロでしか実現できない機能って何がありますか?
派遣先のライブラリがマクロだらけで驚いたので気になりました
[]
[ここ壊れてます]

1007 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 23:38:17.88 ID:Nu0nVGPY.net]
メタプログラミングとか?

1008 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 23:48:21.44 ID:5lKx3hyB.net]
いろいろあると思うけど、ログ関数とか作るときに関数名とか行数とか出力させたかったらマクロ使うかな

1009 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 23:53:08.67 ID:sn/66v3t.net]
行数とかなんか無茶なコードの結合とか

1010 名前:デフォルトの名無しさん [2022/05/21(土) 00:17:23.34 ID:SL+9c0t4.net]
コンパイラによってつける属性変えるときとか
public:をオンオフしたり構文に影響を与えるものとか

MSVCの標準ライブラリ覗くと
#define _CONSTEXPR20 constexpr
//#define _CONSTEXPR20 inline //C++17以前
とか書いてあったりする

式を文字列として展開するのもマクロじゃなきゃできない
#define A(exp) #exp

文字列連結(#define A(a1,a2) a1##a2)もマクロじゃなきゃできないけどデバッグが無理ゲーになるから使わん



1011 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 00:19:10.39 ID:DcWHGr0j.net]
__FILE__や__LINE__を使うのを隠蔽したいときはマクロにするしか、
あと文字列を結合してシンボルを合成するとか、
#define cat(a, b) a##b
#define cat2(a, b) a/**/b

1012 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 00:53:48.99 ID:SKvcmC+r.net]
マクロでぐにゃぐにゃしてる中はデバッガで止めづらくなるね
文字列生成(そして文字列の連結) 識別子の連結 はプリプロセッサじゃないとできないし

1013 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 01:31:55.43 ID:wrIep829.net]
初見殺しにマクロは必須

1014 名前:ハノン mailto:sage [2022/05/21(土) 06:57:00.43 ID:0jWT+RR4.net]
というか、inline 指定を絶対化すればいいだけ
どうして inline 指定してもインラインされない場合がある、とか勝手なことをするのか不明

1015 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 07:00:24.57 ID:LKZ4AMgL.net]
#define AAAA xxxx
#include "****"
#undef AAAA

#define AAAA yyyy
#include "****"
#undef AAAA

1016 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 07:11:17.89 ID:DcWHGr0j.net]
>>971
再帰する場合は仕方が無い
ポインタ経由で呼び出す場合も仕方が無い

1017 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 08:09:54.00 ID:0jWT+RR4.net]
>>973
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に inline を無視してコンパイルしなおすなんて言語道断、コンパイラ作者の独善だね

1018 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 08:21:34.76 ID:/PQRaHnB.net]
今やregisterなみの存在感

1019 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 10:25:33 ID:qJClzxWq.net]
#includeと#defineで疑似メタプログラミング的なことをすることはある
テンプレート化出来ない場合もあるからな

1020 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 10:48:13.19 ID:Kirg9sMV.net]
constexprが中途半端で結局constevalが追加されたのに倣えば、inlineの強制バージョンも標準化していいはずだよな
既に独自実装のalways_inlineや__forceinlineはあるんだし



1021 名前:はちみつ餃子 mailto:sage [2022/05/21(土) 11:13:07.39 ID:JD6rd3hb.net]
C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)

1022 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 11:49:29.76 ID:DcWHGr0j.net]
翻訳系の仕事はソースコードの意味を変えずにオブジェクトコードに翻訳することで(ry
狭義のアルゴリズム(

1023 名前:シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし
[]
[ここ壊れてます]

1024 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 12:00:28.50 ID:DcWHGr0j.net]
ていうかDFTと逆DFTおよび4n乗根のDFTと逆DFTができましたよ
https://ideone.com/uK9v58

n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、

1025 名前:ハノン ◆QZaw55cn4c mailto:sage [2022/05/21(土) 14:44:04 ID:0jWT+RR4.net]
>>978
>C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
だとすると、inline の存在自体が原則に大きく矛盾していることになりますねえ

1026 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 14:47:32 ID:is6KmnjI.net]
あくまでもヒントじゃないのか

1027 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:01:05.79 ID:0jWT+RR4.net]
>>982
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、inline に限っては強制力を伴うべきでしょう、#define マクロを葬り去りたいのなら

1028 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:01:21.03 ID:OwY6A3+8.net]
そう
あくまでヒント

ヒントになった理由は
世の中のプログラマーがアホだから

1029 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:01:54.43 ID:OwY6A3+8.net]
#defineは永遠に不滅です

1030 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:23:50.89 ID:ocVGFLUP.net]
CRTPにするとインターフェース継承してもインライン展開されるのほんとまじ意味わからん



1031 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:35:03.49 ID:0jWT+RR4.net]
>>984
マクロ跋扈とを許す設計者の方がもっとアホですね

1032 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 15:39:45.82 ID:LSoM7sSc.net]
誰の方がアホとかどうでもよくて
アホだからそういう仕様になった

1033 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 16:03:58.87 ID:DcWHGr0j.net]
ちと別件に取り掛かったのでソースコードを見ながらではなく想像やが
>>695 のソースコードでやっている頻繁なswapの意図がわかった希ガス
 X(k) = Σ[j=0..n-1]{ x(j) * w^(j*k) }
を計算するとき項の足し合わせ順序はどうでも良く、かつk>1なら
 j * k = 0 (mod n)  --- (1)
となるx(j) * w^(j*k)が複数回現れるから、(1)を満たす項の出現回数が大きいものを最初に足し合わせたらたちまち
(出現回数)-1語 のメモリが空く、というのが基本的着想で、
これを異なるkについて繰り返し行う場合(1)を満たす最大の出現回数となるjの系列jはk毎に相違するから、
kについての繰り返しについても部分計算を片付けてメモリを空けつつ進められ、
結局jとkの2重ループについてメモリを空けつつつつがなく進められるというしくみ(多分

1034 名前:はちみつ餃子 mailto:sage [2022/05/21(土) 16:11:12.45 ID:JD6rd3hb.net]
>>981
inline は ODR の例外。 また、異なる翻訳単位の同じ定義が統合されることを保証する。
これは C++98 のときからそう。
インライン化が望ましいことの指示であるとは書いてあるけど、
今では変数にも inline を付けることが出来るようになったのはもはや inline は ODR の例外としての意味がメインだと考えるべき。

1035 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 16:29:48 ID:9lV47uLv.net]
>>981
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど

1036 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 16:47:52.13 ID:x3bK44aY.net]
onlineも導入すべき

1037 名前:デフォルトの名無しさん [2022/05/21(土) 17:00:45.58 ID:+x02zxlN.net]
>>952
こんなのあるんか便

1038 名前:利そうだな
まあ汎用的なデータ構造だと暫定未定義にするだけでもいいと思うけど、用途が決まってるクラスに関しては制約をつけたものを用意しておくのが無難だろうね
[]
[ここ壊れてます]

1039 名前:ハノン mailto:sage [2022/05/21(土) 17:25:58.12 ID:0jWT+RR4.net]
>>991
情報ありがとうございます。

>>990
ここで One Definition Rule がリファーされるのに直観的違和感を覚えます‥‥
が、反論はゆっくり考えますのでしばらくお待ちください、様々な視点を提供いただき感謝しております

1040 名前:はちみつ餃子 mailto:sage [2022/05/21(土) 17:56:26.14 ID:JD6rd3hb.net]
>>994
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。

① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!



1041 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 18:53:36.34 ID:0jWT+RR4.net]
>>995

>>995 でいう定義は宣言に置き換えるべきでは?
ODR はあくまでも定義の話であって、宣言の話ではないかと考えます、私の勘違いでしょうか?

実装的には inline のついた関数定義が外部にリンクされる可能性があれば、すなわち extern な iniline 関数があれば、リンクのためのコード体を、各所に inline に展開されるコード体とは別に(こっそり)用意しておく、見たいな感じで十分に実装可能ですね

1042 名前:はちみつ餃子 mailto:sage [2022/05/21(土) 19:24:52.72 ID:JD6rd3hb.net]
>>996
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。

その上で現在では LTO が普及したのでどうでもよくなったけど。

1043 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 20:03:09.89 ID:0jWT+RR4.net]
>>997
なるほど、やっと理解しました

LTO: Link Time Optimization ですか‥‥、トラブルの元で胡散臭いと思っている私は古い人なんでしょうね‥‥、.obj がコンパイラ固有になるのも嫌ですし

1044 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 20:12:03.42 ID:kYXfaM+5.net]
海外の専門用語はわかりにくいのう
日本風にリンオプとか略してくれればいいのに
イニシャリズムみたいな言い方だとなんて言うんだろ

1045 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 20:15:04.92 ID:0jWT+RR4.net]
>>999
村上龍の「5分後の世界」では、略語は使うな、ちゃんと元の言葉を使え、と教育されていますね
ジョージ・オーウェルの「1984」では、略語は謀略的な意味で使われる(小説末尾の appendix: New Speak 解説のカテゴリーB)ようですね

これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが

1046 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 36日 11時間 35分 33秒

1047 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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