◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

C++相談室 part160 ->画像>1枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1649979572/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん2022/04/15(金) 08:39:32.42ID:WMzvufu2
前スレ
C++相談室 part158
http://2chb.net/r/tech/1645239402/

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

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

4デフォルトの名無しさん2022/04/15(金) 08:50:45.87ID:xDiQzMrD
おつ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23デフォルトの名無しさん2022/04/15(金) 20:45:25.17ID:aidqFE7S
前スレでクラス内部に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デフォルトの名無しさん2022/04/15(金) 21:08:51.51ID:ZOmTtyVU
実際に1個しか存在しないものはシングルトンの表現が合ってる
GPUとかな

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

53デフォルトの名無しさん2022/04/17(日) 11:22:48.55ID:RqkDCOAY
コンピュータの場合、累積する誤差を少なくするよう定数を求めるのが最も重要なわけで。
統計的に3.17がπとして相応しいことがわかっています。

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

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

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

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

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

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

58デフォルトの名無しさん2022/04/17(日) 11:50:12.40ID:0uPuuShy
なんのスレやねん

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

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

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


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

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

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

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

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

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

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

65デフォルトの名無しさん2022/04/18(月) 07:14:50.33ID:t3NwdXGg
デバッグビルド?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

87デフォルトの名無しさん2022/04/20(水) 19:24:03.82ID:q+GeEjNV
移住して快適な掲示板

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

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

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

90デフォルトの名無しさん2022/04/20(水) 22:15:36.38ID:4qIYThBV
>>89
早速帰ってきてて草

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

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

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

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

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

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

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

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

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

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

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

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

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

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

102デフォルトの名無しさん2022/04/21(木) 11:56:00.06ID:Ex423fK8
>>96
つboost

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

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

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

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

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

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

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

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

109デフォルトの名無しさん2022/04/21(木) 17:26:35.88ID:3fppYdMF
longjmpも大概だわ

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

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

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

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

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

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

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

116デフォルトの名無しさん2022/04/21(木) 18:38:56.67ID:Hotp0qqb
>>114
君が経験不足なだけ

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

118デフォルトの名無しさん2022/04/21(木) 18:45:27.70ID:9qc6sZDy
キャッチオール規制

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

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

121デフォルトの名無しさん2022/04/21(木) 19:06:54.50ID:3fppYdMF
シグナル的な話かね

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

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

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

125デフォルトの名無しさん2022/04/21(木) 19:40:56.19ID:XLa0Reo3
生娘が多いスレですね

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

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

128デフォルトの名無しさん2022/04/21(木) 20:23:53.47ID:dzuJ6upO

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

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

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

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

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

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

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

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

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

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

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

138蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 01:53:53.59ID:BJPJNuGw
SEHの訳語が構造化例外ハンドリングだから、例外の一種と言えるはずだ。

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

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

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

142蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 02:51:22.19ID:BJPJNuGw
dangerous yofukashi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

158デフォルトの名無しさん2022/04/22(金) 07:59:20.08ID:0Q7NQ1lp
発端はこれだよな

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

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

159デフォルトの名無しさん2022/04/22(金) 08:29:32.01ID:OAazuPnp
>>158
そいつがずっと書いてるとおもってんの?

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

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

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

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

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

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

165デフォルトの名無しさん2022/04/22(金) 08:59:58.70ID:FOSKJcjg
>>141
ここはり地域w

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

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

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

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

170デフォルトの名無しさん2022/04/22(金) 11:21:59.53ID:HAxRxWew
マイクロソフトの解説

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

Microsoft 固有:

171デフォルトの名無しさん2022/04/22(金) 11:33:57.93ID:OAazuPnp
>>170
親は何歳で死んだん?

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

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

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

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

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

177デフォルトの名無しさん2022/04/22(金) 12:25:23.61ID:oJU3aoBf
Virtual C++?

178蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 12:31:17.16ID:BJPJNuGw
Visual C++ね。

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

180デフォルトの名無しさん2022/04/22(金) 12:38:40.45ID:wri6W8iQ
>>176

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

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

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

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

183デフォルトの名無しさん2022/04/22(金) 12:41:11.68ID:wri6W8iQ
???

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

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

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

186蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 13:11:18.22ID:BJPJNuGw
関西弁は標準日本語ではないが、日本語である。
この辺が難しい話なんだ。

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

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

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

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

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

189デフォルトの名無しさん2022/04/22(金) 13:19:56.10ID:oJU3aoBf
なんか変な感じになったごめん

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

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

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

191デフォルトの名無しさん2022/04/22(金) 13:43:24.93ID:0v5EEVUK
>>190
悔しいのう

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

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

194蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 14:08:07.99ID:BJPJNuGw
♪実装が終わって〜 僕らは入った〜

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

195デフォルトの名無しさん2022/04/22(金) 14:14:37.92ID:coLCpeOs
り地域のくせになまいきだぞ

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

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

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

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

199デフォルトの名無しさん2022/04/22(金) 14:40:25.86ID:7P+21PvJ
>>123書いて話終わると思って今見たらまだこの話が続いてることに驚き・・・
よほど恥ずかしかったんだな
ID変えてこんなに自演しちゃうなんて

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

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

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

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

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

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

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

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

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

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

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

208デフォルトの名無しさん2022/04/22(金) 20:19:32.94ID:g3buRrxh
ここもレベルが下がったね…

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

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

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

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

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

212デフォルトの名無しさん2022/04/22(金) 21:45:02.53ID:wri6W8iQ
>>210
そんな話はしていない。

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

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

関係ある話じゃんwww

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

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

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

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

217蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 22:15:13.75ID:BJPJNuGw
CライクなVisual C++でもSEHを使えるよ。

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

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

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

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

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

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

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

222蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 22:29:30.61ID:BJPJNuGw
https://github.com/katahiromz/Hello/blob/main/hello16/hello16.cpp

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

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

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

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

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

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

227蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 22:43:24.19ID:BJPJNuGw
>>226
アホ。それは一般ユーザ向けの話で、OS内部では死ぬほど使われてるぜ。

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

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

229蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 22:50:11.36ID:BJPJNuGw
>>228
その議論は「実測しろ」で済む話。

230蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 22:52:46.51ID:BJPJNuGw
実装の分析を放棄するなら、実測しかないじゃねーか。

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

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

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

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

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

235蟻人間 ◆T6xkBnTXz7B0 2022/04/22(金) 23:14:59.45ID:BJPJNuGw
「男は卑怯」とか「血液型A型はまじめ」とか、統計上の母集団も不明なものを一般化して議論するのははっきり言ってめんどい。

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

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

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

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

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

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

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

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

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

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

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

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

244蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 00:07:15.99ID:IwDNjbNY
>>243
https://twitter.com/kekyo2/status/1429983729062092810
MSVCのソースはハッキングしないとわからん。
https://twitter.com/5chan_nel (5ch newer account)

245蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 00:13:13.27ID:IwDNjbNY
>>242
MSVCは現在のVisual C++のコンパイラと同じだよ。メチャクチャ使われてるよ。

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

247蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 00:16:54.58ID:IwDNjbNY
>>246
RaiseException関数はSEH機構の一部だから。

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

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

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

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

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

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

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

253デフォルトの名無しさん2022/04/23(土) 06:15:24.18ID:nWwnCTH/
キャッチオール!!

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

255デフォルトの名無しさん2022/04/23(土) 10:49:10.48ID:PaneGw8k
>>254
お前がバカ

256デフォルトの名無しさん2022/04/23(土) 11:06:26.27ID:BMKo0y1z
まだsehの話ししてんかよ
ヤフーニュース見てみろよ、大変なことが起きているのに
おまえら暇だな

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

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

259ハノン ◆QZaw55cn4c 2022/04/23(土) 11:28:12.87ID:F6Lb3Bw6
荒れていますね、理想の雰囲気です…満足、満足

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

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

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

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

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

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

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

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

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

268蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 18:29:38.10ID:51eUfy6p
Win32 C/C++だとSEHじゃないとキャッチできない例外もある。

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

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

271デフォルトの名無しさん2022/04/23(土) 18:51:11.58ID:Jl8YckOx
じつにトライしてますね

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

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

274蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 19:24:44.23ID:51eUfy6p
// ヌルポインタ参照。
char *p = NULL;
*p = 0; // ぶっ飛ぶ。

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

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

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

277デフォルトの名無しさん2022/04/23(土) 19:53:40.19ID:MFWNsjL4
>>276
そんな気持ち悪い独自仕様にして何を考えてるんだろう
余分に負担のかかるプログラミングを強いられるデメリットしかない

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

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

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

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

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

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

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

285デフォルトの名無しさん2022/04/23(土) 21:09:05.54ID:yDjwvYRz
>>284
そんな実装をしている例はない
SEHも誤読でソース無し

286蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 21:20:35.92ID:51eUfy6p
>>285
C++例外のSEHの実装例はあるよ。
MinGW gcc でもあるし、Visual C++ /SHaでもあるし。

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

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

289蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 21:40:18.76ID:51eUfy6p

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

291蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 21:43:17.83ID:51eUfy6p
単純な例外処理は最適化で消えることがある。常識。

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

293蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:07:33.30ID:51eUfy6p
>>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.

294蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:09:39.97ID:51eUfy6p
君の単純なthrowの例では
std::terminate()
になるかもしれない。

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

296蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:12:58.42ID:51eUfy6p
>>295
してるよ。

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

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

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

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

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

302蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:27:21.96ID:51eUfy6p
>>299
>throwで構造化例外を送出できるようになるわけじゃないぞ

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

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

304蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:34:18.65ID:51eUfy6p
>>299
>オプションもまともに書けないとかお前さん使ってないだろw

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

305蟻人間 ◆T6xkBnTXz7B0 2022/04/23(土) 22:38:25.54ID:51eUfy6p
>>303
SEHを知らん人にいちいち教えるのは授業料がかかるが。

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

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

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

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

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

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

312デフォルトの名無しさん2022/04/23(土) 23:25:16.57ID:BMKo0y1z
そろそろc++の話ししようぜ

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

さらにdeclvalに渡したい

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

334デフォルトの名無しさん2022/04/24(日) 11:04:51.34ID:7qMJqWpF
>>313
C から踏襲したのだし、 C でそう決めたときに比較できるような「他の言語」なんて無かった。
当時に知られていた比較的近い構造化された文法を持つ言語というと Pascal くらいか。
演算子を分けない選択肢もあったということは今だからわかることなんだよ。

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

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

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

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

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

340デフォルトの名無しさん2022/04/24(日) 12:01:55.19ID:sqHO6Ex+
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大無くても良くねなぜ有るんだろう事案

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

342デフォルトの名無しさん2022/04/24(日) 12:13:57.09ID:sqHO6Ex+
まつが
えますた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
になるかも、、、

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

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

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

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

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

347デフォルトの名無しさん2022/04/24(日) 12:25:11.79ID:sqHO6Ex+
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通り)のどれな意味のかが暗黙になって機械任せになってしまったら
コードを書く方も読む方も疲弊して転職しちゃいそう……

348デフォルトの名無しさん2022/04/24(日) 12:31:08.83ID:S3EB6hln
>>312の話ですね
戻しましょうか

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

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

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

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

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

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

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

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

357デフォルトの名無しさん2022/04/24(日) 13:52:38.36ID:fO0RhYFQ
ということにしたいのですね。

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

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

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

361蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 14:59:44.05ID:0sr3C4Gh
【確認方法】
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

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

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

363蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 15:13:01.79ID:gt27lZWI
>>362
アセンブリレベルでセマンティクスもないだろ。

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

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

366ハノン ◆QZaw55cn4c 2022/04/24(日) 15:20:22.47ID:pSkiKAbi
>>362
>次にSEHのセマンティクスはC++の例外とは微妙に異なる

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

367蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 15:25:25.72ID:gt27lZWI
アセンブリレベルでC++のセマンティクスを維持しているとは考えにくい。

368蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 15:27:30.57ID:gt27lZWI
例え違うとしてもその違う部分をカバーするコードを追加すれば実装できる。

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

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

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

372蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 15:36:02.53ID:gt27lZWI
>>371
そして、データはGetExceptionInformation()関数で受け取れるよ。

373デフォルトの名無しさん2022/04/24(日) 15:41:20.57ID:1MdKUkTK
>>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自体は上記マイクロソフト公式にある通り

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

375デフォルトの名無しさん2022/04/24(日) 16:12:31.33ID:rWBP/Ftg
>>373
コードで示せ、馬鹿

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

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

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

377デフォルトの名無しさん2022/04/24(日) 16:25:37.38ID:/nn9hjCc
どーせWinNT4,0のみとかの時代

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

379デフォルトの名無しさん2022/04/24(日) 16:36:53.29ID:hQcXh+IC
蟻人間は糖質淫夢

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

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

382デフォルトの名無しさん2022/04/24(日) 16:39:53.42ID:AVdPl8RM
>>380
おいおい、名前消し忘れているぞ

383デフォルトの名無しさん2022/04/24(日) 16:40:14.89ID:gt27lZWI
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね

384蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 16:40:51.00ID:gt27lZWI
>>383
通報しました

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

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

387蟻人間 ◆T6xkBnTXz7B0 2022/04/24(日) 16:45:16.32ID:0sr3C4Gh
>>386
してねーよ、葛切り粉

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

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

390デフォルトの名無しさん2022/04/24(日) 17:02:22.09ID:niSPJuf8
敗者はちょっと黙っててくれないか

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

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

393デフォルトの名無しさん2022/04/24(日) 17:11:48.45ID:gt27lZWI
>>392
これはウソだな。

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

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

ばーかばーか

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

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

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

399デフォルトの名無しさん2022/04/24(日) 17:43:21.04ID:PJ2W81bg
何かを誤魔化したいんやろな
何かを

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

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

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

403デフォルトの名無しさん2022/04/24(日) 20:03:45.00ID:/sOgUx/q
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

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

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

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

406デフォルトの名無しさん2022/04/24(日) 20:23:50.59ID:gt27lZWI
マイクロソフト ガ コタエ ダ。

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

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

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

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

409デフォルトの名無しさん2022/04/24(日) 20:38:30.36ID:gt27lZWI
*治安の良い

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

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

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

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

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

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

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

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

416デフォルトの名無しさん2022/04/24(日) 21:25:52.15ID:gt27lZWI
>>415
拡張後のSEHの話?

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

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

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

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

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

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

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

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

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

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

424蟻人間α ◆T6xkBnTXz7B0 2022/04/24(日) 23:04:43.77ID:gt27lZWI
AIも架空の拡張話にだまされちゃいけないよ。

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

426デフォルトの名無しさん2022/04/24(日) 23:38:35.38ID:U604NFl7
>>373のMicrosoft公式の記載から
「SEHとC++例外は仕様が異なる」
「そのためSEHでC++例外の実装は不可能」
とわかる

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

これら以上のことでも以下のことでもない
どちらがとちらを実装したという話ではない

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

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

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

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

431蟻人間 ◆T6xkBnTXz7B0 2022/04/25(月) 00:11:13.33ID:mbg+zK8Z
SEHモデルのことか。納得した。ハンドリングじゃなくてハンドリングモデルのことか。

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

432デフォルトの名無しさん2022/04/25(月) 00:34:43.79ID:b7g3ibdV
蟻人間が論破されたと聞いたので記念パピコ

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

433デフォルトの名無しさん2022/04/25(月) 00:42:32.05ID:b7g3ibdV
つか
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)はやったらできないことは無いかもしれないが、何の例外オブジェクトを飛ばすのが妥当かという問題ががが……

※ 個人の感想です

434デフォルトの名無しさん2022/04/25(月) 00:42:43.23ID:O6IqX29e
記念も何も、しょっちゅうボロカスにされてるやん

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

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

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

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

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

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

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

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

443デフォルトの名無しさん2022/04/25(月) 06:13:05.52ID:OEFRicH0
技術板で勝利宣言て虚しくないのかね
技術的に論を闘わせることで理解を深めたり情報を得ることにこそ価値があるのに
そこがわかっておらずか忘れてか逃げてか知らんが志の低さに呆れるの通り越しちまう

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

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

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

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

448はちみつ餃子 ◆8X2XSCHEME 2022/04/25(月) 11:09:28.07ID:HpSYwdw3
>>445
ワイは併用しておるやで。
興味ないときは読み飛ばすけど。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

470蟻人間 ◆T6xkBnTXz7B0 2022/04/26(火) 20:43:50.48ID:VyKiRhui
>>468
OutputDebugString

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

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

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

474デフォルトの名無しさん2022/04/26(火) 21:28:50.73ID:y9ESXUU8
マイクロソフト信者はおかしい

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

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

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

478デフォルトの名無しさん2022/04/26(火) 22:01:46.99ID:LprfjWj1
>>476
それでいいのか?w

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

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

481デフォルトの名無しさん2022/04/26(火) 23:59:16.33ID:dZOuwtIw
>>477
スペルミス笑った

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

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

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

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

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

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

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

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

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

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

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

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

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

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

492デフォルトの名無しさん2022/04/27(水) 07:47:51.58ID:BxFepXA5
今どき2ちゃんねるって…

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

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

495デフォルトの名無しさん2022/04/29(金) 19:12:43.62ID:g4xa57bn
じぁあ俺は江添やるわ

496はちみつ餃子 ◆8X2XSCHEME 2022/04/29(金) 20:24:36.60ID:1rxQCQBS
江添はもう C++ にはやる気なくしてるっぽいぞ。

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

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

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

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

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

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

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

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

505はちみつ餃子 ◆8X2XSCHEME 2022/04/29(金) 23:44:21.28ID:1rxQCQBS
江添が仕事で実務的なプログラムを C++ で書いたことがあるのかはようわからんが、
少なくとも外部に発表したのは文章ばかりで、完成したアプリケーションを発表したことはほとんどない。
俺が知っているのは彼がドワンゴに入るよりもずっと前に Windows 用ソフト (というかとあるソフトのアドオン) を
公開したのを見たのが最初で最後だ。

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

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

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

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

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

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

510デフォルトの名無しさん2022/04/30(土) 03:49:46.04ID:zRkNYUvD
>>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;
とでもしておけばいい

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

それでやってみろよwwww

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

struct STRUCT {
int array[4];
};

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

こんな事をやりたい

offsetofを使えって?

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

514デフォルトの名無しさん2022/04/30(土) 10:58:35.53ID:pjMZxOoQ
質問ですが
他から渡されてきた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');
とかされていたら左詰め/右詰め/パディングが独自フォーマットとして制御し切れていない気が……

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

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

517デフォルトの名無しさん2022/04/30(土) 11:49:21.15ID:qP6dl9mx
 ('_')
||
| つ('0')

518デフォルトの名無しさん2022/04/30(土) 11:50:48.98ID:xinPqoeI
>>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

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

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

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

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

誰かたすけて!

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

522デフォルトの名無しさん2022/05/01(日) 05:48:25.64ID:TlTI4EO+
円盤でお願いします

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

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

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

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

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

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

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

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

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

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

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

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

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

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

537デフォルトの名無しさん2022/05/01(日) 16:19:28.57ID:pvwx8N/t
>>521
oneapi でなく openapi というのがあるの?

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

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

540はちみつ餃子 ◆8X2XSCHEME 2022/05/01(日) 18:35:08.33ID:qIevfvlJ
>>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 でプロセス内にプログラムを注入する方法もあるよ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

554デフォルトの名無しさん2022/05/02(月) 08:09:32.17ID:rW7ccw75
単純な逆参照*pmができるメンバ関数型はすべからくクロージャなるべし?
class Foo a;  // std::string Foo::someMemberFunc(int a, int b, double c)を持つ
class Bar b;  // 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()が呼ばれるためのクロージャにデリファレンスされる

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

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

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

558デフォルトの名無しさん2022/05/02(月) 10:12:11.24ID:Lc/e3xtf
仕様がクソすぎる

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

560デフォルトの名無しさん2022/05/02(月) 11:30:26.72ID:m3O8Sm5F
ちんちんシュッ!シュッ!シュッ!

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

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

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

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

564デフォルトの名無しさん2022/05/02(月) 12:40:24.60ID:+FOPwlZG
>>559
安心しろ。俺もわからん。

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

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

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

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

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

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

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

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

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

569デフォルトの名無しさん2022/05/02(月) 16:53:07.08ID:9K9pP+jI
>>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; こうなるべき

570はちみつ餃子 ◆8X2XSCHEME 2022/05/02(月) 17:15:19.01ID:dhIldcoi
>>568
は?

> どうでもいいとして

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

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

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

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

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

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

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

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

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

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

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

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

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

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

577デフォルトの名無しさん2022/05/02(月) 18:27:19.33ID:WQmMvuhJ

578はちみつ餃子 ◆8X2XSCHEME 2022/05/02(月) 18:34:51.86ID:dhIldcoi
>>576
これは抽象の問題だから言葉の定義こそが本題だよ。

579デフォルトの名無しさん2022/05/02(月) 18:40:58.17ID:HZ9CcBZq
おじいさんみたいな改行と文体

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

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

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

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

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

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

583デフォルトの名無しさん2022/05/02(月) 20:14:09.92ID:pVfL1f+B
ninja使わないで普通にmakeするとものすごく遅いな。
ninjaって凄く速かったんだな。

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

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

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

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

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

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
https://twitter.com/5chan_nel (5ch newer account)

589デフォルトの名無しさん2022/05/03(火) 18:51:24.96ID:TQMg8rzt
>>587
最後の止め乙

590デフォルトの名無しさん2022/05/03(火) 22:24:19.43ID:J5PtY6cN
ついでに漏れもお馬鹿質問したいのですが
ファイルスコープの関数を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(?): コンパイラに怒られそう
}

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

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

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

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

namespaceとの相互作用は知らん

594デフォルトの名無しさん2022/05/03(火) 23:03:04.80ID:J5PtY6cN
>>593
た確かに…!
VCだとC++リンケージの関数でも問題無く登録できてイゴイタ
ここの記述に引きずられてしまった↓
https://www.ibm.com/docs/ja/zos/2.2.0?topic=functions-atexit-register-program-termination-function
C および C++ のリンケージ規約は非互換の ため、atexit() は C++ 関数ポインターを受け取ることができない。
C++ 関数ポインターを atexit() へ渡そうとすると、コンパイラーが エラーとしてこれにフラグを付けることになる。
C++ atexit() 関数を使用するには、atexit() に登録されたすべての 関数を extern “C” として宣言することに より、
これらの関数が C リンケージを必ず持つようにしなければならない。

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

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

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

597デフォルトの名無しさん2022/05/04(水) 10:35:59.45ID:GAB8HZoP
2^17179869183って計算できる?

598デフォルトの名無しさん2022/05/04(水) 11:01:15.82ID:vYlyugAJ
俺の脳じゃ無理

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

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

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

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

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

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

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

606デフォルトの名無しさん2022/05/04(水) 15:26:18.04ID:RRH/ygkO
ゴメス落ち着いて考えたら倍精度で表せる最大値は
 ((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

607デフォルトの名無しさん2022/05/04(水) 15:36:55.26ID:GAB8HZoP
倍精度浮動小数点数が64ビット浮動小数点数なので、
128倍精度浮動小数点数は4096ビット浮動小数点数。

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

608デフォルトの名無しさん2022/05/04(水) 15:38:07.79ID:GAB8HZoP

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

610デフォルトの名無しさん2022/05/04(水) 15:59:04.91ID:GAB8HZoP
倍精度浮動小数点数の場合。

>(2^((2^(11-1))-1))*(2-(2^-52))
=
+ 1797 69313
48623 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が仮数部(符号含まない)

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

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

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

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

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

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

616デフォルトの名無しさん2022/05/04(水) 17:57:22.19ID:GAB8HZoP
スレチだけど
https://paiza.io/projects/
のpython3で
print(2**17179869183)
をやってみたところエラーになった。
print(2**171798)
では答えが出る。
メモリかな?

617デフォルトの名無しさん2022/05/04(水) 19:39:52.57ID:CsYq7Xth
http://codepad.org/ でも print(2**171798) までやね
print(2**1717986) だと time out
print(2**171798691) だと MemoryError

618デフォルトの名無しさん2022/05/05(木) 00:09:45.17ID:u08Uuhhj
下記は一部ですので不完全です、型をソートしています。
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...>>...>;
   
 };
};

619デフォルトの名無しさん2022/05/05(木) 02:32:03.93ID:FeY8iOM4
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡

リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、
業務委託契約の求職者と企業をマッチング

1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!

『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル

副業・兼業マッチングサービス「クラウドリンクス」登録者数2万人突破
中小企業で進む副業人材の採用、96%が継続採用を希望

茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金

長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給

フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説

620デフォルトの名無しさん2022/05/05(木) 03:10:15.14ID:Hm4Z5Kkb
>>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

621デフォルトの名無しさん2022/05/05(木) 03:10:34.57ID:Hm4Z5Kkb
10より大きい10^n(100万とか)で割ることにしたら多少は改善するかもしれないが、
最終的に10^nのn桁を10進数表示することを繰り返すことを考えると10で割るトータルの回数に違いが出ないから改善しなさげ……orz

むしろ2進数で計算して10進数にするのではなく最初から10^n進数表現(ただし10^n < UINT32_MAXとか)で2^Nの計算の方を実質10進数でやった方が速そう
計算の手間がO(N^2)なのは変わらないが、割り算無しで済むのは大きいい(多分、

622デフォルトの名無しさん2022/05/05(木) 03:19:38.09ID:Hm4Z5Kkb
2^Nを10^n進数表現(ただし10^n < UINT32_MAXとか)で計算するのはうまくやれば(10^nをUINT_MAXとかよりやや小さめにしたら)
掛け算によるキャリーの伝搬頻度を減らせるから副次的にさらなる高速化の余地が生まれ得る、

623デフォルトの名無しさん2022/05/05(木) 06:04:52.05ID:zLdy+6M7
繰り返し二乗法で大きい素数のmodを計算すれば良いだけ
整数の商がいくらかもすぐ計算できるので、簡単に復元できる
復元した値をメモリに持つかどうかは別の話
はい終わり

これしきのことも分からない奴ら頭ヤバいよ
言語仕様の話ばっかり大好きでアルゴリズムの知識が微塵もないボンクラ
競プロキッズのこと馬鹿にできないね

624デフォルトの名無しさん2022/05/05(木) 06:34:28.46ID:JqRzkj2D
素直に10進多倍長で計算すればいいだけ
今のPCならすぐ

625デフォルトの名無しさん2022/05/05(木) 06:58:12.94ID:ghaa3vLm
>>623-624
すごいね
じゃあ 2^17179869183 の解をここに書いてみて
あとそのプログラムコードも

626デフォルトの名無しさん2022/05/05(木) 08:43:37.74ID:Hm4Z5Kkb
自演ちゃうねん
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?

627デフォルトの名無しさん2022/05/05(木) 10:32:36.82ID:CLlK/Ylr
興味本位で全桁表示したいだけなら5171655947桁あることを知って諦めてほしい
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ

概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる

628デフォルトの名無しさん2022/05/05(木) 10:34:08.63ID:QrYoef2b
10000007とかで割れって言ってるんだろ
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと

629デフォルトの名無しさん2022/05/05(木) 10:39:30.08ID:CLlK/Ylr
あごめん桁数は5171655948が正しいね

630デフォルトの名無しさん2022/05/05(木) 10:41:25.83ID:dV/D8sCJ
>>628
7の誤差ってなにけ?
整数なのに誤差とかあるん?

631デフォルトの名無しさん2022/05/05(木) 10:44:36.09ID:vEkkTSCd
>>627
10進での桁数は
17179869183*log2/log10
https://ja.wolframalpha.com/input?i=17179869183*log2%2Flog10
で計算できることは知っているが、
先頭の値はどうやって出すの?

632デフォルトの名無しさん2022/05/05(木) 11:11:25.53ID:Lziv+Vr+
ていうか対数知らんのだろうね

633デフォルトの名無しさん2022/05/05(木) 11:31:29.78ID:E1ivHqdi
>>613
自動的に昇進するだけで、デフォルトで多倍長って表現は違和感。
2**-1は0.5だけどデフォルトで浮動小数点ってわけじゃないよね

634デフォルトの名無しさん2022/05/05(木) 11:36:06.02ID:CLlK/Ylr
>>631
小数部だけをまた10の肩に乗っければいい

635デフォルトの名無しさん2022/05/05(木) 11:47:06.17ID:Z9g54GsT
整数で返すべき関数の実装あるんか?

636デフォルトの名無しさん2022/05/05(木) 12:32:26.31ID:Ng8+cu+X
GMPでやってみたけどoverflowで落ちるな

637デフォルトの名無しさん2022/05/05(木) 12:52:41.09ID:vEkkTSCd
皆さんすみません>>597です。

2^17179869183

とりあえず
10^5171655945.66625415874401993568579902587321942922330151106009...
で勘弁してください。

実数が分かれば文字数で桁数も分かりますので、
実数が知りたかったんですが、ここまでしか分かりません。
お手数おかけしました。
多倍長電卓で計算できないんでプログラムならできるのかな?と思ったわけです。
現時点では計算時間とメモリを食いそうですね。

638デフォルトの名無しさん2022/05/05(木) 17:24:23.79ID:irZh29WM
ざっくりとした大きさや上下数桁はわかっても全体を丸々把握するのは厳しそう

639デフォルトの名無しさん2022/05/05(木) 18:10:40.93ID:wHYrtDCY
https://ideone.com/O1rs45
誰か助けてー。
ウエブのレクチャー見て書いたんだけど、一件通ったと思ったらほかのテストが通らない。
デコーダが悪いのだろうか?というか、解釈狂ってるかなぁ??マジ解らん。

アドバイスクレクレ。

640デフォルトの名無しさん2022/05/05(木) 18:12:32.63ID:wHYrtDCY
まじ わか らん

641蟻人間 ◆T6xkBnTXz7B0 2022/05/05(木) 18:17:21.57ID:/C0Dx8BU
>>639
std::uniform_int_distribution<int> ui('A', 'z');

大文字小文字?

642デフォルトの名無しさん2022/05/05(木) 19:01:19.69ID:wHYrtDCY
Aのほうが数字的に小さいのですよ。

643デフォルトの名無しさん2022/05/05(木) 19:06:48.31ID:p/xHapT/
>>639
V.push_back({ { D[i] }, i }); は V.push_back({ D[i], i }); じゃないの?

644デフォルトの名無しさん2022/05/05(木) 19:40:11.06ID:jNTEQQGI
>>639
プログラムの意図がわからんから投げたわ

1. Data型の<1>要素の意味はなんだよ。typedefした行のコメントに書いといてほしい
2. 関数名を流し見る限り、ソート・エンコード・デコードの3つの仕事がある。中途半端に仕事が混ざってない?

645デフォルトの名無しさん2022/05/05(木) 19:50:34.56ID:p/xHapT/
>>644
ブロックソートアルゴリズムの実装をしているだろう。
とすると size_t はソートバリエーションのインデックスを表していると思われる。

646デフォルトの名無しさん2022/05/05(木) 21:14:55.46ID:tw5Ro1fM
Wikipediaのブロックソートを実装しようとしているのなら、
あちこち違ってるんで、修正版を貼っておく。
https://ideone.com/q008E8

647デフォルトの名無しさん2022/05/05(木) 22:10:21.31ID:CGnulbl/
int64_tとsize_tを暗黙の型変換を期待して混ぜて計算するとはまる?

(int64t - int64t) + sizet >= int64t
の比較をしたら2つ目のint64tが大きくなっても(とは言っても全ての値は10~-10くらい)boolの値はずっと1でした。
比較の前まで切り出してprintfすると正しい値が出るのですが、比較式に組み込むとおかしくなります。
sizetをint64tにキャストすると正しく動きました。

暗黙の型変換はsizetをint64tにしてくれないのでしょうか

環境はWSL2のg++です。

教えて下さい

648はちみつ餃子 ◆8X2XSCHEME 2022/05/05(木) 22:59:30.02ID:MaGUTczU
>>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 な値への型変換規則によってかなり巨大な値になってしまう。
たぶんこれが意図しない挙動の原因だと思う。

649はちみつ餃子 ◆8X2XSCHEME 2022/05/05(木) 23:03:22.90ID:MaGUTczU
>>648
符号無しが優先って書いちゃったけど、これは大きさが同等なら符号無しが優先ってことね。
大きさに差があるなら大きい方の符号が採用される。
(大きさって言ってるけど実際には順位 (rank) の序列が定められている。 まあ大きさの順なので実質同じやろ。)

650デフォルトの名無しさん2022/05/05(木) 23:06:38.57ID:2L8NgwAH
size_t が非負の32 bit なら、int64_t の範囲内だから、OK だけど、
size_t が非負の64bitなら、int64_tの範囲外で無理

int64_tの非負の範囲は、63bitしかないから

651はちみつ餃子 ◆8X2XSCHEME 2022/05/05(木) 23:20:02.75ID:MaGUTczU
例としてこういうのがあるとわかりやすいかな。

#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 が表示される。

652デフォルトの名無しさん2022/05/05(木) 23:39:48.09ID:Hm4Z5Kkb
というわけで高速化すた、
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ぐらいで出る

6536472022/05/05(木) 23:52:14.24ID:CGnulbl/
皆様ありがとう。
たいへん納得できました

654デフォルトの名無しさん2022/05/06(金) 07:02:57.27ID:kL1BvaNc
ゴメス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

655デフォルトの名無しさん2022/05/06(金) 10:53:36.44ID:2sf+UfT7
生きてるうちに終わりそうでよかった

656デフォルトの名無しさん2022/05/06(金) 12:17:44.01ID:DqDgjvgu
python超初心者スレでひな形を教えてもらってpythonでプログラミングしたところ、

2^17179869183

4.637182185095045843877145312775985050353215513064979818029199207764811280740258379690028942685133666E+5171655945

になるようです。
ご参考まで。精度等未確認ですが。

657デフォルトの名無しさん2022/05/06(金) 12:40:01.31ID:DqDgjvgu
>>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されている可能性があります。

658デフォルトの名無しさん2022/05/06(金) 13:36:52.82ID:dNZjdeLr
>>646
修正感謝。自分のコードに転写してみたらちゃんと動いた。
これちゃんとブロックソートか解らないけど、可逆ではあるので圧縮してみるね。
本当にありがとう。

659デフォルトの名無しさん2022/05/06(金) 15:08:33.81ID:dNZjdeLr
https://ideone.com/xxiusG
詐欺れなーい。LZWの1ワードが2バイトだと、若干損位で収束してしまうな。

何でだー。圧縮理論のはずだろ~~。

660デフォルトの名無しさん2022/05/06(金) 15:20:41.30ID:HAMEIRFi
延々同じようなことやってる低学歴さんたちって>>623見えんの?

661デフォルトの名無しさん2022/05/06(金) 15:25:15.07ID:P9K99Ehi
C++ のプログラムでサスペンド/復帰をお手軽に実装するための定番の方法ってないですかね?
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです

662デフォルトの名無しさん2022/05/06(金) 15:25:29.57ID:bNsO3W2u
>>659
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ

663デフォルトの名無しさん2022/05/06(金) 15:28:31.87ID:dNZjdeLr
>>662
噂によるとLZWはエントロピー圧縮では無いので出来ても良いかと思ったんだけど、駄目か。
根拠は辞書捨てるからだけどね。

とりあえず完成。

664デフォルトの名無しさん2022/05/06(金) 16:06:26.56ID:DVOROdCT
>>661
WM_POWERBROADCAST ggrks

665デフォルトの名無しさん2022/05/06(金) 17:03:00.97ID:Ai+BgFMJ
圧縮方式がなんだろうと可逆圧縮はデータ長が短くなるケースがあるならデータ長が長くなるケースが必ずある

65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。

このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない

666デフォルトの名無しさん2022/05/06(金) 17:26:03.51ID:dNZjdeLr
>>665
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。

667はちみつ餃子 ◆8X2XSCHEME 2022/05/06(金) 18:18:33.94ID:lqMO+ITd
データ圧縮時にあり得る最大伸長率をまとめたサイトをどこかで見たような記憶があったんだけど
あらためて探すと見つからない……。 幻だったんだろうか。

668デフォルトの名無しさん2022/05/06(金) 18:30:36.95ID:jJyKyUF7
>>667
ZipBombとかやべーやつもいるから安全に展開できるかの仕様の確認目的かな?

正攻法での最大圧縮率とかだと話が変わってきそうだが

669デフォルトの名無しさん2022/05/06(金) 20:00:41.83ID:AeHK35lN
>>660
繰り返し二乗法は分かったのだが
modを取る大きい素数の選び方が分からないので教えてほしい

670デフォルトの名無しさん2022/05/06(金) 20:02:30.43ID:L9gk7Obb
>>664
Linuxではどうすればいいの?

671デフォルトの名無しさん2022/05/06(金) 20:05:10.12ID:O7Z7ebwH
内部クラスを外部クラスが継承するって不可能?
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか

672デフォルトの名無しさん2022/05/06(金) 20:10:36.04ID:DVOROdCT
>>670
SIGなんちゃら系だろ
知らんけど

673デフォルトの名無しさん2022/05/06(金) 20:36:05.94ID:bNsO3W2u
>>671
無理だろ

674デフォルトの名無しさん2022/05/06(金) 22:11:28.52ID:j0ngZiiW
>>623
無理だろ

675デフォルトの名無しさん2022/05/06(金) 23:29:10.82ID:j0ngZiiW
>>597
30分くらいで計算できた

676デフォルトの名無しさん2022/05/06(金) 23:34:15.82ID:j0ngZiiW
計算結果いる?
5GBくらいのテキストファイル

677デフォルトの名無しさん2022/05/07(土) 00:00:32.86ID:8cLtDCyH
ああもう48年後か…
おまいらまだ生きてるか?

678デフォルトの名無しさん2022/05/07(土) 00:32:32.99ID:hLdUgsLX
>>676
先頭100桁とE+の値(文字数でもいいです)と最後の20桁ください。

679デフォルトの名無しさん2022/05/07(土) 01:43:20.82ID:s6tDba0D
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
暗算はスレチ

680デフォルトの名無しさん2022/05/07(土) 01:50:30.88ID:s6tDba0D
つなみに基数変換アルゴリズムにはトーナメント方式というものがあって並列計算に持ち込めるらし
星の数ほどプロセサーが使える場合は有効かもしれん
富岳を使える機会があったらやってみたい

681デフォルトの名無しさん2022/05/07(土) 02:01:09.56ID:i0ZrzBre
>>678 >>679
それだけなら>>657の128倍精度のライブラリで計算外すればすぐでは?

682デフォルトの名無しさん2022/05/07(土) 02:05:54.40ID:s6tDba0D
なにおうヽ(`Д´#)ノ ムキー!
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

683デフォルトの名無しさん2022/05/07(土) 02:06:56.87ID:i0ZrzBre
>>682
筆算法じゃ全桁計算は無理

684デフォルトの名無しさん2022/05/07(土) 02:12:56.32ID:s6tDba0D
>>683
48年ぐらい待ったらできうる

685デフォルトの名無しさん2022/05/07(土) 02:17:43.49ID:i0ZrzBre
2^17179869183 全桁

https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(ギガファイル便 テキストファイル)

686デフォルトの名無しさん2022/05/07(土) 02:20:59.45ID:dujXhAGl
なぜコードでなく計算結果なのか

687デフォルトの名無しさん2022/05/07(土) 03:43:06.05ID:bh3xusof
>>661,664,670,672
すみません。Linuxを想定していました

688デフォルトの名無しさん2022/05/07(土) 04:06:12.29ID:P9LDpr78
>>678
素人なので全部は計算出来ないですが
最後の20桁ならすぐに計算できました
88085753133198737408

689デフォルトの名無しさん2022/05/07(土) 04:20:35.96ID:qg2oNGE7
なんかCRIUとかいうのでできるらしいぞ

690デフォルトの名無しさん2022/05/07(土) 05:41:08.75ID:GCz/eJtw
乗算は量子演算使わないと万年かかる

691デフォルトの名無しさん2022/05/07(土) 07:36:33.84ID:hLdUgsLX
>>685
全桁データだからって正確とはかぎらんのかーい!

692デフォルトの名無しさん2022/05/07(土) 07:40:26.77ID:i0ZrzBre
合ってると思うけど
2通りで計算して同じだったし

693デフォルトの名無しさん2022/05/07(土) 08:15:43.50ID:hLdUgsLX
先頭数十桁と最後の数十桁は合っていそう。
文字数は5171655817で合ってるの?

694デフォルトの名無しさん2022/05/07(土) 08:21:32.36ID:hLdUgsLX
>>637
はウルフラムでの17179869183*Log2/log10の計算結果。
>>656
はpythonで打ったプログラムで出たもの。

桁数はE+5171655945で間違いないと思ったが。

695デフォルトの名無しさん2022/05/07(土) 08:49:15.35ID:i0ZrzBre
2^17179869183

●計算結果
https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(5171655946バイト)

※実行時間: 約20分

●コード (C言語)
https://ideone.com/xSaa6x

※メモリが16GBくらい必要です

696デフォルトの名無しさん2022/05/07(土) 09:26:24.51ID:hLdUgsLX
>>693
文字数チェックに使ったGigaTextViewerにバグがあったらしい。
バイト数で5171655946で見たら合ってるな。
バグないみたい。ご苦労様。

あとは128倍精度浮動小数点数の最大値とか計算できると良いな。
相当凄腕なら64倍以上のn倍精度精度浮動小数点数の最大値を0.06秒くらいで出せると良いけどな。

697デフォルトの名無しさん2022/05/07(土) 10:01:38.30ID:i0ZrzBre
(2^((2^(35-1))-1))*(2-(2^-4060))

これの計算なら
>>695のコードを少しいじれば出来るから
やってみな

698デフォルトの名無しさん2022/05/07(土) 10:05:53.71ID:hLdUgsLX
ともかくどうもありがとう。

699デフォルトの名無しさん2022/05/07(土) 10:27:32.54ID:hLdUgsLX
128倍精度付近の計算は5GB程度と分かったが、256倍精度なら80GB程度とかになるのか?
全部のデータを吐くのには無理があるな。

700デフォルトの名無しさん2022/05/07(土) 11:12:27.95ID:hLdUgsLX
次の問題。

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


これを合っているか確認して戴きたい。
時間かけなくていいからね。簡単にできそうならやってみて。

701デフォルトの名無しさん2022/05/07(土) 11:24:24.96ID:i0ZrzBre
8.75115884874047610417106853456142033180020093019414006243901196281217448329268687054879413418177223250026754484296779541335755918551116311988151294437120403120859156456766214020358536453140920536494153366498563224599112643650005214473466325352790995530944092962954114633561899471578385791449307429666571647389734015518462597415175193161095962388238415165666405164185316844538944891015624600209337136687435968731829027874814729004423100156170455627257657662018544353080611835640032201070594171947167003291711646891546745572991874468255861057996361346972313268224686528372873429102591994402195151868961348300405641520089415930898779525616284304652528475239523093098963439947423678208493232864450286525255133498508464916769066793870894739506167659828704373657304962097164032305167374291543346284808597600898542590310745266381890317624392291438000481495226828900983685105244929525982538100990167556406600838995052292E+355393490465494856465

702デフォルトの名無しさん2022/05/07(土) 11:27:01.76ID:hLdUgsLX
>>701
はやw

合ってるみたいだな。ありがとう。

703デフォルトの名無しさん2022/05/07(土) 11:29:01.32ID:hLdUgsLX
>>701
プログラムできちゃったの?凄いね。
最大何倍精度まで計算できるんだろうか?

704デフォルトの名無しさん2022/05/07(土) 11:29:47.60ID:hLdUgsLX
ウルフラムアルファでも計算できないのにw

705デフォルトの名無しさん2022/05/07(土) 11:30:15.89ID:i0ZrzBre
指数と桁の割り振りは決まってないし
好きに決めれば良いんだよ

IEEE754の範囲でも
倍になるごとに4bit増えてるわけでもない

706デフォルトの名無しさん2022/05/07(土) 11:31:51.28ID:i0ZrzBre
>>703
電卓で計算しただけ

707デフォルトの名無しさん2022/05/07(土) 11:45:08.76ID:hLdUgsLX
>>705
IEEE754-2008では推奨で決まってるよ。
結果的に4bit増になる式が書いてある。

まぁ別に合わせなくてもいいが、合わせて演算パッケージの開発をしやすくした方がいいんじゃないのかな。
桁が足りなければどんどん倍数を増やせばよいわけだし。

ちなみにどんな電卓なら計算できるの?

708デフォルトの名無しさん2022/05/07(土) 12:02:42.85ID:i0ZrzBre
>>707
自作電卓だけど
多くの桁数を計算出来る電卓(計算ソフト)は世の中にたくさんある

709デフォルトの名無しさん2022/05/07(土) 12:08:50.27ID:i0ZrzBre
半精度、単精度はルールかは外れてるし
8倍精度以上をそのままバイナリ形式で他のソフトとやり取りする事もなかなか考えられないし
桁数はいらないけど指数が欲しい時もある
というか、桁数に対して指数の割合が少なすぎる
65536倍精度を使う場面で指数を数ビットケチる意味はまったく無い

ライブラリを作るなら柔軟に設定出来るものが良いかと
半精度は今でも用途によって複数の形式があるし

710デフォルトの名無しさん2022/05/07(土) 12:11:03.63ID:hLdUgsLX
フリーソフトで出してよw

711デフォルトの名無しさん2022/05/07(土) 13:41:52.30ID:5iVnmLs9
boostに自分の作った無限状態マシンのラブラリーを導入して世界中の人に使ってもらいたいけどどうすればいい?

712デフォルトの名無しさん2022/05/07(土) 13:44:14.31ID:hLdUgsLX
2テトレーション6、2^^6、2^2^2^2^2^2の実数の計算はできますか?

713デフォルトの名無しさん2022/05/07(土) 14:01:25.93ID:i0ZrzBre
できません

714デフォルトの名無しさん2022/05/07(土) 14:06:31.86ID:hLdUgsLX
残念です。

715デフォルトの名無しさん2022/05/07(土) 16:05:50.34ID:Cir/Il2y
>>695のコードだと 2^2^35 くらいが限度

工夫すると 2^2^42 くらいまではいける
計算バッファにHDDを8TBほど使う

2^2^65536は...
宇宙中のリソースを使っても無理
上位1000桁や下位1000桁だけなら可能

716デフォルトの名無しさん2022/05/07(土) 19:56:49.06ID:hLdUgsLX
ブラウザpythonでプログラミングしたら10^10^50まではとりあえずエラーが出なかった。
内部でどうやってるんだろう?

717デフォルトの名無しさん2022/05/07(土) 20:11:08.30ID:ihw8CMAo
(2^2)^35か
2^(2^35)かどっちだ?
C++的には前者だが数学的には後者だな

718デフォルトの名無しさん2022/05/07(土) 20:28:26.23ID:hLdUgsLX
>>717
後者だろ?
俺もそれで組んだ。

719デフォルトの名無しさん2022/05/07(土) 21:33:22.65ID:GCz/eJtw
>>687
/etc/pm/sleep.d

720デフォルトの名無しさん2022/05/08(日) 00:59:03.56ID:fONWhazS
べき乗は右結合というのは宇宙の始まりから決まってゐる
なぜなら、(2^2)^35 = 2^(2*35)であって1重のべきにすぎないから左結合の多重冪は多重である意味が無い

721デフォルトの名無しさん2022/05/08(日) 01:01:37.38ID:fONWhazS
>>717
ここでの演算子^はXORの意味ではないから念のため

722デフォルトの名無しさん2022/05/08(日) 06:50:42.66ID:RoE3BV2z
2+2+2 = 2*3
2*2*2 = 2^3
2^2^2 = 2↑3
2↑2↑2 = 2↑↑3

723デフォルトの名無しさん2022/05/08(日) 06:51:37.65ID:RoE3BV2z
途中で送信しちまった
これをtemplateで一般化できるか?

724デフォルトの名無しさん2022/05/08(日) 07:50:20.51ID:21iaPdPG
ここの定義で実装してみた
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;
}

725デフォルトの名無しさん2022/05/08(日) 08:36:28.64ID:vKAQqA9f
>>722
>2^2^2 = 2↑3

あれ?

>3↑3=3^3(3の3乗)=27です。

とか書いている人もいる。

726デフォルトの名無しさん2022/05/08(日) 08:41:34.72ID:vKAQqA9f
>既に述べた通り、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

クヌースの矢印の矢印が一個ずつ足りないんじゃない?

727デフォルトの名無しさん2022/05/08(日) 10:21:28.93ID:RTAOPX4V
>>719
それは
> メモリの内容をファイルに丸々ダンプ
したりするための仕組みじゃないだろ
チェックポイントがやりたいんじゃないの

728デフォルトの名無しさん2022/05/08(日) 11:30:55.36ID:vKAQqA9f
>>716
ideoneのpythonなわけだが、
10^10^10^5まで対応していそうだ。

729デフォルトの名無しさん2022/05/08(日) 12:20:02.96ID:sGLUGFq3
>>728
タイムアウトすっぞ

730デフォルトの名無しさん2022/05/08(日) 12:29:28.95ID:ZM5mEHZG
昔C++で少ない文字数で巨大な数を作るってのやったなあ
intは十分大きいとしてint main();の戻り値を競うって感じ

731デフォルトの名無しさん2022/05/08(日) 12:51:18.92ID:riShKp28
>>724
constexpr for
ワロタ

732デフォルトの名無しさん2022/05/08(日) 13:13:57.96ID:sRJ9WYdm
return ~0;で終わりでは?

733デフォルトの名無しさん2022/05/08(日) 13:25:31.24ID:nwquViMM
-1だからあんまり大きくないんじゃね?

734デフォルトの名無しさん2022/05/08(日) 14:25:43.97ID:E3hRzs1K
>>727
??

735デフォルトの名無しさん2022/05/08(日) 14:51:21.54ID:fONWhazS
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桁の並びが得られる、

736デフォルトの名無しさん2022/05/08(日) 14:53:42.06ID:fONWhazS
FFTする高速化方法はここ↓見たらワカル(wは1のN乗根なので、w^N = 1とかw^(N/2)=-1とかいうのが式変形の要
https://qiita.com/peria/items/fbdd52768b4659823d88

いまちょっと他の用事で手が離せないので48年以内に累乗根の誤差の影響が無い形で実装してみるわサーセン;;;

そしたら漏れも勝ちや!

何と戦ってるのかは知らんが、

737デフォルトの名無しさん2022/05/08(日) 15:17:10.76ID:fONWhazS
スマン誤記があったorz
畳み込みの式は正しくはこうっす
 h(τ) = Σ[k=0..3]f(k)g(τ-k) (τ=0..7)

738デフォルトの名無しさん2022/05/08(日) 15:59:36.72ID:E3hRzs1K
スペクトラムアナライザーでも作るのか

739デフォルトの名無しさん2022/05/09(月) 00:09:35.20ID:yzB2nwTj
>>732
intのサイズなど、環境に依存する値を返すのはNG

C++のコードによって1個の整数を定義して
その整数の大きさを競う

740デフォルトの名無しさん2022/05/09(月) 03:52:17.59ID:E3g8JMTZ
「~(1<<31)」 (8文字)が短かくなりそうだがint=4byte+オーバーフローの未定義動作を含むからNGという寸法か

しかし「123456789」もint=4byteが前提になってるしどうやって遊ぶんだ?
「std::numeric_limits<int>::max()」でとりあえずint最大値が帰るが

741デフォルトの名無しさん2022/05/09(月) 04:10:24.01ID:lLEJHk2f
>>740
max()は環境に依存する値だからアウトだろう
算出するならunsignedの0の~を1つ右シフトしてsignedにして返すのはどうだろう?

742デフォルトの名無しさん2022/05/09(月) 07:35:52.38ID:yzB2nwTj
-------- 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 などの外部関数や変数の使用禁止
実行時間やメモリ使用量は問わない
メモリ解放不要

743デフォルトの名無しさん2022/05/09(月) 07:42:44.70ID:yzB2nwTj
文字数が少ないものだとこんな感じ

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;}

744デフォルトの名無しさん2022/05/09(月) 07:45:44.83ID:VfSI4PVa
intを返せばいいのかと思ったけどfloatとか無限ビットとか言及しているのが気になるな。
解釈違うのかな?

745デフォルトの名無しさん2022/05/09(月) 08:53:10.27ID:PsDnm+L1
必要に応じて環境のint型を int4294967296_t とか自由に変えていいわけか

746デフォルトの名無しさん2022/05/09(月) 11:51:27.72ID:90x04ZHv
正解は ~0U>>1 です

747デフォルトの名無しさん2022/05/09(月) 12:29:49.47ID:b/WmNbyW
>>746
> たとえば、intのサイズに依存した値になるコードはNG

748デフォルトの名無しさん2022/05/09(月) 12:36:28.70ID:vv2CegjB
>>747
intのサイズに依存してないじゃん
intが16bitでも32bitでも64bitでも>>746は正解を出す

749デフォルトの名無しさん2022/05/09(月) 12:37:51.56ID:b/WmNbyW
16bit, 32bit, 64bitで違う値を返すからNG

750デフォルトの名無しさん2022/05/09(月) 13:09:06.67ID:uszWTY9x
>>749
それぞれに応じてちゃんと異なる値を返すから>>746が正解っぽい

751デフォルトの名無しさん2022/05/09(月) 13:38:49.81ID:b/WmNbyW
異なる値を返すからNG
何度書いてもNGなものはNG

752デフォルトの名無しさん2022/05/09(月) 13:57:46.67ID:DLFHVgdp
~0U>>1  で int のサイズが同じ環境なのに違う値を返すケースある?

753デフォルトの名無しさん2022/05/09(月) 14:07:18.41ID:PsDnm+L1
>>750
それぞれに応じて違う値を返すこと自体がNGでしょ

>>751
一応ルール確認
sizeof(int); も環境によって変わるからNG
1<<999; はintが1024bit以上なら環境に依存せず固定値になるからOKてことでいいよね?

754デフォルトの名無しさん2022/05/09(月) 14:16:39.02ID:RDjTqhEj
よくわからないパズルは他所でやれ

755デフォルトの名無しさん2022/05/09(月) 14:20:50.13ID:vBDmnMzm
環境によってintの最大値が違うのに環境依存はまかりならんとかw
なら規格で保証されてる最大値(32767だっけ?)を返すしかなくね?

756デフォルトの名無しさん2022/05/09(月) 14:22:28.17ID:SOqsBrLy
>>753
それはだめです
1<<999は例えばintが32bit環境では0となります
大きな数を返すことができていません

757デフォルトの名無しさん2022/05/09(月) 14:27:15.36ID:DLFHVgdp
>ただし、"int" "float" "double" で表現できる値は十分大きいものとする
>事実上無限ビットあると考えて良い
これと

>たとえば、intのサイズに依存した値になるコードはNG
ここの兼ね合いがどうなってるのか文意が読み取れん

日本語難しい

758デフォルトの名無しさん2022/05/09(月) 14:29:47.27ID:4LSguCbO
intの最大値ならINT_MAX

759デフォルトの名無しさん2022/05/09(月) 14:31:48.86ID:HAgcLczC
>>758
それは7文字もあるから敗北
~0U>>1と6文字で行ける

760デフォルトの名無しさん2022/05/09(月) 17:07:31.36ID:A/IF7G4V
>>753
そういうことです

>>757
「十分大きい場合」に同じ値が返れば良いです
「十分大きい場合」でないならば動作不定でも無限ループでも良いです

761デフォルトの名無しさん2022/05/09(月) 17:17:54.32ID:xCpkKQPu
>>760
現実にありえない環境で同じ値が返ったとしても
現実にある環境で異なる値が返るからダメですよ

762デフォルトの名無しさん2022/05/09(月) 17:54:22.09ID:L9YeT6Da
お題スレでやってろ

763デフォルトの名無しさん2022/05/09(月) 17:56:24.99ID:DvQbmhaz
すぐにオーバーフローしたら大きな数が作れない ==> intは十分大きい

同じ値が返らないと数の定義にならない ==> 同じ値が返る

この2個の条件は必須

多倍長数が扱える言語であれば十分大きいは満たしているわけだけど

764デフォルトの名無しさん2022/05/09(月) 20:08:33.86ID:wCt2CEsw
>>735
証明してから使おうね‥‥

765デフォルトの名無しさん2022/05/10(火) 06:49:00.20ID:ME910CgO
>>735-737
FFTでやってる限り誤差で単精度くらいまで落ちるよ
1の乗根じゃなくて整数環でやるべき

あとNGしたいからコテつけてください

766デフォルトの名無しさん2022/05/10(火) 07:07:25.40ID:/5WHE8tG
>>759
それintじゃなくunsigned intじゃん
(int)(~0u>>1)は13文字だぞ

767デフォルトの名無しさん2022/05/10(火) 07:35:35.52ID:6pIq5VRX
>>765
>>597よろしく

768デフォルトの名無しさん2022/05/10(火) 09:46:20.51ID:MIazK+gu
>>766
それは不要
intを返す関数で使われるとあるから自動的にキャストされる

769デフォルトの名無しさん2022/05/10(火) 12:27:13.81ID:KbKCNa1k
>>766
2^[ビット数-1]-1を作る為だけに6文字も使うのは
巨大数生成としては効率が悪すぎる

770デフォルトの名無しさん2022/05/10(火) 12:40:40.45ID:/5WHE8tG
>>768
758にアンカーがないのでそこからしか読んでなかったが
「intを返す関数」と書いてあるのはどこか遡ってみた
で、742か
9E999とか書いてあるの見て思った

 ア ホ か !

付き合ってらんね

771デフォルトの名無しさん2022/05/11(水) 00:56:06.02ID:UPU3lDYb
逆参照て何?
どーかんがえても意味不明なんだが?

772デフォルトの名無しさん2022/05/11(水) 01:21:28.84ID:UPU3lDYb
>>597
数値としては
ビット0からビット17179869183の17179869184ビットあって
MSBのビット17179869183だけ1、それ以外全部0 という数
ちなみに log2(2^17179869183) = 17179869183 という数でもある

773デフォルトの名無しさん2022/05/11(水) 01:26:24.46ID:UPU3lDYb
ちなみに10進数で一応計算してみた
約だけど
4.63718218*10^5171655945

774デフォルトの名無しさん2022/05/11(水) 01:47:19.15ID:UPU3lDYb
100桁精度で計算してみた

2^17179869183 =
4.63718218509504584387714531277598505035321551306497981802919920776481\
1280740258379690028942685133666E+5171655945

775デフォルトの名無しさん2022/05/11(水) 01:55:22.86ID:UPU3lDYb
1000桁
4.63718218509504584387714531277598505035321551306497981802919920776481\
1280740258379690028942685133665887678584875885591832718641905762127656\
8648464720428549339230429654230791681707765917647233112807227604202266\
5319507091896875357160842962215472898266643236555234127464648965219429\
4512975764838082263634232746025000505451315362217832502300416050059971\
6055861808134228895379488099475249306954395392974540860455538277768910\
6501779698066463774056727472854585596601051721933481196771957007013333\
1820937700316660548714353734677001021769055523397265041627700949880613\
6512390001031773699898144998699518865275093160899781961932357159230653\
7623370836815040562264217362228933327066544205490551615983201178741086\
9629443458030111199396338422961782744988511892557698949168820144192823\
3037701007229077794006504943886197679972934343613269571575719811291847\
2263408312031495611576479729358418227154841607037559274517841362656405\
8439611218916024169112008441360472444290176302521705087210814345468682\
750024133044013191605E+5171655945

これ以上は迷惑行為だからやめとく

776デフォルトの名無しさん2022/05/11(水) 02:49:25.02ID:IGkwLYWQ
僕まではセーフ

777デフォルトの名無しさん2022/05/11(水) 07:00:39.20ID:UPU3lDYb
一番大きい10進正数 ・・・・・・999 を NMAXとおくとき
NMAX * NMAX == 1
NMAX == -1
が言える

778デフォルトの名無しさん2022/05/11(水) 07:56:05.93ID:UPU3lDYb
ダチョウが死んだ
鳥インフルで殺処分らしい

779デフォルトの名無しさん2022/05/11(水) 21:23:58.71ID:Uorg83Ya
インフルエンザの季節じゃないと思うケド…

780デフォルトの名無しさん2022/05/11(水) 22:06:18.66ID:0NCcvhO8
◆◆ダチョウについて語る!!◆◆ [無断転載禁止]©2ch.net
http://2chb.net/r/wild/1491662825/

781デフォルトの名無しさん2022/05/12(木) 12:52:25.00ID:ILoaqAhs
せっかく計算してやったのになんの感謝もないな

782デフォルトの名無しさん2022/05/12(木) 13:15:32.97ID:I3DTYm7n
>>712
に挑戦してみて

783デフォルトの名無しさん2022/05/12(木) 19:53:55.36ID:NvxU75Me
>>781
>>695に全桁

784デフォルトの名無しさん2022/05/12(木) 19:57:03.47ID:ILoaqAhs
どういう意図で質問してきてんだテメエ
ここは相談スレであってクイズスレじゃねぇんだよ馬鹿たれ
しかも、クイズのごとき問題出してもテメエで正解すら用意してない。
出て行けゴミ野郎

785デフォルトの名無しさん2022/05/12(木) 20:00:06.71ID:X+DkXX5S
はいはい、わかったわかった

786デフォルトの名無しさん2022/05/12(木) 20:04:07.89ID:NvxU75Me
>>782
宇宙中のリソースを使っても無理
もちろん近似であれば可能

787デフォルトの名無しさん2022/05/12(木) 20:41:05.66ID:I3DTYm7n
2^^6は
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
であると書いているサイトがある。

788デフォルトの名無しさん2022/05/12(木) 21:01:03.42ID:NvxU75Me
有効数字1億桁とか下位1億桁なら簡単
全桁は不可能

789デフォルトの名無しさん2022/05/12(木) 21:21:17.12ID:I3DTYm7n
>>788
100桁ずつで良いからぜひぜひ

790デフォルトの名無しさん2022/05/13(金) 00:43:07.89ID:66pxKN84
なぜかというと筆算を考えたらワカル
真ん中に行くにつれて桁の値を求めるのが一番積和の項数が大きいくて大変でありかつ
LHSとRHSの数のあらゆる桁が関わるから誤差に対してもチョー敏感、

791デフォルトの名無しさん2022/05/13(金) 08:40:43.88ID:DjujgnVD
>>789
アップしてあるコードをちょっと変えれば出来るんだから
まずは自分でやってみなさい

792デフォルトの名無しさん2022/05/14(土) 13:54:53.41ID:rNqC99VF
>>765
見えない敵の可視化

>>695
mul_f2i()の中で
k1 = 1;
k2 = t360 - 1;
for (; 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式に積和の都度上限と下限を見積もるしか無いんじゃないの

793デフォルトの名無しさん2022/05/14(土) 20:43:21.69ID:YcL0sj9T
Animalクラスを継承したCatクラスとDogクラスがあります

class Cat : public Animal
{
・・・
};

class Dog : public Animal
{
・・・
};

プログラムの中に無数にある以下のような箇所を

Animal *object = new Cat();

以下のようにDogクラスに書き換えたいな、と思ったとき

Animal *object = new Dog();

テキストエディタの一括置換機能を使うよりもっとスマートな方法ってありますか?

794デフォルトの名無しさん2022/05/14(土) 20:57:04.02ID:HSfvjOUE
>>793
Cat.cpp とDog.cpp をバックアップする
Dog.cpp を削除する
IDEのリファクタ機能で Cat クラスを Dog クラスにリネームする
バックアップしていた Cat.cpp とDog.cpp を上書きで戻す

これで無数にある Cat を Dog に置き換えられる
文字列置換と異なり Catalog が Dogalog になってしまうこともない

795デフォルトの名無しさん2022/05/14(土) 23:08:55.47ID:qVX+uY2w
>>792
誤差はループ内のprintfで出力してるでしょ
誤差を減らす工夫が入っている事は気付いた?

796デフォルトの名無しさん2022/05/15(日) 00:01:26.20ID:qDTtv8xD
>>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()してダイナミックレンジを抑えようとしている努力は認められる
しかしダイナミックレンジを抑えることが絶対的に誤差対策になるかというと以下略、

的な、

797デフォルトの名無しさん2022/05/15(日) 00:08:49.83ID:qDTtv8xD
多分仮数部LSBを超える誤差が整数部のLSBにまで達することは無い、という仮定のもとに
上のerr_maxの更新をやってるんだろうけど運悪く(RADIXが10だとして
9999.9999999999999
みたいなケースで仮数部LSB程度の誤差が生じたら最悪
 10000.0000000000000

  9999.9999999999999
かどっちかわからなくなって整数部LSBより上が誤差に侵食され(ry

798デフォルトの名無しさん2022/05/15(日) 01:29:26.60ID:Lu4IqK5o
>>794
ファイルを分ける
その発想はありませんでした
さっそく試させていただきます!
ありがとうございました

799デフォルトの名無しさん2022/05/15(日) 05:48:25.74ID:f/5Hvrjj
いつまでもFFTの話してるバカども、数論変換知らんの

800デフォルトの名無しさん2022/05/15(日) 07:10:32.52ID:zbEPSoXa
>>797
四捨五入によって丸めてるんだから
運悪くなんてことはない

配列の特定の箇所だけ極端に誤差が大きくなることもない

だからerr_maxで誤差評価可能

801デフォルトの名無しさん2022/05/15(日) 07:13:35.68ID:zbEPSoXa
>>799
コードは?
速度は?

802デフォルトの名無しさん2022/05/15(日) 09:10:05.29ID:d9+IDznH
一時オブジェクト指向全盛でGoF本なんかが崇められてたとき
ここで質問してるやつにデザインパターン見直せとか糞レス返してる奴いたが
最近はオブジェクト指向じゃ生産効率上がらないことわかってGoF本のステータスも低下してるのか?

803デフォルトの名無しさん2022/05/15(日) 09:19:34.13ID:duXfvT8B
今も昔も関係ない
GoF本をステータス視するのが間違ってる
デザパタを乱用するのも間違ってる
必要な人が必要なだけ黙って使うのがデザパタ
必要も無いのに手を出すことは間違ってる
今も昔もずーっと同じように間違ってる

804デフォルトの名無しさん2022/05/15(日) 09:41:49.69ID:d9+IDznH
オブジェクト指向じゃ生産効率向上しないことが明らかになって
そらGoF本の価値そのものが低下するわなww
new deleteなんて多用されたら困る分野なんていくらでもあるしな

805デフォルトの名無しさん2022/05/15(日) 10:04:41.30ID:zbEPSoXa
new deleteが全く使えない環境もある

806デフォルトの名無しさん2022/05/15(日) 11:58:56.10ID:c/66LOo2
>>804
こういうこという奴は大規模開発に参加したことないニワカだろうな

807デフォルトの名無しさん2022/05/15(日) 12:12:00.10ID:+H3bKj0a
自分を大きく見せようとするやつの
型どおりの言いぐさだな

808デフォルトの名無しさん2022/05/15(日) 12:29:44.49ID:/JPgC0w0
オブジェクト指向がオワコンだったとしても代わりになるものって何かあるんですか?

809デフォルトの名無しさん2022/05/15(日) 12:39:29.05ID:jVQ55S+h
なんか上のレイヤしか触らんwebのひとがオブジェクト指向とデザインパターンをディスること多いわ
そらお前らが利用してるフレームワークを作るのに使っとるんやと

810デフォルトの名無しさん2022/05/15(日) 12:51:15.81ID:wSyZqypG
じゃあもうmain.cppにmain関数百万行書いて終わりにしていいんですか!?

811デフォルトの名無しさん2022/05/15(日) 12:56:30.62ID:0scjaaG3
オブジェクト指向がオワコンかどうかは知らないが
少なくとも「C++でオブジェクト指向開発」を謳っている案件は漏れなくクソだ

812デフォルトの名無しさん2022/05/15(日) 12:59:14.29ID:c/66LOo2
>>811
Chromiumってクソだったんだ
そんなクソがシェア圧倒的なこの世の中はクソまみれやね・・・

813デフォルトの名無しさん2022/05/15(日) 13:00:11.08ID:+mKsOYSe
最近はclassを使うプログラミングとオブジェクト指向プログラミングの両者のうちどちらが広くどちらが狭いとみなす?

814デフォルトの名無しさん2022/05/15(日) 13:00:45.47ID:MKS6oR3e
はよう糞まみれになろうぜ。

815デフォルトの名無しさん2022/05/15(日) 13:02:04.44ID:Q6Qf7/b7
あまりオブジェクト指向に固執すると
令和のstaticおじさんみたいなもんだぞ

816デフォルトの名無しさん2022/05/15(日) 13:03:51.85ID:c/66LOo2
>>815
staticおじさんはマウントされるだけの上位存在がいるから馬鹿にされた訳だけど、
>>808等も言ってるようにオブジェクト指向がクソだとして代替案があるのか?っていうと無いからはそうはならない

817デフォルトの名無しさん2022/05/15(日) 13:21:29.47ID:ymmVxVRO
>>811
ならwindowsを使うのやめたらどうだ?
ついでにスマホもね
オブジェクト指向は何かを知らずにとりあえず否定しておけば自分が上だと考えてる無能

818デフォルトの名無しさん2022/05/15(日) 13:27:39.30ID:0scjaaG3
>>817
プロダクトがうんこだと言っているのではない
開発案件がうんこだと言っているのです
まあここ数年は関わってないから知らんけど

819デフォルトの名無しさん2022/05/15(日) 13:28:20.62ID:+H3bKj0a
OS全てを使うのやめることになるなw

820デフォルトの名無しさん2022/05/15(日) 13:58:17.52ID:ymmVxVRO
というかいまだにオブジェクト指向という低レベルの次元で争ってる時点で無能確定
0.99999....!=1に拘ると同じくらい頭悪い

821デフォルトの名無しさん2022/05/15(日) 14:12:46.74ID:+H3bKj0a
低層レイヤって意味な

822デフォルトの名無しさん2022/05/15(日) 14:41:06.77ID:m7KinyBQ
オブジェクト指向がディスられるのは犬猫車で説明しようとした馬鹿どもに責任がある

823デフォルトの名無しさん2022/05/15(日) 14:41:57.17ID:cpUofyRM
いまだにその説明をする人や書籍あるよね

824デフォルトの名無しさん2022/05/15(日) 14:43:40.09ID:+H3bKj0a
多重継承をポマトで説明とかなw

825デフォルトの名無しさん2022/05/15(日) 14:45:32.53ID:m7KinyBQ
議論の場でそもそも勘違いされたくない場合、OOPではなくクラス志向やC++/Java/C#など具体的な呼称に言い換えるだろ

826デフォルトの名無しさん2022/05/15(日) 14:59:54.12ID:jVQ55S+h
猫オブジェクトには食べるメソッドじゃなくて餌やるメソッドを定義してほしい

827デフォルトの名無しさん2022/05/15(日) 15:11:14.01ID:UBy5+e79
価値観って変わっていくからね
以前はマルチスレッドがもてはやされていたけど
最近はスレッドでは1万並列を扱うのが
困難、真のエンタープライズ分野ではI/O待ちでselect切り替えしたほうがパフォーマンスが出るという流れになってるとか

828デフォルトの名無しさん2022/05/15(日) 15:12:44.20ID:9F0U78jm
真のエンタープライズwww

829デフォルトの名無しさん2022/05/15(日) 15:17:09.87ID:jVQ55S+h
それデータの並べ方程度の話じゃないの?
列志向のDBの方が速いみたいな

830デフォルトの名無しさん2022/05/15(日) 15:21:41.77ID:UBy5+e79
スレッドってスタック持ってるじゃん
OSや設定にもよるけど1MBとか これがバカにならないんだと思う

ちなみにJavaでは仮想スレッドというOSのスレッドと1対1対応させない並列化の仕組みが導入される
これで100万並列を実現できるんだと

831デフォルトの名無しさん2022/05/15(日) 15:45:52.28ID:AAncJnA8
例えばRustのタスク(=仮想的ないわゆるグリーンスレッド)はスタックレスなコルーチンなので個別の専用スタックを必要としなかったり

832デフォルトの名無しさん2022/05/15(日) 15:58:28.15ID:m7KinyBQ
そもそもマルチスレッドと並列処理は無関係でしょ

833デフォルトの名無しさん2022/05/15(日) 16:04:53.51ID:AAncJnA8
>>832
むしろマルチOSスレッドこそ並列処理
逆にRustのタスク等はシングルOSスレッド上でも複数のタスクが同時に動くのでその場合は並行処理

834デフォルトの名無しさん2022/05/15(日) 16:07:17.76ID:VMVrIVgn
一般的な並列処理の定義だと同時に実行される複数のスレッドが必要だと思うけど。

835デフォルトの名無しさん2022/05/15(日) 16:40:35.18ID:UBy5+e79
>>834
そんなことはないでしょ
1C1T CPUの時代でもタイムスライスでマルチスレッドって呼んでたんだから

836デフォルトの名無しさん2022/05/15(日) 16:51:02.84ID:fDoXvrNi
並列、並行、スレッド、タスクをごっちゃにしてる奴がいるな

837デフォルトの名無しさん2022/05/15(日) 17:03:15.24ID:2P7WoVEL
それはマルチタスクなんじゃ

838デフォルトの名無しさん2022/05/15(日) 17:26:51.22ID:d9+IDznH
>>812
てめえのほざく大規模開発がChromium かいww

839デフォルトの名無しさん2022/05/15(日) 17:33:52.78ID:dikgwIGH
>>832
別な話だけど無関係でもない
ユニプロセッサな環境でのマルチは待っている間に他のことをするのが目的
マルチプロセッサな環境でのマルチは上記に加えCPU性能を余さず使う目的もある

840デフォルトの名無しさん2022/05/15(日) 17:35:04.93ID:d9+IDznH
>>827
>I/O待ちでselect切り替えしたほうがパフォーマンスが出る

こんまもんマルチスレッド以前にマルチタスクOSで昔からやってることだろ

841デフォルトの名無しさん2022/05/15(日) 17:39:18.19ID:d9+IDznH
>>832
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ


どういうおつむしてんだwww

842デフォルトの名無しさん2022/05/15(日) 17:55:59.75ID:d9+IDznH
>>812

テメエのほざく大規模開発ってのがChromiumかよ
Newvieがわらわせんなよ

843デフォルトの名無しさん2022/05/15(日) 18:08:14.42ID:UBy5+e79
>>840
そうそう昔からやってるんだよ
俺がいいたいのはそこ

CPUコア数がどんどん増えていくしマルチスレッドプログラミングが正義!
ってもてはやされていたけどパフォーマンスの問題があってスレッド使わない方式に回帰してるの

オブジェクト指向も同様にオブジェクト指向プログラミング登場以前の手法に回帰することはありえる
ということが言いたかった
スレッドの話を持ち出して混乱させてしまってごめん

844デフォルトの名無しさん2022/05/15(日) 18:10:51.75ID:d9+IDznH
>>819
OSを利用するために用意されたライブラリ群がオブジェクト指向的な、
メッセージをHand toする形のライブラリコールを利用してるからといって、
OSのカーネルそのものがオブジェクト指向で設計されてるとでも思ってんのか。
そもそもUnixにしろRTOSにしろオブジェクト指向とは縁もゆかりも無い時代からのOSなんだがな。

845デフォルトの名無しさん2022/05/15(日) 18:17:13.65ID:TK6qKU9x
しかしX11はオブジェクト指向。

846デフォルトの名無しさん2022/05/15(日) 18:38:13.42ID:TK6qKU9x
Windowsはシステム全体がオブジェクト指向。
どのような言語を使おうがオブジェクト指向。

847デフォルトの名無しさん2022/05/15(日) 18:44:58.55ID:d9+IDznH
xlibでプログラム書いたことあんのか、
Cコードの固まりがオブジェクト指向てどこの誰が教えてくれたんだ?
xlibのあまりのコードの多さ見て
C++に目を付けたあげく、勝手に文法変えてWinMainなんて用意したのがVC++だろ
そもそも、
Windowsとは違い、X はOSではないことぐらい知っとけよw
おれは>>819の"OS"にレスしてんの

848デフォルトの名無しさん2022/05/15(日) 18:53:16.28ID:6iIg86JO
>>843
>パフォーマンスの問題があってスレッド使わない方式に回帰してるの
それはないのでは?物理コア数の増加にともなって、やっぱりスレッドを使う方向に舵を切っているかと

849デフォルトの名無しさん2022/05/15(日) 18:56:02.19ID:d9+IDznH
あれ?
WinMain用意したときてC++じゃなくてCじゃなかったかな?

850デフォルトの名無しさん2022/05/15(日) 19:00:43.54ID:TK6qKU9x
>>847
関数呼び出しの第一引数がオブジェクト、関数がメッセージと考える。
第一引数のオブジェクトにメッセージを送るのがXlibの関数呼び出し。

851デフォルトの名無しさん2022/05/15(日) 19:10:33.61ID:d9+IDznH
>>848
まだまだスレッド数が少ないCPUではスレッド使えるのに使わないのは悪だな
GPUだとスレッド立ち上げがパフォーマンス低下(処理速度でなくとも消費電力)に繋がる場面はすぐ訪れる。
1万データのMax検索するのに1万スレッド起動しても何の意味も無いから
回帰もなにも、パフォーマンス改善するから並列化を利用するのであって、
オブジェクト指向みたいな生産効率向上(という幻相)のためにパフォーマンスを犠牲にする、
エンドユーザーからみれば安かろう悪かろうでしかないコードスタイルの話とはわけが違う

852デフォルトの名無しさん2022/05/15(日) 19:12:06.95ID:p4xLOVEd
メンバ関数なんかも引数のオブジェクト省略されてるだけだしねあれ

853デフォルトの名無しさん2022/05/15(日) 19:28:05.58ID:d9+IDznH
>>650
画像処理プログラムやるとすぐわかるのが関数引数の数がすぐに肥大化すること。
これじゃ、関数コールの際、パフォーマンスが低下すること甚だしいんで、
structという一つのデータグラムにして、ポインタ渡すことと、その順番を
関数コールの一つのマナーにしてるだけだろ。
classはそこから生まれたとしても、
X11をオブジェクト指向というのは拡大解釈だ。

854デフォルトの名無しさん2022/05/15(日) 19:33:03.96ID:p4xLOVEd
xは知らんけどwindows apiのウィンドウ周りはc言語でオブジェクト指向だよ
ハンドル引数にして色んなタイプのウィンドウまとめて扱えるようにしてる
setwindowtext使えばタイトルバー持つウィンドウはタイトルが変わる
テキストボックスならテキストがかわるって具合に

855デフォルトの名無しさん2022/05/15(日) 19:39:10.56ID:p4xLOVEd
上にも書いたけどそのstructのポインタをコード上は見えないけど渡してるのがメンバ関数ね

856デフォルトの名無しさん2022/05/15(日) 19:42:29.90ID:TK6qKU9x
>>855
スレ住人は全員わかってることなので、わからない人はC++を使わない人なのでは?
すると、何のためにスレへ?という疑問がわく。

857デフォルトの名無しさん2022/05/15(日) 20:15:20.39ID:c/66LOo2
>>847
Cでオブジェクト指向なんてごまんとあるがろうが
同じグーグル製プロジェクトで言うとlibwebpなんて典型だな
>>850>>854が言ってる通り実質thiscallを多用するCなんて本当にごまんとある
関数ポインタ渡す際にvoid*のタグもセットで渡すとかもな

858デフォルトの名無しさん2022/05/15(日) 20:22:33.85ID:ymmVxVRO
よく見たらこのスレの住人もオブジェクト指向マンと同じレベルで気持ち悪い奴だらけだった

859デフォルトの名無しさん2022/05/15(日) 20:22:35.74ID:c/66LOo2
>>848
シングルスレッド非同期に回帰しつつあるのはJavaScriptがブラウザやNode.jsでそれの有用性を証明しまくってるからだな
最近だとC#Unityでゲームにおいてもシングルスレッド非同期は多用され始めてる
ロック関連によるバグやスレッド作成コストを回避出来るのが主な利点

860デフォルトの名無しさん2022/05/15(日) 20:46:16.10ID:9hg43hf0
その昔IBMがM:NモデルのPOSIXスレッドAPI(NGPT)を
Linuxカーネルに入れようとしてた記憶してるけど
どうなったんだっけ?

861デフォルトの名無しさん2022/05/15(日) 20:57:15.34ID:Kh2G/sgN
なくなりました

862デフォルトの名無しさん2022/05/15(日) 21:04:11.98ID:9hg43hf0
1:1モデルのRedHatのNPTLに性能で負けたんだっけな?

863デフォルトの名無しさん2022/05/15(日) 21:28:16.73ID:m7KinyBQ

計算量見積れない処理は全部バックグラウンドスレッドに投げるだろ
Javascriptも一緒

864デフォルトの名無しさん2022/05/15(日) 22:03:31.83ID:tH2IP/Jf
>>857
そもそもunixのファイル関係だってread/writeとかの関数ポインタを含む構造体で管理してるから画面出力を簡単にディスクに出力できる
まんま仮想関数テーブルみたいなもんや
ID:d9+IDznH はだいぶレベル低いか単なるレス古事記だろうな

865デフォルトの名無しさん2022/05/16(月) 08:11:50.24ID:IfoxgD2F
「オブジェクト指向」とかいうバズワードで議論するなら、せめて定義ぐらいは提示しろよ。
「定義はwikipediaのオブジェクト指向プログラミング」あたりで議論したら?

866デフォルトの名無しさん2022/05/16(月) 08:56:37.65ID:l25MG5nC
>>863
jsはasync awaitもコルーチン利用したシングルスレッドだよ

867デフォルトの名無しさん2022/05/16(月) 09:00:24.74ID:mycbCv2g
OSからみるとシングルスレッドだけど、開発言語の補助でマルチスレッド風に記述できるようになっているのか
OSからみてもマルチスレッドなのか

868デフォルトの名無しさん2022/05/16(月) 09:40:06.21ID:I2zrNWyd
非同期機能が内部的にマルチスレッド使ってる可能性はあるよ

869デフォルトの名無しさん2022/05/16(月) 09:55:17.75ID:l25MG5nC
そもそも非ネイティブ言語の場合は実行環境によるとしか言いようがないが、async awaitのためにマルチスレッドが走ることはない
GCとか含めたら別スレッドが関与することはあるだろうけど
上でも言われてる通りスレッド立ち上げコスト削減も目的の一つだから態々その目的をふいにするような実装はしないだろう

870デフォルトの名無しさん2022/05/16(月) 10:27:55.73ID:I2zrNWyd
そらいちいちスレッド起動したらコストかかるけど、イベント処理なんて下位のライブラリで複数スレッド使っててもおかしくないでしょ
ま、上から気にすることじゃない

871デフォルトの名無しさん2022/05/16(月) 10:52:25.93ID:wZmcx9na
スレッド作るコストは高いけど一旦作ったら待機させときゃいいだけだし

872デフォルトの名無しさん2022/05/16(月) 10:59:43.36ID:l25MG5nC
>>870
幾多あるライブラリの話までし始めたらそらなんでもあるよ

>>871
スレッド立ち上げコスト削減は目的のうちの一つであってそれだけじゃない
むしろメインはlockを考慮しなくて済むって方じゃないかな

873デフォルトの名無しさん2022/05/16(月) 11:10:07.16ID:I2zrNWyd
>>872
だから、OSから見た話をしてるんやん
それに全然関係ない話でもない
ほんとお前馬鹿だよな

874デフォルトの名無しさん2022/05/16(月) 11:38:13.72ID:S4yLiTSd
>>873
OS関係ないし
お前が馬鹿

875デフォルトの名無しさん2022/05/16(月) 11:55:16.75ID:l25MG5nC
>>873
コルーチンにOS関係ある?
どういう仕組みでasync awaitしてるか理解してる?

876デフォルトの名無しさん2022/05/16(月) 12:21:21.64ID:ptnjik8+
C++の話しようぜ

877デフォルトの名無しさん2022/05/16(月) 12:24:34.24ID:I2zrNWyd
>>874
867の言ってることがわからんあの馬鹿を責めてくれや

878デフォルトの名無しさん2022/05/16(月) 12:30:07.34ID:f/Xu02FO
「俺のわからないことを書いている奴は馬鹿」という思考回路やばい。

879デフォルトの名無しさん2022/05/16(月) 12:35:37.80ID:l25MG5nC
>>877
そもそも言語の話にOSとか言い出すのが意味不明だし、強いて考えられるとしたら
int main() { for (int i = 0; i < 100; ++i) sleep(1); return 0; }
これもOSレベルで見たら単一スレッドで頭からケツまで動く保証はないっていうレベルの話がしたいのか?
こういう次元の話をしたいなら馬鹿としか思えないけど

880デフォルトの名無しさん2022/05/16(月) 12:48:57.95ID:IoIRdAU7
>>866
JavaScriptは基本的にはシングルスレッドなので並行(concurrent)に複数同時に動くが
workerを用いると別スレッドとなり並列(parallel)に複数同時に動く
ただしworker抜き前提で話すことも多いから前者のシングルスレッド前提でもいいと思う

>>870
言語のライブラリのレベルでそれが起きることはなく、あくまでも言語の仕様の範囲内に従う
しかし言語のランタイムではそれが起きるケースもあり、そこは別言語で書かれていてもよい
例えばJavaScriptは(別workerでなければ)シングルスレッドが保証されており、
複数の並行処理に対して厳格な競合対処をせずともプログラミングが可能だが、
内部ランタイムではI/O効率化のためにマルチスレッドが使われる実装もある

881デフォルトの名無しさん2022/05/16(月) 12:59:08.31ID:I2zrNWyd
馬鹿のひと、前もいた実装は関係ないおじさん?
他人は許せないが、なぜか自分自身は語ってしまうというあの馬鹿?

882デフォルトの名無しさん2022/05/16(月) 15:52:25.18ID:WoUg3+5o
幼稚園児レベルの罵倒語を使うのは
技術的な議論で劣勢であることを自己申告しているようなものだ
優勢な者はそんなもの使わなくてもどうにでも料理できるからな

883デフォルトの名無しさん2022/05/16(月) 16:42:34.62ID:oTRlBgbW
彡 ⌒ ミ
( ・ω・) アレクサ髪の毛増やして

884デフォルトの名無しさん2022/05/16(月) 18:53:11.20ID:mA14eCl1
>>883
有吉の髪をフサフサにしておきました。

885デフォルトの名無しさん2022/05/16(月) 19:01:54.89ID:mA14eCl1
>>883
波平の髪を二本にしておきました。

886デフォルトの名無しさん2022/05/16(月) 19:17:21.17ID:mA14eCl1
>>883
ドラえもんをアフロにしておきました。

887デフォルトの名無しさん2022/05/16(月) 19:33:17.66ID:haaJPjQj
アレクサ賢い

888デフォルトの名無しさん2022/05/16(月) 19:46:11.19ID:LMCkL6+j
>>885
海平になっちゃうやん...
C++相談室 part160 ->画像>1枚

889デフォルトの名無しさん2022/05/18(水) 09:56:55.15ID:spPNFpZE
X11をオブジェクト指向とか寝言いうやつ居るんだな
あれはオブジェクト指向もどき
つまりオブジェクト指向ではない

アセンラで構造化もどきつくりましたレベルの話

890デフォルトの名無しさん2022/05/18(水) 10:04:46.99ID:s0yud5Is
オブジェクト指向としか言いようがない

891デフォルトの名無しさん2022/05/18(水) 10:15:34.00ID:I2H5iqao
どんな作りになっていようがコード書いた本人が
オブジェクト指向だと言えばオブジェクト指向だし
構造化だと言えば構造化なんだよ
書く者の頭の中の考え方なんだから、
コードそのものの特徴から決めつけはできないし
ドヤるやつは大抵うんざりされてることに気がつかない

892デフォルトの名無しさん2022/05/18(水) 10:37:48.91ID:Q68htpiP
     /: : : : : __: :/: : ::/: : ://: : :/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   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

893デフォルトの名無しさん2022/05/18(水) 11:04:38.59ID:spPNFpZE
>>891
>ドヤるやつは大抵うんざりされてることに気がつかない

自分のことか?www

894デフォルトの名無しさん2022/05/18(水) 11:07:21.81ID:OWcrFw6t
いずれにせよオブジェクト指向を上回る手法が登場しない限りオブジェクト指向に対してマウントは取れない

895デフォルトの名無しさん2022/05/18(水) 11:21:09.24ID:spPNFpZE
予めメモリプールを設定しておくようなOSで
オブジェクト指向ありきでプログラム設計されてると思ってんのはおめでてーな
馬鹿の一つ覚えとも言う

896デフォルトの名無しさん2022/05/18(水) 11:34:46.54ID:s0yud5Is
プログラムがオブジェクト指向に則ってるか否かはOSで決定する、と

897デフォルトの名無しさん2022/05/18(水) 11:41:08.84ID:spPNFpZE
メモリプールを何の目的で用意するのかわかってないと

898はちみつ餃子 ◆8X2XSCHEME 2022/05/18(水) 12:02:56.59ID:bslzKqYb
オブジェクトがメッセージを投げるという関係性でプログラムを構築するのが
オブジェクト指向ってもんだから、関数 (メンバ関数) をメッセージとみなすかもしれないし、
メッセージキューのようなものを作るかもしれない。
プログラミング言語の言語機能をどのようにプログラム構成の方法論に当てはめるかは自由度はある。
その意味では >>891 の考え方は真っ当なものだ。

でも、 C++ では C++ の常識というものもあるし、
ある程度は共通の認識を作っておかないと会話が成り立たんだろう。

基本的にはふんわりした概念でしかないからこの場合にオブジェクト指向
という言葉をどういう意味で使うことにするのかはこの場で擦りあわせろや。

899デフォルトの名無しさん2022/05/18(水) 12:12:57.18ID:KNHGZhRF
>>895
そもそもos全体がオブジェクト指向だなんて誰も言ってないし

900デフォルトの名無しさん2022/05/18(水) 12:22:21.26ID:CvWTVaQG
>>889
オブジェクトを「指向している」だろ。

指向「もどき」て何だよ。
何を「指向もどき」と言っているのか全然わからん。

901デフォルトの名無しさん2022/05/18(水) 16:21:01.44ID:SnLFYw7t
たしかにオブジェクト志向オブジェクト志向言いはじめたころは
「メッセージング」ってのがやたら強調されてたな
たぶんスモールトークの影響だろうけど
最近の「オブジェクト志向」はどっちかってとオブジェクトのかたまりを
どう型つけるか、階層化するかの言語構造のことを言いがちだけど

902デフォルトの名無しさん2022/05/18(水) 16:31:15.14ID:ZUGTejLE
指向だけどな
むしろメッセージングの重要性は高まってきてると思うけど、頭のいいひとにしか扱えない感じだな
馬鹿は階層にこだわるしかない

903デフォルトの名無しさん2022/05/18(水) 20:03:09.30ID:9cdFfz37
オブジェクト指向で利点はデータモデルを表現できることだろ
それが言語上で構造体なのかクラスベースなのかアクターなのかは大きな問題じゃない

904デフォルトの名無しさん2022/05/18(水) 21:04:56.14ID:xACVFtZa
ウィンドウに開けとか閉じれとか大きくなれとか指示してれば、それはもうオブジェクト指向なので、ウィンドウ・システムとオブジェクト指向はだいぶ相性が良い。

905デフォルトの名無しさん2022/05/18(水) 21:06:39.10ID:AIFQ7kC9
>>891
hogehoge("ソポポポぉおおおおおん!");
↑これはオブジェクト指向で書いたプログラムです!!!!
って言ったらそういう解釈もありだなって思うの?

俺はオブジェクト指向アンチ!
絶対にオブジェクト指向なコードなんて書かね!といった直後に
const dialog = document.getElementById("dialog");
dialog.addEventListener("click", e =>{イベント処理});
みたいなコードを書いていたら、そのコードはオブジェクト指向ではないと解釈するの?

なわけないよね

906デフォルトの名無しさん2022/05/18(水) 21:06:55.62ID:xACVFtZa
とうとうアジュール・アカウントを作ってしまった。

907デフォルトの名無しさん2022/05/18(水) 21:07:48.89ID:xACVFtZa
よし。
今日からおれもアジュール民だ。

908デフォルトの名無しさん2022/05/18(水) 21:23:10.53ID:vRsLqKZH
ようこそクラウドの世界へ

909デフォルトの名無しさん2022/05/18(水) 21:48:35.12ID:I2H5iqao
>>905
思うよ
するよ

思い込みの激しい人だな

910デフォルトの名無しさん2022/05/18(水) 22:00:38.20ID:AIFQ7kC9
>>909
嘘付くのやめていただけますか?

まず、hogehoge(略)をどのように捻くれた解釈をしたらオブジェクト指向に見えるのか解説してくれますか?

911蟻人間 ◆T6xkBnTXz7B0 2022/05/18(水) 22:04:01.32ID:1ADDPTHW
struct HogeHoge {
void operator(const char *str) const {
std::cout << str;
}
};

HogeHoge hogehoge;

912デフォルトの名無しさん2022/05/18(水) 22:04:44.03ID:vRsLqKZH
>>909
思い込みの激しいのはお前だろw
>>892で指摘されてるじゃんw

913蟻人間 ◆T6xkBnTXz7B0 2022/05/18(水) 22:05:27.40ID:1ADDPTHW
>>911
間違えた

914デフォルトの名無しさん2022/05/18(水) 22:09:27.02ID:V03o9uZn
プログラムを書いた人がオブジェクト指向設計ですと言っているものまでオブジ
ェクト指向ではないと否定するのは愚策言ったが最後、ではオブジェクト指向で
はない何なのかを述べねばならなくなるからなgoto否定論者にbreakは実質goto
とかあまつさえgotoを使ったプログラムを書いてgoto否定論者に対して正当性を
主張した場合に生じる惨状と同じで社会スキル的な意味で避けるべき理由が十分あ

915デフォルトの名無しさん2022/05/18(水) 22:09:33.95ID:spPNFpZE
>>900
オブジェクト指向もどき が オブジェクト指向でないのは
くじら が さかな で無いのと同じだ

馬鹿は知らないくじら構文
そして、応用系

オブジェクト指向もどき が オブジェクト指向でないのは
ヒトもどきのお前 が ヒトでないのと同じだ

916デフォルトの名無しさん2022/05/18(水) 22:11:26.32ID:PU9JUd8R
C++の話しようぜ

917デフォルトの名無しさん2022/05/18(水) 22:13:31.75ID:ZUGTejLE
c++スレでオブジェクト指向の話をするのは無理がある

918デフォルトの名無しさん2022/05/18(水) 23:15:16.60ID:xACVFtZa
C++のオブジェクト指向全盛期は20年以上前だからね。
その後は黒魔術全盛期がやってきた。

919デフォルトの名無しさん2022/05/18(水) 23:37:02.53ID:PYepqFJi
Andrei Alexandrescuが悪い

920デフォルトの名無しさん2022/05/19(木) 00:10:17.97ID:JEoDteVp
組み込みC++だと普通にオブジェクト指向全盛期だけどな
uart1.write(data);
のような記述が当たり前になってきて有難い

921デフォルトの名無しさん2022/05/19(木) 02:53:53.60ID:m2mVV8oP
組み込みってマクロ大好きだからオブジェクト指向の書き方と相性悪いと思ってたけど最近はそうでもないの?
それともそう描いたときのuart1やwriteもマクロなの?

922デフォルトの名無しさん2022/05/19(木) 03:00:29.40ID:tMeCiyz0
そら組み込みっていってもいろんなレイヤがあるからね

923デフォルトの名無しさん2022/05/19(木) 05:20:52.31ID:UJCwwVid
>>910
fprintf(stdout, "そぼぼん");
みたいになってることもあるからな
obj.func(...);という構文は絶対条件じゃないんだよ
PostMessage(hWnd, WM_APP, 0, 0);なんてのだってオブジェクト指向だし

924デフォルトの名無しさん2022/05/19(木) 07:43:27.80ID:bqW40Z5X
組み込みはまだまだCが主流

925デフォルトの名無しさん2022/05/19(木) 07:46:20.72ID:ijZ+Z+2A
>>915
なら
ヒトもどきのお前 が ヒトでない
が偽だから
オブジェクト指向もどき が オブジェクト指向でない
も偽だな。

926デフォルトの名無しさん2022/05/19(木) 07:47:19.60ID:Kexh9zXI
>>923
そう、Cの時代からオブジェクト指向はあったよな

927デフォルトの名無しさん2022/05/19(木) 07:50:32.12ID:sZfr5xXW
別に
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にやれと命令している

928デフォルトの名無しさん2022/05/19(木) 07:51:01.05ID:sZfr5xXW
言ってて自信なくなってきたがとにかく違う、

929デフォルトの名無しさん2022/05/19(木) 07:55:55.82ID:bqW40Z5X
オブジェクト指向って
単にクラス関数を呼んだからオブジェクト指向
とかいう単純な物じゃない

プログラムやモジュールの設計思想の話

930デフォルトの名無しさん2022/05/19(木) 08:02:53.54ID:tMeCiyz0
>>927
お前がそうやって理解したのは理解するけど、ちょっとどうかなあ

931デフォルトの名無しさん2022/05/19(木) 08:10:11.10ID:Bak+CTg/
>>915
その主張において
・「ヒトもどき」と「ヒト」の違いは何か。「ヒトもどき」が「ヒト」でないとする根拠は何か。
・「ヒトもどき」の「もどき」の意味が「指向もどき」の「もどき」の意味と同じとする根拠は何か。

間違った根拠と間違った推論から導いた結論に意味はないから、上記に答えられないならその主張に議論する価値は無い。
論理をかじって知ったかぶりしたくなるのもわかるけど、もうちょっと勉強した方がいいよ。

932デフォルトの名無しさん2022/05/19(木) 08:12:35.09ID:bqW40Z5X
C++関係ないんだから
他にスレ立ててやれ

933デフォルトの名無しさん2022/05/19(木) 08:26:56.26ID:nDeBFAzg
オブジェクト指向を教えてくれ!★2
http://2chb.net/r/tech/1619503348/

934デフォルトの名無しさん2022/05/19(木) 08:30:35.34ID:sZfr5xXW
>>930
それはそうで世に膾炙しているオブジェクト指向はちょっとどうかしているせい
objにXの値を寄越すようにメッセージを送るのであれば
 x = obj.getX(); // (1)
ではなくて、
 x = obj.giveX(); // (2)
でないとおかしいはず……
(1)に対して合理的な意味づけを行おうとすると>>927みたいな解釈にならざるおえない
やっぱ世の中がおかしい

935デフォルトの名無しさん2022/05/19(木) 09:28:38.04ID:XCQrD9i4
objっていうデータ構造体からxを取得するからgetXって解釈してたわ

936デフォルトの名無しさん2022/05/19(木) 09:37:01.76ID:HFWBeLeA
オブジェクト指向って obj.method( ) という構文だけの話じゃないでしょ
継承・多態性・オーバーライド・オーバーロード・オーラロードなどの機能もオブジェクト指向の重要な要素じゃないの
あと機能とは別にカプセル化などオブジェクト指向で周知された設計手法もある(これはオブジェクト指向でなくてもできるけど)

937デフォルトの名無しさん2022/05/19(木) 09:42:48.48ID:tMeCiyz0
>>934
826書いたの俺だからわかるよ
でも文法なんて些細な話よ

938デフォルトの名無しさん2022/05/19(木) 09:56:27.95ID:qAaVAzHk
hogehoge書いた本人はたぶんそこまで考えていないよ
それこそ思い込みが激しいでは?

939デフォルトの名無しさん2022/05/19(木) 12:33:57.63ID:Nz/+UK9H
>>934
オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。主体はプログラマーとかCPUとかの指示・命令をする主体。

940デフォルトの名無しさん2022/05/19(木) 12:47:07.52ID:JltPZRp+
まだやるの?

941デフォルトの名無しさん2022/05/19(木) 12:58:56.65ID:NIcGv5m1
オブジェクト指向は我々プログラマにとって必要です

>>938
私はオブジェクト指向を知っていることに誇りをもっています

942デフォルトの名無しさん2022/05/19(木) 13:04:29.79ID:B0nB5mTs
>>934
俺はオブジェクト指向がうまいから職場で神扱いされてる


>>919
お前はオブジェクト指向ができるの?

なんとか言ったらどうなんだ

943デフォルトの名無しさん2022/05/19(木) 13:06:45.60ID:YUgVG0pp
>>911
そうやってオブジェクト指向ができないからニートだと思われてるんだよww
これに懲りたらオブジェクト指向を学んでこいwww

944デフォルトの名無しさん2022/05/19(木) 13:18:40.04ID:B0nB5mTs
>>924
てめーなんざにオブジェクト指向がわかるわけねぇだろう
とっとと消えろ

945デフォルトの名無しさん2022/05/19(木) 13:20:01.49ID:z4apOfvE
何言ってんだこいつ
オブジェクト指向を知ってるからって偉そうにしやがって

946デフォルトの名無しさん2022/05/19(木) 13:52:35.01ID:gDUMsWXi
>>927
いや、意味は違わないよ
違うのはその結論(コード)に至るまでの考え方だ
オブジェクト指向は構文ではなく考え方
だからアセンブラでもできるんだ

947デフォルトの名無しさん2022/05/19(木) 16:31:30.66ID:QDwYarvc
>>931
くじら構文が論理?

案の定、どこまで馬鹿なんFラン確定のお前ww

948デフォルトの名無しさん2022/05/19(木) 16:36:02.58ID:QDwYarvc
>>925

おまえもFラン確定だなww
義務教育から遣り直せ。

949デフォルトの名無しさん2022/05/19(木) 17:36:19.36ID:6RgATOKw
アホだからアホでも使えるように構造化するのを大事にしてる

950デフォルトの名無しさん2022/05/19(木) 18:44:20.43ID:XmlfPc2y
802から始まって、いまだ発散してるから
線引含めてめんどくせぇ話だなというのはわかる

951デフォルトの名無しさん2022/05/19(木) 18:46:23.64ID:2O7Wjx2k
VIPでやれと言われるような話題。

952デフォルトの名無しさん2022/05/19(木) 19:01:16.29ID:jm7Yx9uZ
>>949
想定以外の使い方は許さない方が無難かね。Conceptsが普及すればc++でも制約プログラミング流行るかな。

953デフォルトの名無しさん2022/05/20(金) 06:26:48.33ID:QdnN/13A
プログラムの可読性は大事だが
それをアホへの迎合と勘違いしてはいけない

COBOLからの教訓だ

954デフォルトの名無しさん2022/05/20(金) 06:48:44.29ID:jg8JP3/X
可読性とは結局
自分ルールに添ってるか
自分と同レベルの知識や頭脳か
になるからねえ

955デフォルトの名無しさん2022/05/20(金) 08:17:00.86ID:biGldfGz
>>939
>オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。
どういうこっちゃ……
オブジェクトを客体とみなすルールは必ずしもその客体が主体的に動くシチュエーションの禁止にはならない
客体が主体的に動くシチュエーションを禁止したかったら、複文の禁止までルールを推し進めねばならん
例:
進駐軍の兵隊オブジェクトに「Get chocolate」と言ったらそのオブジェクトがチョコレートの調達に走るのが妥当
この場合進駐軍の兵隊オブジェクトが主体的に動く(倉庫等に取りに行く)ことが気体される
進駐軍の兵隊オブジェクトに「Give me chocolate」と言って初めて発令の主体たるCPUがチョコレートを受け取れる

956デフォルトの名無しさん2022/05/20(金) 08:26:59.91ID:biGldfGz
どっちにせよチョコを取りに行ったりくれたりする主体は進駐軍の兵隊オブジェクト
さらに進駐軍の兵隊オブジェクトが倉庫の受付に「Get chocolate」言うかもしれんし
そうすると進駐軍の兵隊オブジェクトがチョコレートを受け取る主体にもなり得る
こういう入り組んだ解釈を一切禁止ということならやっぱ複文禁止しか……
それはそれで新しいプログラミングパラダイムが拓けそうやがどうかなあ……

957デフォルトの名無しさん2022/05/20(金) 08:31:45.87ID:biGldfGz
ていうかそういうのはどうでも良いんですよそれよか>>695
のコードについて質問なのですが

fouri()の中に
 sin1 = table[t0];
 cos1 = table[t1];
というのがあって、cos1 + i * sin1が1の原子2^N乗根だと思うじゃん?
しかし動きを見ると5.333333乗根とか(これはまだわからないでもない
4.571429乗根とかわけわかんない数値が入って来るんですがなんで?!
ボスケテ、

958デフォルトの名無しさん2022/05/20(金) 08:42:58.01ID:1bxUvska
>>957
(1 << p) が一周
(1 << p - i) は一周を(1<<i)で割った値、つまり(1<<i)乗根

959デフォルトの名無しさん2022/05/20(金) 19:33:47.78ID:0DaneQt4
 
 __     __  ___ _____  _____     ___ ___    ___
 |   |    /  /  |  //       | /__  __/ [][] _| |_| |__ _| |_
 |   |.   /  /  /  / /   / ̄ ̄|. l    / /     |    _  | |_  レ'~ ̄|
 |   |  /  /  /  / /   /.  / /    |  |___      ̄|  | / / /   /| |
 |   |  /  /  /  / /    ̄ ̄ /     \__|     |  |  ̄ /_  /  | |_
 |   |. /  /  /  / /   / ̄ ̄ ̄                |_|     |__|   \/
 |   |/  /  /  /. /   /  
 |.     /  /  /  /   / 
 |    /. /   | ./   /  
  ̄ ̄ ̄   ̄ ̄ ̄.  ̄ ̄ 

960デフォルトの名無しさん2022/05/20(金) 20:11:14.93ID:biGldfGz
>>958
1<<i乗根は結局2^i乗根ということで、
(2*M_PI)/atan2(sin1, cos1)が2^iすわなち整数にならないとおかしいんじゃないの
しかし実際は16乗根とか64乗根に交じって5.333333乗根とか4.571429乗根とかが混じってくるのでつ∀`;)

961デフォルトの名無しさん2022/05/20(金) 21:44:19.34ID:jg8JP3/X
そりゃ(1<<i)乗根をn乗してるからねえ
出てくるんじゃないの?
何か問題?

962デフォルトの名無しさん2022/05/20(金) 23:00:09.02ID:biGldfGz
わかりた
(1 << i)/jが割り切れない場合のw^jかorz

963デフォルトの名無しさん2022/05/20(金) 23:24:07.63ID:mAopBTqL
マクロでしか実現できない機能って何がありますか?
派遣先のライブラリがマクロだらけで驚いたので気になりました

964デフォルトの名無しさん2022/05/20(金) 23:38:17.88ID:Nu0nVGPY
メタプログラミングとか?

965デフォルトの名無しさん2022/05/20(金) 23:48:21.44ID:5lKx3hyB
いろいろあると思うけど、ログ関数とか作るときに関数名とか行数とか出力させたかったらマクロ使うかな

966デフォルトの名無しさん2022/05/20(金) 23:53:08.67ID:sn/66v3t
行数とかなんか無茶なコードの結合とか

967デフォルトの名無しさん2022/05/21(土) 00:17:23.34ID:SL+9c0t4
コンパイラによってつける属性変えるときとか
public:をオンオフしたり構文に影響を与えるものとか

MSVCの標準ライブラリ覗くと
#define _CONSTEXPR20 constexpr
//#define _CONSTEXPR20 inline //C++17以前
とか書いてあったりする

式を文字列として展開するのもマクロじゃなきゃできない
#define A(exp) #exp

文字列連結(#define A(a1,a2) a1##a2)もマクロじゃなきゃできないけどデバッグが無理ゲーになるから使わん

968デフォルトの名無しさん2022/05/21(土) 00:19:10.39ID:DcWHGr0j
__FILE__や__LINE__を使うのを隠蔽したいときはマクロにするしか、
あと文字列を結合してシンボルを合成するとか、
#define cat(a, b) a##b
#define cat2(a, b) a/**/b

969デフォルトの名無しさん2022/05/21(土) 00:53:48.99ID:SKvcmC+r
マクロでぐにゃぐにゃしてる中はデバッガで止めづらくなるね
文字列生成(そして文字列の連結) 識別子の連結 はプリプロセッサじゃないとできないし

970デフォルトの名無しさん2022/05/21(土) 01:31:55.43ID:wrIep829
初見殺しにマクロは必須

971ハノン ◆QZaw55cn4c 2022/05/21(土) 06:57:00.43ID:0jWT+RR4
というか、inline 指定を絶対化すればいいだけ
どうして inline 指定してもインラインされない場合がある、とか勝手なことをするのか不明

972デフォルトの名無しさん2022/05/21(土) 07:00:24.57ID:LKZ4AMgL
#define AAAA xxxx
#include "****"
#undef AAAA

#define AAAA yyyy
#include "****"
#undef AAAA

973デフォルトの名無しさん2022/05/21(土) 07:11:17.89ID:DcWHGr0j
>>971
再帰する場合は仕方が無い
ポインタ経由で呼び出す場合も仕方が無い

974デフォルトの名無しさん2022/05/21(土) 08:09:54.00ID:0jWT+RR4
>>973
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に inline を無視してコンパイルしなおすなんて言語道断、コンパイラ作者の独善だね

975デフォルトの名無しさん2022/05/21(土) 08:21:34.76ID:/PQRaHnB
今やregisterなみの存在感

976デフォルトの名無しさん2022/05/21(土) 10:25:33.17ID:qJClzxWq
#includeと#defineで疑似メタプログラミング的なことをすることはある
テンプレート化出来ない場合もあるからな

977デフォルトの名無しさん2022/05/21(土) 10:48:13.19ID:Kirg9sMV
constexprが中途半端で結局constevalが追加されたのに倣えば、inlineの強制バージョンも標準化していいはずだよな
既に独自実装のalways_inlineや__forceinlineはあるんだし

978はちみつ餃子 ◆8X2XSCHEME 2022/05/21(土) 11:13:07.39ID:JD6rd3hb
C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)

979デフォルトの名無しさん2022/05/21(土) 11:49:29.76ID:DcWHGr0j
翻訳系の仕事はソースコードの意味を変えずにオブジェクトコードに翻訳することで(ry
狭義のアルゴリズム(シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし

980デフォルトの名無しさん2022/05/21(土) 12:00:28.50ID:DcWHGr0j
ていうかDFTと逆DFTおよび4n乗根のDFTと逆DFTができましたよ
https://ideone.com/uK9v58

n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、

981ハノン ◆QZaw55cn4c 2022/05/21(土) 14:44:04.21ID:0jWT+RR4
>>978
>C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
だとすると、inline の存在自体が原則に大きく矛盾していることになりますねえ

982デフォルトの名無しさん2022/05/21(土) 14:47:32.33ID:is6KmnjI
あくまでもヒントじゃないのか

983デフォルトの名無しさん2022/05/21(土) 15:01:05.79ID:0jWT+RR4
>>982
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、inline に限っては強制力を伴うべきでしょう、#define マクロを葬り去りたいのなら

984デフォルトの名無しさん2022/05/21(土) 15:01:21.03ID:OwY6A3+8
そう
あくまでヒント

ヒントになった理由は
世の中のプログラマーがアホだから

985デフォルトの名無しさん2022/05/21(土) 15:01:54.43ID:OwY6A3+8
#defineは永遠に不滅です

986デフォルトの名無しさん2022/05/21(土) 15:23:50.89ID:ocVGFLUP
CRTPにするとインターフェース継承してもインライン展開されるのほんとまじ意味わからん

987デフォルトの名無しさん2022/05/21(土) 15:35:03.49ID:0jWT+RR4
>>984
マクロ跋扈とを許す設計者の方がもっとアホですね

988デフォルトの名無しさん2022/05/21(土) 15:39:45.82ID:LSoM7sSc
誰の方がアホとかどうでもよくて
アホだからそういう仕様になった

989デフォルトの名無しさん2022/05/21(土) 16:03:58.87ID:DcWHGr0j
ちと別件に取り掛かったのでソースコードを見ながらではなく想像やが
>>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重ループについてメモリを空けつつつつがなく進められるというしくみ(多分

990はちみつ餃子 ◆8X2XSCHEME 2022/05/21(土) 16:11:12.45ID:JD6rd3hb
>>981
inline は ODR の例外。 また、異なる翻訳単位の同じ定義が統合されることを保証する。
これは C++98 のときからそう。
インライン化が望ましいことの指示であるとは書いてあるけど、
今では変数にも inline を付けることが出来るようになったのはもはや inline は ODR の例外としての意味がメインだと考えるべき。

991デフォルトの名無しさん2022/05/21(土) 16:29:48.48ID:9lV47uLv
>>981
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど

992デフォルトの名無しさん2022/05/21(土) 16:47:52.13ID:x3bK44aY
onlineも導入すべき

993デフォルトの名無しさん2022/05/21(土) 17:00:45.58ID:+x02zxlN
>>952
こんなのあるんか便利そうだな
まあ汎用的なデータ構造だと暫定未定義にするだけでもいいと思うけど、用途が決まってるクラスに関しては制約をつけたものを用意しておくのが無難だろうね

994ハノン ◆QZaw55cn4c 2022/05/21(土) 17:25:58.12ID:0jWT+RR4
>>991
情報ありがとうございます。

>>990
ここで One Definition Rule がリファーされるのに直観的違和感を覚えます‥‥
が、反論はゆっくり考えますのでしばらくお待ちください、様々な視点を提供いただき感謝しております

995はちみつ餃子 ◆8X2XSCHEME 2022/05/21(土) 17:56:26.14ID:JD6rd3hb
>>994
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。

① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!

996デフォルトの名無しさん2022/05/21(土) 18:53:36.34ID:0jWT+RR4
>>995

>>995 でいう定義は宣言に置き換えるべきでは?
ODR はあくまでも定義の話であって、宣言の話ではないかと考えます、私の勘違いでしょうか?

実装的には inline のついた関数定義が外部にリンクされる可能性があれば、すなわち extern な iniline 関数があれば、リンクのためのコード体を、各所に inline に展開されるコード体とは別に(こっそり)用意しておく、見たいな感じで十分に実装可能ですね

997はちみつ餃子 ◆8X2XSCHEME 2022/05/21(土) 19:24:52.72ID:JD6rd3hb
>>996
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。

その上で現在では LTO が普及したのでどうでもよくなったけど。

998デフォルトの名無しさん2022/05/21(土) 20:03:09.89ID:0jWT+RR4
>>997
なるほど、やっと理解しました

LTO: Link Time Optimization ですか‥‥、トラブルの元で胡散臭いと思っている私は古い人なんでしょうね‥‥、.obj がコンパイラ固有になるのも嫌ですし

999デフォルトの名無しさん2022/05/21(土) 20:12:03.42ID:kYXfaM+5
海外の専門用語はわかりにくいのう
日本風にリンオプとか略してくれればいいのに
イニシャリズムみたいな言い方だとなんて言うんだろ

1000デフォルトの名無しさん2022/05/21(土) 20:15:04.92ID:0jWT+RR4
>>999
村上龍の「5分後の世界」では、略語は使うな、ちゃんと元の言葉を使え、と教育されていますね
ジョージ・オーウェルの「1984」では、略語は謀略的な意味で使われる(小説末尾の appendix: New Speak 解説のカテゴリーB)ようですね

これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが


lud20220705064529ca
このスレへの固定リンク: http://5chb.net/r/tech/1649979572/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「C++相談室 part160 ->画像>1枚 」を見た人も見ています:
C++相談室 part156
C++相談室 part155
C++相談室 part157
C++相談室 part158
C++相談室 part152
C++相談室 part154
C++相談室 part148
C++相談室 part124
C++相談室 part150
C++相談室 part162
C++相談室 part147
C++相談室 part144
C++相談室 part137
C++相談室 part142
C++相談室 part146
C++相談室 part134
C++相談室 part143
C++相談室 part137
C++相談室 part138
C++相談室 part135
C++相談室 part130
C++相談室 part133
C++相談室 part141
C++Builder相談室 Part21
0からの、超初心者C++相談室
C++相談室 part131 [無断転載禁止]
Cygwin + MinGW + GCC 相談室 Part 8
Cygwin + MinGW + GCC 相談室 Part 3
C♯相談室 Part20
屯田五目須のお悩み相談室
Mac G5 中古買入相談室
河田さんによる人生相談教室
自営業 悩みごと相談室 16
MFC相談室 mfc23d.dll
自営業 悩みごと相談室 40
C#, C♯, C#相談室 Part79
C#, C♯, C#相談室 Part94
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part93
C#, C♯, C#相談室 Part91
C#, C♯, C#相談室 Part90
自営業 悩みごと相談室 41
自営業 悩みごと相談室 47
自営業 悩みごと相談室 46
C#, C♯, C#相談室 Part95
自営業 悩みごと相談室 51
C#, C♯, C#相談室 Part94
0からの、超初心者C言語相談室
自営業 悩みごと相談室 48
自営業 悩みごと相談室 50
自営業 悩みごと相談室 45
自営業 悩みごと相談室 49
自営業 悩みごと相談室 43_
【男飯】Rickの相談室【言霊】
ライダーマンのお悩み相談室
[特設]サマータイム対応相談室
[特設]サマータイム対応相談室
【イエス』ユダの相談室【口寄せ】
★★★ゲイの生活相談室3★★★
★★★ゲイの生活相談室2★★★
■コンサル田中の経営相談室。■
【太気拳】なんでも相談室 part6【意拳】
マイコンソフト 悩み事相談室 3
アパート経営なんでも相談室【135号室】
【太気拳】なんでも相談室 part3【意拳】
07:10:27 up 27 days, 17:34, 1 user, load average: 7.12, 7.90, 8.72

in 1.980367898941 sec @1.980367898941@0b7 on 010821