前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1645239402/
探検
C++相談室 part160
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2022/04/15(金) 08:39:32.42ID:WMzvufu22022/04/15(金) 08:42:10.92ID:WMzvufu2
全スレ159だったわ
タイトルだけ間違えた
タイトルだけ間違えた
2022/04/15(金) 08:46:23.30ID:wykOop5a
乙です。
2022/04/15(金) 08:50:45.87ID:xDiQzMrD
おつ
2022/04/15(金) 09:04:13.20ID:1joR/OE7
>>2
どんまい、乙
どんまい、乙
2022/04/15(金) 09:12:06.04ID:pOJAVr49
グローバル変数と静的変数は
・書き換えられうる場合は排他制御が必須
・初期化のみの場合でもその初期化の排他制御が必須
・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される
・書き換えられうる場合は排他制御が必須
・初期化のみの場合でもその初期化の排他制御が必須
・ただし静的変数の初期化はC++11以降は自動的に排他制御されることが保証される
2022/04/15(金) 09:23:58.05ID:xDiQzMrD
まとめると、main開始してからリソース用意して適当に渡せよってことよ
原則としてグローバル変数もシングルトンも避けたほうが良い
原則としてグローバル変数もシングルトンも避けたほうが良い
2022/04/15(金) 12:30:29.25ID:hAkRYyug
グローバル変数を避ければシングルトンがmain開始前に呼び出されること無いだろ。
グローバル変数だけ避ければいい。
グローバル変数だけ避ければいい。
2022/04/15(金) 12:37:29.85ID:1+gF2L/G
シングルトンなんてグローバル変数と同じ
避けたほうが良い
避けたほうが良い
2022/04/15(金) 13:17:57.26ID:JW7HV0lo
シングルトンの中に書き換わる変数を持っていたらデータ競合が起こりうるよな
2022/04/15(金) 15:34:09.27ID:wykOop5a
>>9
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?
シングルトン無しでどうやってプログラム全体で共通のリソースを管理するの?
2022/04/15(金) 15:49:11.91ID:rZhfm+p8
2022/04/15(金) 16:34:54.97ID:WyYUxIA+
>>11 「管理」が何のことを言ってるのかわからないけど、たぶんひきすうをつかえばいいと思うんだ。
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をグローバルにするのと大差なくねって
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をグローバルにするのと大差なくねって
2022/04/15(金) 19:46:49.16ID:shXIYNIj
2022/04/15(金) 19:49:50.97ID:RJmakPbV
まあ引数で渡せばいいわけだが…
2022/04/15(金) 19:53:05.56ID:PiHpabQE
>>15
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?
グローバル変数やシングルトンがなくていいとは言わないけど、何でひきすうで出来ないと思うの?
2022/04/15(金) 19:55:09.07ID:shXIYNIj
>>16
それ何て純粋関数型プログラミング?
それ何て純粋関数型プログラミング?
2022/04/15(金) 20:05:45.76ID:gTMTzKSQ
システム全体のリソースならグローバルでいいだろ
グローバル変数を導入するメリットの方が勝つから
なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ
グローバル変数を導入するメリットの方が勝つから
なんでもかんでもグローバルに置くのはやめようねというだけの話でしょ
2022/04/15(金) 20:07:59.29ID:shXIYNIj
>>19
システム全体じゃないリソースてどんなのあったっけ?
システム全体じゃないリソースてどんなのあったっけ?
2022/04/15(金) 20:15:16.00ID:RJmakPbV
リソースって何を指してるんだろう…
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という関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。
これは明示的に回避できるのでしょうか?
また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか?
クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが……
度々申し訳ございますん。
(注)前スレ: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という関数内部でコンストラクトが実行されている)にコンストラクターが起動されてしまう感じで、外部ライブラリを使用したコンストラクションが失敗します。
これは明示的に回避できるのでしょうか?
また、皆さんはグローバル変数等を使用するときにどういった方法を取られますか?
クラス名から呼び出せるインスタンスはかなり便利なので使っていきたいのですが……
度々申し訳ございますん。
2022/04/15(金) 21:08:51.51ID:ZOmTtyVU
実際に1個しか存在しないものはシングルトンの表現が合ってる
GPUとかな
GPUとかな
2022/04/15(金) 21:22:11.96ID:o8nSddd2
inline変数は(MSVC16で確認する限り)1つの.dll内で同じ実体を共有する
dllをまたぐと別の実体になる
.hに書いてもリンク時に多重定義で怒られない
その言い方だとmainを呼び出す前の初期化処理で死んでる感じか
dllをまたぐと別の実体になる
.hに書いてもリンク時に多重定義で怒られない
その言い方だとmainを呼び出す前の初期化処理で死んでる感じか
2022/04/15(金) 21:25:54.67ID:lFYUjAWg
シングルトンにしてもグローバル変数にしても排他制御が必要な点で同じだよな
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をまたいだら別の実体だ
GetInstanceのテンプレート実装に逃げるか...
template<class T>
T&GetInstance(){static _back;return _back;}
int main(){
GetInstance<Hoge>().Func();
}
一応言っておくがデータをケチる目的のはずだからinline変数もGetInstanceテンプレートも「本物」のグローバル変数ではない
dllをまたいだら別の実体だ
2022/04/15(金) 22:14:55.32ID:zMpb+zG7
円周率みたいな定数ってどのライブラリのやつ使ってますか?
2022/04/15(金) 22:21:34.04ID:0DFy/IGY
<numbers>
C++20必須だが
C++20必須だが
2022/04/15(金) 23:15:01.17ID:ZOmTtyVU
古いC++ならe=exp(1.0)、π=6*asin(0.5)
2022/04/16(土) 06:56:47.86ID:cvz/IVkr
numbersって型変えた時ちゃんと直してくれるの?
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>;
}
変数テンプレートだからこっちが型を指定する
auto x = std::numbers::pi_v<double>;
デフォはdouble
namespace std::numbers {
inline constexpr double pi = pi_v<double>;
}
2022/04/16(土) 17:48:06.48ID:vYse36AQ
なおpi_v<int>はゆとり歓喜の3ではなくis_floating_pointに阻まれる模様
2022/04/16(土) 19:53:49.89ID:pxnrcQ3X
未だに円周率3とか言ってるおじいちゃんいるのか・・・
2022/04/16(土) 20:06:23.56ID:36AETGkW
ジジイを馬鹿にするのは結構だが若いなりに何か引っさげているのか?
俺は8bit機がこれから黄金期に差し掛かるあたりでお前らのような立場だった
ハッタリではなく当時のトレンド引っさげてジジイたちの死角を突くことで今の地位を得たが
口だけ達者でこれから沈みゆくだけな連中なら全然羨ましくねえぜ
俺は8bit機がこれから黄金期に差し掛かるあたりでお前らのような立場だった
ハッタリではなく当時のトレンド引っさげてジジイたちの死角を突くことで今の地位を得たが
口だけ達者でこれから沈みゆくだけな連中なら全然羨ましくねえぜ
2022/04/16(土) 20:44:57.02ID:YPs7FevK
世代ってより情弱ぶりを揶揄されてるのに気付かないようじゃ虚しいな
2022/04/16(土) 20:48:37.77ID:36AETGkW
そもそも誰か円周率が3だなんて主張してるか?
情弱って攻撃用ワード使って脅しかけても説得力ねえとバカにしか見えねえんだけど
情弱って攻撃用ワード使って脅しかけても説得力ねえとバカにしか見えねえんだけど
2022/04/16(土) 20:50:03.87ID:9kZcaiqY
2022/04/16(土) 20:51:51.80ID:fE0J8eTv
先輩パネーっすね
2022/04/16(土) 21:23:19.58ID:gltC/pf5
どうしてもintのπを定義しようと思ったら、4や2ってわけにはいかないから3にするしかないと思う
2022/04/16(土) 21:35:43.96ID:MoK8GTpb
どうしても偶数のπを定義しようと思ったら、4にするしかないと思う。
2022/04/16(土) 21:45:10.61ID:36AETGkW
全否定はしていない
これならジジイを馬鹿にする資格があると示しているのに
応答なしか・・・誠に残念
煽られても好意的に対応したが無駄だったか
これならジジイを馬鹿にする資格があると示しているのに
応答なしか・・・誠に残念
煽られても好意的に対応したが無駄だったか
2022/04/16(土) 22:22:53.11ID:IM94y/ni
20年前のフェイクニュースネタではしゃぐなよ
2022/04/16(土) 22:52:39.15ID:R//Q6DgO
「状況によって『およそ 3』で計算すればよい」という指導は存在する。
小学生は有効精度の概念を知らんから
どういう場合にどの程度の概算でよいのか自分で判断できんのよ。
「およそ 3」って言ったら 3 で計算するのを正解だと思っちゃうやつが少なからず出てきてしまう。
現実的な精度との兼ね合いで言ったら 3.14 で教えておくのがおおよそ手ごろなんやろね。
小学生は有効精度の概念を知らんから
どういう場合にどの程度の概算でよいのか自分で判断できんのよ。
「およそ 3」って言ったら 3 で計算するのを正解だと思っちゃうやつが少なからず出てきてしまう。
現実的な精度との兼ね合いで言ったら 3.14 で教えておくのがおおよそ手ごろなんやろね。
2022/04/16(土) 23:10:11.53ID:+A5PZLb9
喜べお前ら
こいつを追加するだけでpi_v<int>が使えるようになるぞ
template<>struct std::is_floating_point<int>:std::true_type{};
こいつを追加するだけでpi_v<int>が使えるようになるぞ
template<>struct std::is_floating_point<int>:std::true_type{};
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
> 「状況によって『およそ 3』で計算すればよい」という指導は存在する。
指導が何を指してるのか知らんけどおよそなんてどこから出てきたんだよw
円周率3の話は 小学校学習指導要領 (平成元年3月)の下記の文言が独り歩きしたものだぞ
円周率としては3.14を用いるが、目的に応じて3を用いて処理できるよう配慮する必要がある。
https://www.mext.go.jp/a_menu/shotou/old-cs/1322329.htm
2022/04/17(日) 00:51:59.98ID:B91+2VD/
文脈的にたいして変わらない気もするけど
そんな違うものか?
そんな違うものか?
2022/04/17(日) 03:44:03.45ID:GgR0k3G6
>>46
3.14だっておよそでしかない
およそ3で全然問題ないと思うね。
それより
1.6+2.4 = 4.0 と答えたら減点するアホ文系教師を文科省はなんで放置するのかね?
掛ける順番とかな。工数とかシランだろな多分
単位とかでもあほ文系小学校教師が理解してるとは到底思えない
3.14だっておよそでしかない
およそ3で全然問題ないと思うね。
それより
1.6+2.4 = 4.0 と答えたら減点するアホ文系教師を文科省はなんで放置するのかね?
掛ける順番とかな。工数とかシランだろな多分
単位とかでもあほ文系小学校教師が理解してるとは到底思えない
2022/04/17(日) 08:47:30.67ID:+WDep4l2
2022/04/17(日) 10:32:47.71ID:1NqFVDwl
>>46
そこだけ見て「ゆとりも3.14で教わってる」って誤解されてるけど
一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
最初に「円周率とは」で一度3.14と教えた後の計算問題は全部3でやるしかなかった
そこだけ見て「ゆとりも3.14で教わってる」って誤解されてるけど
一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
最初に「円周率とは」で一度3.14と教えた後の計算問題は全部3でやるしかなかった
51デフォルトの名無しさん
2022/04/17(日) 10:40:02.85ID:bm11jv7N 算数教育を破壊された影響は凄まじいな
マスゴミの煽動記事みて何人に1人の奇病なのかもわからないバカばっかりになっちまった
マスゴミの煽動記事みて何人に1人の奇病なのかもわからないバカばっかりになっちまった
2022/04/17(日) 11:00:54.26ID:xNW3vj+F
現実には3で十分なわけよ
わずか数%の違いしかなく困らない
どうしても必要なら3.1でいい
これならわずか1%強の違いしかない
逆に工業で必要とする時は3.14でも足りないこともある
つまり3.14にこだわっているやつこそバカであると断言できる
わずか数%の違いしかなく困らない
どうしても必要なら3.1でいい
これならわずか1%強の違いしかない
逆に工業で必要とする時は3.14でも足りないこともある
つまり3.14にこだわっているやつこそバカであると断言できる
53デフォルトの名無しさん
2022/04/17(日) 11:22:48.55ID:RqkDCOAY コンピュータの場合、累積する誤差を少なくするよう定数を求めるのが最も重要なわけで。
統計的に3.17がπとして相応しいことがわかっています。
統計的に3.17がπとして相応しいことがわかっています。
2022/04/17(日) 11:27:42.82ID:9gjwfasM
そら分かる子はいいよ
ほっといても算数なんてすぐ分かるやろ
数というもんの抽象性も理解できるし
かける順番にこだわることのアホさも自分で分かるやろ
でも
ひとクラス何十人のうちの算数分からん子
知能指数もボーダーの子
発達障害の子
その子らになんとかして分かってもらおうとすると
あの手この手でいろいろやってみるんやろな
ほっといても算数なんてすぐ分かるやろ
数というもんの抽象性も理解できるし
かける順番にこだわることのアホさも自分で分かるやろ
でも
ひとクラス何十人のうちの算数分からん子
知能指数もボーダーの子
発達障害の子
その子らになんとかして分かってもらおうとすると
あの手この手でいろいろやってみるんやろな
55デフォルトの名無しさん
2022/04/17(日) 11:29:26.25ID:RqkDCOAY 共産主義じゃないんだから馬鹿な子は馬鹿な大人に育てば良い。
みんな違ってみんな良い。
みんな違ってみんな良い。
2022/04/17(日) 11:30:31.73ID:n4FXzdR7
>>50
> 一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
だからそれもフェイクだっつーのw
(1)内容の「A数と計算」の(3)及び(4)については、乗数や除数が3位数である場合の指導は、2位数までの考え方を基にして児童に考え出させるようにするとともに、複雑な計算を避けるものとする。
だからこれに従うと円周率は3.1となるはず
これと上に書いた「目的に応じて3で計算」を(多分わざと混ぜて)某学習塾が
『ウッソー!?円の面積を求める公式 半径×半径×3!?』
『円周率を3.14ではなく、「およそ3」として円の求積計算を行います』
って広告打ったのが元凶と言われてる
> 一緒に3ケタの掛け算も廃止になったのが本当の大問題なんだよ
だからそれもフェイクだっつーのw
(1)内容の「A数と計算」の(3)及び(4)については、乗数や除数が3位数である場合の指導は、2位数までの考え方を基にして児童に考え出させるようにするとともに、複雑な計算を避けるものとする。
だからこれに従うと円周率は3.1となるはず
これと上に書いた「目的に応じて3で計算」を(多分わざと混ぜて)某学習塾が
『ウッソー!?円の面積を求める公式 半径×半径×3!?』
『円周率を3.14ではなく、「およそ3」として円の求積計算を行います』
って広告打ったのが元凶と言われてる
57デフォルトの名無しさん
2022/04/17(日) 11:34:11.45ID:RqkDCOAY 円周率なんて生きてく上で必要ない。
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は役割が違うのかしら。
もうちょっと調べてみます。
ありがとうござまいした。
この度は有用なアドヴァイス大変ありがたく承っております。
>>25
mainで走らせている実処理の前に、インライン変数のコンストラクタが起動しているので、リンカ?の際に記述と同時に外部結合?させているのではないかとしか推察できませんでした……
質問が理解できていないかもしれないのですが東方初学者ですので何卒。
>>27
受け渡しを省略したいという助平心でございます……
この記述で動作確認しました。
ありがとうございます!
テンプレートは食わず嫌いでしたが、使ってみると奥深いものですね。
関数定義にstatic T& Instance();と記述したらちゃんと内部結合?になっていました。凄い。
本物のグローバル変数とはdllを跨いでも使える変数なのでしょうか?
dellについて少し調べたのですがよくわかりませんでした。
クラス内部の静的変数はプログラムのどこからでも一位だと思っていましたが、外部結合のstaticは役割が違うのかしら。
もうちょっと調べてみます。
ありがとうござまいした。
2022/04/17(日) 14:39:47.64ID:smuc31S1
2022/04/17(日) 15:27:41.39ID:98II7f1E
試したことないけどあれって全く関係ないdllからアドレス指定して値書き換えたり出来るの?
2022/04/17(日) 15:35:49.78ID:smuc31S1
リンクできてれば大丈夫よ
マネージドなやつが混ざってたらやらん方がええかもね
マネージドなやつが混ざってたらやらん方がええかもね
2022/04/17(日) 16:23:54.03ID:wFJvf5tq
このスレ永久に同じ奴の自演でループしてるな
いつも同じ間違いで止まってるし
いつも同じ間違いで止まってるし
2022/04/18(月) 00:21:25.50ID:6Qt778/v
msvcのstd::lerp妙に遅かったから実装見たらめっちゃ厳重に引数チェックしてた
秒間何億回も呼び出す用途想定してないのか実装がまずいのか…とりあえず自分で書き直したわ
秒間何億回も呼び出す用途想定してないのか実装がまずいのか…とりあえず自分で書き直したわ
65デフォルトの名無しさん
2022/04/18(月) 07:14:50.33ID:t3NwdXGg デバッグビルド?
2022/04/18(月) 07:52:49.52ID:wKhqv1yX
引数が有限でない場合の処理が入ってるからだろ
そもそもそんなものを使おうとする方がどうかしてる
そもそもそんなものを使おうとする方がどうかしてる
2022/04/18(月) 08:47:21.12ID:UwAS9GUd
どんなチェックするとそんな負担になるの?
2022/04/18(月) 09:07:36.22ID:Mq4dF/46
場合分けはしているが、仕様に対して過不足ない実装だと思う。
https://github.com/microsoft/STL/blob/472161105d596192194d4715ccad307c6c163b4a/stl/inc/cmath#L1234-L1326
https://github.com/microsoft/STL/blob/472161105d596192194d4715ccad307c6c163b4a/stl/inc/cmath#L1234-L1326
2022/04/18(月) 09:18:05.41ID:Dpn9nQkn
2022/04/18(月) 09:44:52.69ID:Mq4dF/46
71デフォルトの名無しさん
2022/04/18(月) 09:53:11.17ID:t3NwdXGg 配列の範囲チェックと似たような話だろ
2022/04/18(月) 09:56:20.66ID:OY9HJtti
一般的に渡ってきた引数に対してチェックをせず処理する関数と厳重にチェックしてから処理する関数の二つを提供すればいいんじゃない?
もちろん後者はチェックしてから前者を呼び出すことになる
チェック不要が自明な時や何度も呼び出す時は前者で十分
もちろん後者はチェックしてから前者を呼び出すことになる
チェック不要が自明な時や何度も呼び出す時は前者で十分
2022/04/18(月) 10:05:07.63ID:s/nYZOWf
しかしニッチな機能だね
使うときは使うんだろうけど、これをあえて標準で用意するのは不思議
使うときは使うんだろうけど、これをあえて標準で用意するのは不思議
74デフォルトの名無しさん
2022/04/18(月) 10:06:44.44ID:t3NwdXGg スクロールバーやプログレスバーで使いそう
過去にそのあたりのコード書いた当時あったらなって
過去にそのあたりのコード書いた当時あったらなって
2022/04/18(月) 10:30:18.10ID:Mq4dF/46
2022/04/18(月) 11:30:20.45ID:wKhqv1yX
>>73
たいていの用途で必要なのは
const auto _Candidate = _ArgA + _ArgT * (_ArgB - _ArgA);
だけだからなぁ
誰がなんのためにこれを入れようと思ったのかよくわからんね
たいていの用途で必要なのは
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になったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
a=L::max();b=L::lowest();
この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
2022/04/18(月) 16:42:06.25ID:6Qt778/v
>>76
その式の形だとFMA命令に最適化されて良さそうだな
その式の形だとFMA命令に最適化されて良さそうだな
2022/04/18(月) 17:19:17.33ID:pd6PCcNf
そもそも何億回も呼び出すなら<math>のfma(...)使うんじゃねえの
<cmath>はどんな引数つっこまれても何とか対処しなきゃならんのが絶対条件
<cmath>はどんな引数つっこまれても何とか対処しなきゃならんのが絶対条件
80デフォルトの名無しさん
2022/04/18(月) 19:27:11.79ID:DmcgzGUS using L=numeric_limits<double>;
a=L::max();b=L::lowest();
この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
a=L::max();b=L::lowest();
この場合お前らの言う「最小限の実装」だと結果がNaNになったりするぞ
オーバーフローとか切り捨て/切り上げとかに気を使わなくていいように標準でこういうのが用意されてるんだよ
81デフォルトの名無しさん
2022/04/18(月) 20:05:50.33ID:t3NwdXGg >>79
sqrt(-1.0)でcomplex返さにゃならんの?
sqrt(-1.0)でcomplex返さにゃならんの?
2022/04/19(火) 04:23:27.96ID:M6r3Rc52
nanだのinfだの>>81だのをグチャグチャとチェックしたがる奴は無能
最初からそういうのが発生しないように計算するべき
最初からそういうのが発生しないように計算するべき
83デフォルトの名無しさん
2022/04/19(火) 06:18:55.90ID:0L/+n52g ゼロ除算とかね
2022/04/19(火) 14:44:51.44ID:0UVfIqO/
libc遅いだの愚痴りながら低レイヤーのコード書いてる時が正直一番楽しい
85デフォルトの名無しさん
2022/04/19(火) 14:50:47.69ID:0L/+n52g 人によるけどね
俺もマシン寄りのところが好き
俺もマシン寄りのところが好き
2022/04/19(火) 23:13:42.68ID:fQcWHs5l
MC++Dが20年前に発売されたってすげーな
アンドレイって天才だろ
アンドレイって天才だろ
2022/04/20(水) 19:24:03.82ID:q+GeEjNV
移住して快適な掲示板
NEXT2ch
3ch
45ch
明和水産
などへ
NEXT2ch
3ch
45ch
明和水産
などへ
88デフォルトの名無しさん
2022/04/20(水) 20:22:28.34ID:Cwlkz3kl 二度と帰ってくるなよ
2022/04/20(水) 21:01:40.29ID:q+GeEjNV
居座るなら二度と文句言うなよ
2022/04/20(水) 22:15:36.38ID:4qIYThBV
>>89
早速帰ってきてて草
早速帰ってきてて草
2022/04/21(木) 08:12:05.34ID:lT6JRJu8
今どき戻り値intでエラーコードとか使うなよCの書き方じゃねぇかとか思ってた
だけどC++17のvariantでエラーコード返したり、optional使ってエラー表現してるコードを見てちょっと感心した
しかしとはいえこういうやり方と例外ぶん投げるやり方ってどっちがいいんだろう?ググっても割りと論争あってよくわからんかった
だけどC++17のvariantでエラーコード返したり、optional使ってエラー表現してるコードを見てちょっと感心した
しかしとはいえこういうやり方と例外ぶん投げるやり方ってどっちがいいんだろう?ググっても割りと論争あってよくわからんかった
2022/04/21(木) 08:41:18.15ID:uyGzUV2B
>>91
制御フローを変更する必要がある場合は例外、それ以外(エラーもフローの一部の時)はoptionalでいいんじゃない?
例外は性能ペナルティーあるし、あんまり使うものじゃないと思うわ。
例えばメモリ確保失敗とかはプログラムの続行が難しいから、安全に終了するメモリ異常時の終了フローに移行できるよう例外を使うといいかと。
制御フローを変更する必要がある場合は例外、それ以外(エラーもフローの一部の時)はoptionalでいいんじゃない?
例外は性能ペナルティーあるし、あんまり使うものじゃないと思うわ。
例えばメモリ確保失敗とかはプログラムの続行が難しいから、安全に終了するメモリ異常時の終了フローに移行できるよう例外を使うといいかと。
2022/04/21(木) 09:00:35.99ID:9qc6sZDy
一部で悪名高い例外はマルチスレッドでこそ重宝すると思うんだが
2022/04/21(木) 09:09:09.66ID:3fppYdMF
例外はやばいエラーと普通のエラーを分けて欲しいわ
後者はあんまり遠くへ飛ばんでほしい
後者はあんまり遠くへ飛ばんでほしい
95デフォルトの名無しさん
2022/04/21(木) 09:18:47.88ID:TFObbQ1T 異常系は例外、準正常系はエラー
という方針がええな
という方針がええな
2022/04/21(木) 09:50:55.00ID:uYH/mfeQ
ここだけの話ちゃんとした例外処理書かれたコード読んだ事がない
2022/04/21(木) 11:09:48.62ID:Ex423fK8
例外って、移行の処理を全く出来なくね
try{
a();
b();
c();
}
catch(...)
{
}
a()がコケても、何がしかの条件をかえてb()いこうを実行したいときなんて不便
try tryなんてやりだしたら、各関数の戻り値をifで判断しているのと同じだし
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();
}
}
a()がコケたあとC()から再開とか無数にあるから
try {
a();
b();
c();
}
catch(std::exception& e)
{
if(dynamic_cast<f*>(&e))
{
if(dynamic_cast<g*>(&e))
{
b();
}
c();
}
}
2022/04/21(木) 11:17:35.59ID:9+GFB0OX
例外処理でどこまでカバーするかってのは初期には色々と検討されてる。
でも結局のところ「あきらめて終わる」「条件を変えてやり直しする」が圧倒的多数で
その他は言語機能としてサポートする必要ないレベルのレアケースだと判断された。
>>97
そういう場合は諦めて try をネストしたり連鎖したりしてなんとかしろってことだ。
少なくとも言語仕様をより複雑にするほどではない。
でも結局のところ「あきらめて終わる」「条件を変えてやり直しする」が圧倒的多数で
その他は言語機能としてサポートする必要ないレベルのレアケースだと判断された。
>>97
そういう場合は諦めて try をネストしたり連鎖したりしてなんとかしろってことだ。
少なくとも言語仕様をより複雑にするほどではない。
100デフォルトの名無しさん
2022/04/21(木) 11:31:04.81ID:3fppYdMF101デフォルトの名無しさん
2022/04/21(木) 11:51:54.97ID:Ex423fK8102デフォルトの名無しさん
2022/04/21(木) 11:56:00.06ID:Ex423fK8 >>96
つboost
つboost
103デフォルトの名無しさん
2022/04/21(木) 11:58:33.22ID:cKs9hG6Z104デフォルトの名無しさん
2022/04/21(木) 12:08:19.70ID:1fqzAB87 例外そのものが結構重たい処理だから
発生頻度が高いものでは使いたくない
発生頻度が高いものでは使いたくない
105デフォルトの名無しさん
2022/04/21(木) 12:50:04.39ID:sNS+foI5 GoやRustなど最近のプログラミング言語は例外がないね
代わりに多値やoptional/variant相当でエラーを返す
代わりに多値やoptional/variant相当でエラーを返す
106デフォルトの名無しさん
2022/04/21(木) 15:46:22.58ID:Ex423fK8107デフォルトの名無しさん
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で場合分けもできるんだが
いざ自前でやるとなると標準ルールが欲しくなる
しかし標準ライブラリが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 で凝りてるだろ。
大域脱出を使わないってのを徹底するならそれはそれでアリだと思うんだが、
半端に例外っぽいものを作るくらいなら素直に例外を使ったほうがいいわ……。
例外を投げたら途中にあるオブジェクトのデストラクタを呼んでちゃんと後始末してくれるってのが良いところなわけだろ。
そんで同等のことを setjmp でやろうとしたら実行コストが大きいってのは sjlj で凝りてるだろ。
大域脱出を使わないってのを徹底するならそれはそれでアリだと思うんだが、
半端に例外っぽいものを作るくらいなら素直に例外を使ったほうがいいわ……。
111デフォルトの名無しさん
2022/04/21(木) 17:43:25.69ID:Dvrv0zRB dynamic_castなんてゴミより例外使うやろ
112デフォルトの名無しさん
2022/04/21(木) 17:43:55.51ID:vSoU0DUY 例外を使わずに普通に代数的データ型でエラーを返せば良い
そのためにoptionalやvariantがある
そのためにoptionalやvariantがある
113デフォルトの名無しさん
2022/04/21(木) 17:44:34.43ID:Hotp0qqb 例外が嫌われる原因は、はるか遠くのスナイパーに即死させられるからだよ
ある前提ならどこにスナイパーがいてもいいように書く必要があって、そのためには地下の穴を掘り進めて絶対地上に出ないなどの策が必要になる
ある前提ならどこにスナイパーがいてもいいように書く必要があって、そのためには地下の穴を掘り進めて絶対地上に出ないなどの策が必要になる
114デフォルトの名無しさん
2022/04/21(木) 17:53:06.42ID:uYH/mfeQ いや単純に例外がシステムコールだからだろ
動的メモリ確保然りmutexロック然り
意味不明な例え話は必要ない
動的メモリ確保然りmutexロック然り
意味不明な例え話は必要ない
115デフォルトの名無しさん
2022/04/21(木) 18:07:39.87ID:3fppYdMF pythonの例外は割と好きだわ
c++でチームでやってるときは使わんほうがまあ無難
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:Ex423fK8120デフォルトの名無しさん
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
笑わせんなw
123デフォルトの名無しさん
2022/04/21(木) 19:29:12.31ID:Hotp0qqb 経験不足もココまで来ると哀れだな
CPUの例外とかシグナルをC++の例外としてあげることはあるけど、throwやtry/catchにシステムコールは関係ないよ
またsetjmp, longjmpをシステムコールと思ったのかもしれないけど、これらはCの標準関数だよ
CPUの例外とかシグナルをC++の例外としてあげることはあるけど、throwやtry/catchにシステムコールは関係ないよ
またsetjmp, longjmpをシステムコールと思ったのかもしれないけど、これらはCの標準関数だよ
124デフォルトの名無しさん
2022/04/21(木) 19:38:44.45ID:dzuJ6upO125デフォルトの名無しさん
2022/04/21(木) 19:40:56.19ID:XLa0Reo3 生娘が多いスレですね
126デフォルトの名無しさん
2022/04/21(木) 19:49:07.82ID:ylgd21Wg GoやRustのように例外のないプログラミング言語もあるように
例外は各言語内の単なる制御の一手法にすぎない
そこにシステムコールというOSの呼び出しは出てこない
例外は各言語内の単なる制御の一手法にすぎない
そこにシステムコールというOSの呼び出しは出てこない
127デフォルトの名無しさん
2022/04/21(木) 19:53:37.32ID:3fppYdMF 実装としてそれを期待することはあるんじゃねえかなあ
128デフォルトの名無しさん
2022/04/21(木) 20:23:53.47ID:dzuJ6upO129デフォルトの名無しさん
2022/04/21(木) 21:03:10.33ID:c/plR3QG 少なくともbsd系やlinux系などで例外にシステムコールは一切出てこないな
だから例外とシステムコールは無関係であると断言できる
もしシステムコールがからむ環境があったとしてもそれはその環境独自の問題
C++やその他の言語の例外とシステムコールは無関係
だから例外とシステムコールは無関係であると断言できる
もしシステムコールがからむ環境があったとしてもそれはその環境独自の問題
C++やその他の言語の例外とシステムコールは無関係
130デフォルトの名無しさん
2022/04/21(木) 21:10:18.22ID:5bVBNknH >>128
ISO標準の例外処理はどれかわかるよね?
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は基本的にハードエラーを補足するために使うものだぞ
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周りで発生するのはよく見かけると思う。
基本的にカーネル側で発生する例外一般であって、DLL周りで発生するのはよく見かけると思う。
133デフォルトの名無しさん
2022/04/22(金) 00:45:41.32ID:a+ReXgZI 例外の話しがなんで、SEHの話しになってんだ?
例外って知らないのか?
うちの会社にもいるわ、デバッガに制御が移っただけなのに
例外が〜なんて言ってるバカ
例外って知らないのか?
うちの会社にもいるわ、デバッガに制御が移っただけなのに
例外が〜なんて言ってるバカ
134デフォルトの名無しさん
2022/04/22(金) 01:10:17.53ID:+Hg7lfxg >>133
それは、例外の実装が sjlj しかないという馬鹿がしつこいからだよ
それは、例外の実装が 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:BvFOL7Y8138蟻人間 ◆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+Fap4CC144デフォルトの名無しさん
2022/04/22(金) 06:10:41.99ID:8e+rCGWk145デフォルトの名無しさん
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++の話じゃないな
C++の話じゃないな
149デフォルトの名無しさん
2022/04/22(金) 06:52:40.42ID:e55dh4X+ 蟻人間ってちょいちょい見かけるけどこういうでたらめなやつだったのね
150デフォルトの名無しさん
2022/04/22(金) 07:02:53.87ID:kPq/rze/151デフォルトの名無しさん
2022/04/22(金) 07:03:35.95ID:kPq/rze/152デフォルトの名無しさん
2022/04/22(金) 07:04:28.01ID:kPq/rze/ >>144
実装方法の話でしょ?sjlj だけ認めて SEH は認めないなんて矛盾してませんか?
実装方法の話でしょ?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++の標準構文です
以下の話はここで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:Bpn1KdM3156デフォルトの名無しさん
2022/04/22(金) 07:48:49.99ID:zZkpCShI >>151
setjmpとlongjmpはC標準として参照してるから存在するぞ
setjmpとlongjmpはC標準として参照してるから存在するぞ
157デフォルトの名無しさん
2022/04/22(金) 07:50:39.14ID:Y1J+20vl 書き込んだ本人に悪意がないのにアウトっておまえさんが何かペナルティを課すのか?
普通にそれは違うよと教えてやるのは全然スレ違いじゃないだろ
普通にそれは違うよと教えてやるのは全然スレ違いじゃないだろ
158デフォルトの名無しさん
2022/04/22(金) 07:59:20.08ID:0Q7NQ1lp159デフォルトの名無しさん
2022/04/22(金) 08:29:32.01ID:OAazuPnp >>158
そいつがずっと書いてるとおもってんの?
そいつがずっと書いてるとおもってんの?
160デフォルトの名無しさん
2022/04/22(金) 08:34:38.92ID:OmhkX7bc161デフォルトの名無しさん
2022/04/22(金) 08:37:18.75ID:Y1J+20vl 何かさ、C++の実用場面を1つも知らない世間知らずが
自分のためのシェルターを要求してるみたいだな
そんなの当人含め誰の何の役にも立たんのに
自分のためのシェルターを要求してるみたいだな
そんなの当人含め誰の何の役にも立たんのに
162デフォルトの名無しさん
2022/04/22(金) 08:48:05.34ID:u/m8ttCW 分かりやすい例え
もしAppleによる独自拡張の話をC++の機能だと思い込んでここで延々と話を続ける人たちがいたら
迷惑だからApple方面のスレでやれ!と怒られるだろ
それと同じことが今ここで起きている
もしAppleによる独自拡張の話をC++の機能だと思い込んでここで延々と話を続ける人たちがいたら
迷惑だからApple方面のスレでやれ!と怒られるだろ
それと同じことが今ここで起きている
163デフォルトの名無しさん
2022/04/22(金) 08:48:50.34ID:OAazuPnp164デフォルトの名無しさん
2022/04/22(金) 08:50:00.21ID:OAazuPnp >>162
親も早死にしたんですか?
親も早死にしたんですか?
165デフォルトの名無しさん
2022/04/22(金) 08:59:58.70ID:FOSKJcjg >>141
ここはり地域w
ここはり地域w
166デフォルトの名無しさん
2022/04/22(金) 09:14:12.23ID:oMnlDCaF 自治厨が延々暴れ続けるのも迷惑なんだが
167デフォルトの名無しさん
2022/04/22(金) 09:20:29.23ID:LDoEF43J SEHってJavaなど色んな言語でMicrosoftが勝手に拡張してるやつだぜ
だからC++の話ではないとまともな人ならわかるはず
だからC++の話ではないとまともな人ならわかるはず
168デフォルトの名無しさん
2022/04/22(金) 09:56:02.95ID:kaZmiYOz SEHってC言語で実装されているWin32API周辺開発でも例外機構を使えるようにしたものじゃないの?
例外機構が備わってるC++でSEHの出番はないと思うけど
例外機構が備わってる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 固有:
構造化例外処理 (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:OAazuPnp175デフォルトの名無しさん
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++コンパイラではないと言いたいほさ。
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++の仕様や機能ではありません
つまりコンパイラの問題ではありません
そして誰でもそうすることが出来るというだけでありC++の仕様や機能ではありません
180デフォルトの名無しさん
2022/04/22(金) 12:38:40.45ID:wri6W8iQ181蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 12:38:40.63ID:BJPJNuGw ゼロ除算の処理はマシン依存。
だから、コンパイラは構造化例外を発生させてもいい。
これも標準C++に含まれる。
だから、コンパイラは構造化例外を発生させてもいい。
これも標準C++に含まれる。
182デフォルトの名無しさん
2022/04/22(金) 12:39:26.59ID:T4tFP8Jg 死の書き込みなんか誰もしてねえじゃん
どっちが必死なんだかw
どっちが必死なんだかw
183デフォルトの名無しさん
2022/04/22(金) 12:41:11.68ID:wri6W8iQ ???
184デフォルトの名無しさん
2022/04/22(金) 12:56:04.30ID:XRzGPZH0 整数型のゼロ除算は未定義動作じゃろ...
うちの環境(Ubuntu20.04 gcc11)なら不動小数点例外のシグナルが飛ぶが
未定義動作なので絶対に何かが起きるようなことを期待してはいけない
うちの環境(Ubuntu20.04 gcc11)なら不動小数点例外のシグナルが飛ぶが
未定義動作なので絶対に何かが起きるようなことを期待してはいけない
185デフォルトの名無しさん
2022/04/22(金) 12:56:17.75ID:NXrQ3EcE >>181
構造化例外なんてものはC++標準に含まれないよ
構造化例外なんてものは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の機構を利用して実装されていると聞いたことがある
がググっても公式っぽいのは見当たらないので気のせいかもしれん
そもそも例外がどのように内部実装されているかなんて完全に処理系依存であって
そんなことはわかった上で話してるんじゃないの
あと自分も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++と無関係な話をして荒らしている人たちがいる
それに対して「例外はコストが余分にかかる」「例外だと複数返ってくる時の扱いやリカバリ等が難しくなる」という話の流れ
その話に対して例外はシステムコールだとか
SEHがどうのこうのだとか
C++と無関係な話をして荒らしている人たちがいる
191デフォルトの名無しさん
2022/04/22(金) 13:43:24.93ID:0v5EEVUK >>190
悔しいのう
悔しいのう
192デフォルトの名無しさん
2022/04/22(金) 13:51:45.19ID:XCe7UK1Z SEHがどんな実装で作られていようが魔法はないのだからコストがかかる要因であることは変わりない
したがってこの議論でSEHを持ち出すのは無意味で愚かな行為ではないかな
したがってこの議論でSEHを持ち出すのは無意味で愚かな行為ではないかな
193デフォルトの名無しさん
2022/04/22(金) 14:06:30.94ID:CNGbmw+5194蟻人間 ◆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+21PvJ200デフォルトの名無しさん
2022/04/22(金) 14:53:14.70ID:Hnq97RMZ 正直、スマンカッタ
例外がシステムコールとか
ほんとすまんかった
単に知ったかしたかっただけで
こんなに大騒ぎになるとは思わなかった
謝罪してこれを訂正に代えさせてください
正直すまんかった
勉強になりました
例外はシステムコールじゃないです
例外がシステムコールとか
ほんとすまんかった
単に知ったかしたかっただけで
こんなに大騒ぎになるとは思わなかった
謝罪してこれを訂正に代えさせてください
正直すまんかった
勉強になりました
例外はシステムコールじゃないです
201デフォルトの名無しさん
2022/04/22(金) 14:58:45.98ID:58eJLgfI202デフォルトの名無しさん
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とか無関係なものを持ち出した人がちょっとおかしいわね
> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話の始まり
だからSEHとか無関係なものを持ち出した人がちょっとおかしいわね
204デフォルトの名無しさん
2022/04/22(金) 15:36:33.95ID:fMqKBQE/205デフォルトの名無しさん
2022/04/22(金) 19:27:41.15ID:muq3Mg9B206デフォルトの名無しさん
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+20vl211デフォルトの名無しさん
2022/04/22(金) 21:29:04.26ID:5k7+8+kc 持ち出すことで意味があるならばもちろん構わないと思うけど
この今回の件でSEHを持ち出すことに意味あるのかな
> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
この今回の件でSEHを持ち出すことに意味あるのかな
> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
212デフォルトの名無しさん
2022/04/22(金) 21:45:02.53ID:wri6W8iQ >>210
そんな話はしていない。
SEHはC++でも標準でも無いWindowsローカルのプロプラ技術で、更には当のMSですらC++で使うことを推奨していないようなものなのに、「C++に関係ある話」とか言って無能を晒すなよ。
そんな話はしていない。
SEHはC++でも標準でも無いWindowsローカルのプロプラ技術で、更には当のMSですらC++で使うことを推奨していないようなものなのに、「C++に関係ある話」とか言って無能を晒すなよ。
213デフォルトの名無しさん
2022/04/22(金) 21:52:01.01ID:Y1J+20vl214デフォルトの名無しさん
2022/04/22(金) 22:04:57.79ID:86QhKiKT215蟻人間 ◆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
構造化例外処理 (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:wri6W8iQ219蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 22:23:11.84ID:BJPJNuGw 「「日本政府は関西弁を国語で使うことを推奨していない」みたいな関西弁を「日本語と関係ある話」として話したいのか?
意味不明なことを言って無能を晒すなよ」
関西弁は日本語と関係あります。
関西弁をバリバリ使ってる現場はあります。
C++でもSEHをバリバリ使ってる現場はあります。
それは普通じゃない? 特殊環境を許容しない偏屈な野郎ですか?
議論を避けたいもぐりの詭弁ですね。
意味不明なことを言って無能を晒すなよ」
関西弁は日本語と関係あります。
関西弁をバリバリ使ってる現場はあります。
C++でもSEHをバリバリ使ってる現場はあります。
それは普通じゃない? 特殊環境を許容しない偏屈な野郎ですか?
議論を避けたいもぐりの詭弁ですね。
220デフォルトの名無しさん
2022/04/22(金) 22:25:30.56ID:a+ReXgZI 例外の有益性云々よりも、会社ではその環境によっては使わないほうが無難
既存のプロジェクトでしか、ソースを触れなくて
hello worldすらかけない奴なんているし
この前もちょっと質問受けたから、サンプルを書いて送ったら、
これどうやってビルドするの?から始まった・・・
そんな奴に例外がどうとか言ってもな〜
既存のプロジェクトでしか、ソースを触れなくて
hello worldすらかけない奴なんているし
この前もちょっと質問受けたから、サンプルを書いて送ったら、
これどうやってビルドするの?から始まった・・・
そんな奴に例外がどうとか言ってもな〜
221デフォルトの名無しさん
2022/04/22(金) 22:27:28.43ID:KvTzeQ4l222蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 22:29:30.61ID:BJPJNuGw https://github.com/katahiromz/Hello/blob/main/hello16/hello16.cpp
ほら見ろよ。モグリ。C++の拡張子.cppでSEHをバリバリ使ってるぜ。
ほら見ろよ。モグリ。C++の拡張子.cppでSEHをバリバリ使ってるぜ。
223デフォルトの名無しさん
2022/04/22(金) 22:34:27.64ID:qbUdPk38224デフォルトの名無しさん
2022/04/22(金) 22:37:06.57ID:wri6W8iQ225蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 22:38:25.06ID:BJPJNuGw226デフォルトの名無しさん
2022/04/22(金) 22:41:57.59ID:WSHOJJH7 マイクロソフト公式で使わないことを推奨しているのに
蟻人間とかいう物体はそれを理解できないのかしら
蟻人間とかいう物体はそれを理解できないのかしら
228デフォルトの名無しさん
2022/04/22(金) 22:48:37.18ID:Iw7UiXr/ 今回の件でSEHを取り上げることに意味があるのかね?
> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
> 今回の話は>>91から始まる
> 「正常値でない時にvariantやoptionalを返すのと、
> (try/catchの)例外を投げる(throw)のと、
> どちらが好ましいか?」という話
230蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 22:52:46.51ID:BJPJNuGw 実装の分析を放棄するなら、実測しかないじゃねーか。
231デフォルトの名無しさん
2022/04/22(金) 22:53:00.68ID:+MX6gHfh232デフォルトの名無しさん
2022/04/22(金) 22:56:26.62ID:gE/jtm5P 例外機構はコストかかるしtry catchで扱いにくいから
最近の言語GoやRustなどではtry catchを廃止しちゃったほどだよ
最近の言語GoやRustなどではtry catchを廃止しちゃったほどだよ
233蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 22:58:31.59ID:BJPJNuGw >>231
そんなん当たり前。世界中のパソコンを一箇所集めて、例外を使ってるすべてのコードをGitHubからダウンロードして、全コンパイラで試すと、一般的な答えが出るだろう。
だから具体的な環境と具体的なコードがないと議論自体が無意味だろう。
そんなん当たり前。世界中のパソコンを一箇所集めて、例外を使ってるすべてのコードを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:hyDwnnZt237蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 23:21:40.20ID:BJPJNuGw C++例外がSEなんちゃらで実装されていたこともあった。概念としてはC++例外とSEなんちゃらは別物だが、実装としては排他的ではない。
238デフォルトの名無しさん
2022/04/22(金) 23:35:03.38ID:7/N/KhH6239蟻人間 ◆T6xkBnTXz7B0
2022/04/22(金) 23:37:23.52ID:BJPJNuGw 例外にオーバーヘッドがあって遅いのはわかってる。アセンブリと実測から明らかだ。
240デフォルトの名無しさん
2022/04/22(金) 23:41:51.93ID:qu0GkJrX241蟻人間 ◆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 用に実装されています。
ソース。
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で実装されているとは、書いてないじゃん
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)
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++のコンパイラと同じだよ。メチャクチャ使われてるよ。
MSVCは現在のVisual C++のコンパイラと同じだよ。メチャクチャ使われてるよ。
246デフォルトの名無しさん
2022/04/23(土) 00:15:14.42ID:MPqhbUj7 結局SEHで実装されているソース無し
248デフォルトの名無しさん
2022/04/23(土) 00:20:14.06ID:pT174lS4 >>241
それ /EHa があるよって話じゃね?
それ /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と同一のものであるかどうかは知りませんが
これがSEHと同一のものであるかどうかは知りませんが
251デフォルトの名無しさん
2022/04/23(土) 04:08:45.81ID:9ogfm+bK >>234
「try/catchの準備が入る」なんて実装はもう廃れて最近のコンパイラには当てはまらないかと。
「try/catchの準備が入る」なんて実装はもう廃れて最近のコンパイラには当てはまらないかと。
252デフォルトの名無しさん
2022/04/23(土) 06:09:11.45ID:dPWgl1lf >>214
おまえさん個人にとって有意義でなくても
C++におけるSEHの話をしている人にとっては有意義なんだよ
だから話すんだよ
自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな
自分が入れない話だからって勝手に有意義かどうか決めんな
おまえさん個人にとって有意義でなくても
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を持ち出す人はバカ
例外機構のある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:AdmKZSgb258デフォルトの名無しさん
2022/04/23(土) 11:27:56.93ID:t0MIUzKt259ハノン ◆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:Q6AAdSV9262デフォルトの名無しさん
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持ち出すバカと同類やな
SEH持ち出すバカと同類やな
265デフォルトの名無しさん
2022/04/23(土) 12:37:11.26ID:nWwnCTH/ Yahoo! JAPANトップページスクショ
https://pbs.twimg.com/media/FQ_8EFnUcAA9hjV?format=jpg&name=large
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:aTgXpsGk268蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 18:29:38.10ID:51eUfy6p Win32 C/C++だとSEHじゃないとキャッチできない例外もある。
269デフォルトの名無しさん
2022/04/23(土) 18:35:44.41ID:CPVvM2UX270蟻人間 ◆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だとぶっ飛ぶ。
char *p = NULL;
*p = 0; // ぶっ飛ぶ。
// ゼロ除算。
float a = 1;
a /= 0; // これもWin32だとぶっ飛ぶ。
275デフォルトの名無しさん
2022/04/23(土) 19:29:13.41ID:LGXHSjUH ゼロ除算はシグナルSIGFPEが発生
signal()でハンドリング関数を指定すれば良い
例外は全く関係ない
signal()でハンドリング関数を指定すれば良い
例外は全く関係ない
276蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 19:38:33.99ID:51eUfy6p Win32では浮動小数ゼロ除算は構造化例外であり、
SetUnhandledExceptionFilterの
EXCEPTION_FLT_DIVIDE_BY_ZERO
でキャッチできる。シグナルはない(Cygwinを除く)。
SetUnhandledExceptionFilterの
EXCEPTION_FLT_DIVIDE_BY_ZERO
でキャッチできる。シグナルはない(Cygwinを除く)。
277デフォルトの名無しさん
2022/04/23(土) 19:53:40.19ID:MFWNsjL4278デフォルトの名無しさん
2022/04/23(土) 20:01:38.15ID:pT174lS4279デフォルトの名無しさん
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 ハンドラーはマルチスレッドで個々のハンドラー持てないし
signal ハンドラーはマルチスレッドで個々のハンドラー持てないし
282デフォルトの名無しさん
2022/04/23(土) 20:21:15.45ID:nWwnCTH/ スレッド毎に設定できないシングルトンなデータといえばカレントディレクトリとか
283デフォルトの名無しさん
2022/04/23(土) 20:42:16.92ID:kGr5D+hC SEHとかのコスト掛けてするのは本末転倒
ゼロ除算は事前if文0比較でコスト安い
ゼロ除算は事前if文0比較でコスト安い
284デフォルトの名無しさん
2022/04/23(土) 21:07:07.31ID:1ji6Qm2J 例外の実装として sjlj と SEH とのどちらが優れているか、という話ではなかったのか?
285デフォルトの名無しさん
2022/04/23(土) 21:09:05.54ID:yDjwvYRz286蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 21:20:35.92ID:51eUfy6p287デフォルトの名無しさん
2022/04/23(土) 21:26:55.58ID:FYLNDVY0288蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 21:29:35.47ID:51eUfy6p >>287
/SHaのtry-catchでSEH機構を使ってるのは事実だし、確かめもしないやつに言われたくない。
/SHaのtry-catchでSEH機構を使ってるのは事実だし、確かめもしないやつに言われたくない。
289蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 21:40:18.76ID:51eUfy6p https://cutlassfish.wordpress.com/2014/08/12/mingw-w64-%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8B%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8%E4%BE%8B/
MinGW-w64 の例外機構は、SJLJ、DWARF、SEHの3つ。MinGW-w64におけるC++の例外はこのいずれかで実装されている。
MinGW-w64 の例外機構は、SJLJ、DWARF、SEHの3つ。MinGW-w64におけるC++の例外はこのいずれかで実装されている。
290デフォルトの名無しさん
2022/04/23(土) 21:41:28.57ID:qKJLJkGn それは嘘だな
例えば単純にプログラムの中でthrow投げるとする
当然SEHは使われない
例えば単純にプログラムの中でthrow投げるとする
当然SEHは使われない
291蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 21:43:17.83ID:51eUfy6p 単純な例外処理は最適化で消えることがある。常識。
292デフォルトの名無しさん
2022/04/23(土) 21:46:06.95ID:dgvSdybL293蟻人間 ◆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.
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()
になるかもしれない。
std::terminate()
になるかもしれない。
295デフォルトの名無しさん
2022/04/23(土) 22:11:37.95ID:qFv4TdcK297デフォルトの名無しさん
2022/04/23(土) 22:17:03.10ID:68vu283x ・まずtryの中で別の関数を呼び出さないと最もベーシックなパターンにすらなっていない
・呼び出される別の関数の中でも特定条件時のみthrowしないと例外処理の意味を持たない
・呼び出される別の関数の中でも特定条件時のみ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
オプションもまともに書けないとかお前さん使ってないだろ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:51eUfy6p303デフォルトの名無しさん
2022/04/23(土) 22:32:14.74ID:8fErgiPg304蟻人間 ◆T6xkBnTXz7B0
2022/04/23(土) 22:34:18.65ID:51eUfy6p306蟻人間 ◆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:Erk9N28U311デフォルトの名無しさん
2022/04/23(土) 23:18:30.07ID:BETrb0gR 結局実装の話してる人の精神状態が心配
312デフォルトの名無しさん
2022/04/23(土) 23:25:16.57ID:BMKo0y1z そろそろc++の話ししようぜ
2項演算子.*や->*が返却するオブジェクトの型を取得したい
規格にはapplication演算子が後続する場合のみ認めているが
その際の型をコンパイル時に取得したい
さらにdeclvalに渡したい
2項演算子.*や->*が返却するオブジェクトの型を取得したい
規格にはapplication演算子が後続する場合のみ認めているが
その際の型をコンパイル時に取得したい
さらにdeclvalに渡したい
313デフォルトの名無しさん
2022/04/23(土) 23:31:45.53ID:XUudJER7 なぜa.bとa->bという無駄な2種類を用意したんだろう?
他の言語ではaがポインタでもa.bだよね
型から間違いが起きようがないのだからa->bは不要だと思う
他の言語ではaがポインタでもa.bだよね
型から間違いが起きようがないのだからa->bは不要だと思う
314デフォルトの名無しさん
2022/04/23(土) 23:33:55.91ID:BMKo0y1z315デフォルトの名無しさん
2022/04/23(土) 23:35:30.32ID:BMKo0y1z お前ら聞いても無駄だな
例外とSEHの区別が付かないレベルだろうし
例外とSEHの区別が付かないレベルだろうし
316デフォルトの名無しさん
2022/04/23(土) 23:45:44.58ID:pNqsVcQp decltype(declval<Hoge*>()->*declval<Fuga Hoge::*>)とかすればいいだけじゃないの
というかoperator->*のオーバーロードが絡んでなければ右項のメンバポインタの型から直接取り出せばいいだけじゃないの
何がしたいのか分からない
というかoperator->*のオーバーロードが絡んでなければ右項のメンバポインタの型から直接取り出せばいいだけじゃないの
何がしたいのか分からない
317デフォルトの名無しさん
2022/04/24(日) 06:18:26.42ID:rcB2xidb318デフォルトの名無しさん
2022/04/24(日) 07:34:41.41ID:VMBCaQB9319デフォルトの名無しさん
2022/04/24(日) 07:58:43.35ID:rcB2xidb320デフォルトの名無しさん
2022/04/24(日) 08:09:04.00ID:U2c/5Lvo321デフォルトの名無しさん
2022/04/24(日) 08:14:09.42ID:S9c+iUdl チェックメイトだなw
322デフォルトの名無しさん
2022/04/24(日) 08:24:49.35ID:rcB2xidb323デフォルトの名無しさん
2022/04/24(日) 08:32:41.04ID:8mFtVhHE324デフォルトの名無しさん
2022/04/24(日) 08:44:00.70ID:uNEChMqn もしかして
「__try/__except/__finallyの例外処理=SEHと思っている人」と
「それを実現するために制定されたABIのことをSEHと呼んでそのABIがC++のtry/catchの実装にも応用されていると主張する人」との間で無限に平行線になってるのか
俺は後者のつもりで聞いていたけど前者と考えると、ISO標準例外を使えなんて話が出てくるのも頷ける
「__try/__except/__finallyの例外処理=SEHと思っている人」と
「それを実現するために制定されたABIのことをSEHと呼んでそのABIがC++のtry/catchの実装にも応用されていると主張する人」との間で無限に平行線になってるのか
俺は後者のつもりで聞いていたけど前者と考えると、ISO標準例外を使えなんて話が出てくるのも頷ける
325デフォルトの名無しさん
2022/04/24(日) 08:47:49.34ID:rcB2xidb326デフォルトの名無しさん
2022/04/24(日) 08:49:16.66ID:rcB2xidb327デフォルトの名無しさん
2022/04/24(日) 08:52:40.31ID:uNEChMqn328デフォルトの名無しさん
2022/04/24(日) 08:56:13.74ID:LoCVKuRG 自分の旗色が悪くなったら「話の流れを読め」とか言っちゃう人ですか?
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ
329デフォルトの名無しさん
2022/04/24(日) 09:02:44.40ID:uNEChMqn330デフォルトの名無しさん
2022/04/24(日) 09:14:26.07ID:rcB2xidb331デフォルトの名無しさん
2022/04/24(日) 09:18:51.38ID:UJYZs/tV332デフォルトの名無しさん
2022/04/24(日) 10:39:09.68ID:JjYc30D0 自分の旗色が悪くなったら「おちょくってやった」とか言っちゃう人ですか?
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ
それ物凄く曖昧な定義だね(・∀・)ニヤニヤ
何とでも言えちゃうじゃない
火病を起こした方が負けだよ
333デフォルトの名無しさん
2022/04/24(日) 11:02:54.19ID:UARVLPqL334デフォルトの名無しさん
2022/04/24(日) 11:04:51.34ID:7qMJqWpF >>313
C から踏襲したのだし、 C でそう決めたときに比較できるような「他の言語」なんて無かった。
当時に知られていた比較的近い構造化された文法を持つ言語というと Pascal くらいか。
演算子を分けない選択肢もあったということは今だからわかることなんだよ。
C から踏襲したのだし、 C でそう決めたときに比較できるような「他の言語」なんて無かった。
当時に知られていた比較的近い構造化された文法を持つ言語というと Pascal くらいか。
演算子を分けない選択肢もあったということは今だからわかることなんだよ。
335デフォルトの名無しさん
2022/04/24(日) 11:26:51.18ID:bl0Rasps336デフォルトの名無しさん
2022/04/24(日) 11:31:02.04ID:S9c+iUdl おいおい罵倒語はよせよ
せっかくの勝利を汚すだけだぜ
せっかくの勝利を汚すだけだぜ
337デフォルトの名無しさん
2022/04/24(日) 11:33:38.91ID:S9c+iUdl338デフォルトの名無しさん
2022/04/24(日) 11:45:40.17ID:rcB2xidb339デフォルトの名無しさん
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大無くても良くねなぜ有るんだろう事案
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
になるかも、、、
えますた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:0IQhRvgj344デフォルトの名無しさん
2022/04/24(日) 12:17:02.35ID:FAumgQ8n おまえらに規格の話しをしたのが間違いだった
いつの間にかポインタの話になってて笑って草生えそう
いつの間にかポインタの話になってて笑って草生えそう
345デフォルトの名無しさん
2022/04/24(日) 12:19:07.37ID:sqHO6Ex+ イカン駄目かorz
&を->より優先解釈させる必要があるからこうなりそう……
(&((&((&((&((&c)->d))->e))->f))->g))->h
やっぱミニマリスズムを貫くとかえって物量が増える感じに
&を->より優先解釈させる必要があるからこうなりそう……
(&((&((&((&((&c)->d))->e))->f))->g))->h
やっぱミニマリスズムを貫くとかえって物量が増える感じに
346デフォルトの名無しさん
2022/04/24(日) 12:19:14.73ID:6LU2OPGi >>340
そうではなく
ptrが構造体へのポインタの時に
(*ptr).nameと書かなくとも
ptr.nameと書くことにしても型から判断判別可能だから
ptr->nameという記法を用意する必要なかった
って話でしょう
そして短く書けてわかりやすくてオペレータを増やす必要ないメリット
そうではなく
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通り)のどれな意味のかが暗黙になって機械任せになってしまったら
コードを書く方も読む方も疲弊して転職しちゃいそう……
が旧来の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:owNaeWLI350デフォルトの名無しさん
2022/04/24(日) 12:57:12.43ID:sqHO6Ex+ まあPerlだと確かに$a->[$i]は${$a}[$i]と全く同じ意味なので$記法だけで困らないが
C/C++だと違うやんけ「.」と「->」に言語の存在意義レベルで重要な違いが生じているやんけ、
C/C++だと違うやんけ「.」と「->」に言語の存在意義レベルで重要な違いが生じているやんけ、
351デフォルトの名無しさん
2022/04/24(日) 13:04:18.44ID:grh6oY7G perlに限らずほぼ全てのプログラミング言語でxがポインタの時もx.yと記述
ポインタか否かは自明なのだから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は同じレベルで異なるものであるため、片方を使って別の片方を実装することは有り得ない」
・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のアセンブリを埋め込むことも可能。
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
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で実装されているとは言わない
この点を明確に区別できない人はヤバい
まずC++の例外のセマンティクスは定まっており実装はそれを厳守せねばならない
次にSEHのセマンティクスはC++の例外とは微妙に異なる
したがってC++の例外をSEHで実装するのは不可能
ただし実装コードの一部共有は可能
その一部共有コードの出自がSEHであればsehと名の付くものが存在しても構わない
しかしそれを持ってC++の例外がSEHで実装されているとは言わない
この点を明確に区別できない人はヤバい
364デフォルトの名無しさん
2022/04/24(日) 15:19:08.93ID:bl0Rasps365デフォルトの名無しさん
2022/04/24(日) 15:19:51.72ID:DF/Hs/9f レイヤーが明白に異なるね
SEHでC++の例外を実装したとは言わない
C++の例外にも適用できるように拡張したアセンブリコードを共有しただけだね
これは逆の視点でも捉えることができて元々C++例外のみ対応をSEHの例外にも適用できるように拡張したアセンブリコードを共有しても同じこと
SEHでC++の例外を実装したとは言わない
C++の例外にも適用できるように拡張したアセンブリコードを共有しただけだね
これは逆の視点でも捉えることができて元々C++例外のみ対応をSEHの例外にも適用できるように拡張したアセンブリコードを共有しても同じこと
366ハノン ◆QZaw55cn4c
2022/04/24(日) 15:20:22.47ID:pSkiKAbi367蟻人間 ◆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:rcB2xidb370デフォルトの名無しさん
2022/04/24(日) 15:29:04.49ID:FdEGTHTh371蟻人間 ◆T6xkBnTXz7B0
2022/04/24(日) 15:31:58.61ID:gt27lZWI372蟻人間 ◆T6xkBnTXz7B0
2022/04/24(日) 15:36:02.53ID:gt27lZWI >>371
そして、データはGetExceptionInformation()関数で受け取れるよ。
そして、データは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自体は上記マイクロソフト公式にある通り
マイクロソフト公式で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/Ftg376デフォルトの名無しさん
2022/04/24(日) 16:21:05.86ID:CQzQflDH377デフォルトの名無しさん
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 アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね
アリ氏ねアリ氏ねアリ氏ねアリ氏ねアリ氏ね
385蟻人間 ◆T6xkBnTXz7B0
2022/04/24(日) 16:43:13.13ID:gt27lZWI ここまでオレの自演。みんなに例外処理の実装について、もっと知ってもらいたかったんだ。
参加してくれた人にありがとう。
参加してくれた人にありがとう。
386デフォルトの名無しさん
2022/04/24(日) 16:44:26.96ID:6LjmHp6R388デフォルトの名無しさん
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歳の会社員だぞ。なめてんじゃねーよ。
説教してんじゃねーよ。俺様、暴走半島を房総している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:lSxnIwNB403デフォルトの名無しさん
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
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:2pmPCncG405デフォルトの名無しさん
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実装の存在を否定したい原理主義者がここに居るから、もっと治安の高いところで訊くといい。
コンパイラによって違うし、コンパイラオプションによっても変わってくる。SEH実装の存在を否定したい原理主義者がここに居るから、もっと治安の高いところで訊くといい。
409デフォルトの名無しさん
2022/04/24(日) 20:38:30.36ID:gt27lZWI *治安の良い
410デフォルトの名無しさん
2022/04/24(日) 20:41:33.15ID:qzHZBzW+ 重要なことは2つ
実装と関係なくC++例外のセマンティクスは同じ
例外のどの実装も何らかのコスト増を招くので自分でthrowせずエラー値を返した方がよい
実装と関係なく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機構の一部であることを認めなければならない。
プログラミングに関する高度な高等教育を受けたのはわかるけど、証拠に対する謙虚さの欠如は非難に値する。
しかしそれを乗り越えるのはアセンブリなどの低レベルの技術だ。RaiseExceptionなどの関数もSEH機構の一部であることを認めなければならない。
プログラミングに関する高度な高等教育を受けたのはわかるけど、証拠に対する謙虚さの欠如は非難に値する。
415デフォルトの名無しさん
2022/04/24(日) 21:24:19.63ID:dtFhyk9R416デフォルトの名無しさん
2022/04/24(日) 21:25:52.15ID:gt27lZWI417デフォルトの名無しさん
2022/04/24(日) 21:32:19.00ID:gt27lZWI 今、Windowsと言ったらWindows 3.1の話じゃないんだな。32ビット以上のWindowsなんだよ。
SEH2はSEHではない、なんて今どき流行らないんだよ。
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++の例外を実装している、は間違い
順序が逆
だから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の違いに関する資料を用意できるか? ソース希望。
従来SEHとSEH2の違いに関する資料を用意できるか? ソース希望。
423デフォルトの名無しさん
2022/04/24(日) 22:38:49.45ID:MFzj+ZC+ >>373で「SEHを拡張しない限りC++例外ハンドラの実装にはできないはず」だったのが
いつの間にか「拡張がされた」という話に飛んでいる気がするんですが
具体的にどのバージョンのVC++でどう拡張されたか裏を取ったうえで話してますか?
いつの間にか「拡張がされた」という話に飛んでいる気がするんですが
具体的にどのバージョンの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の一種と言える。
また、MSはSEH用の関数をいくつか提供している。これらを呼び出して使うのもSEHの一種と言える。
426デフォルトの名無しさん
2022/04/24(日) 23:38:35.38ID:U604NFl7427デフォルトの名無しさん
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とは異なるようだ。困ったねえ。
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の例外が生じたときのアンワインドって誰
がどうやってい
るの?
つか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)はやったらできないことは無いかもしれないが、何の例外オブジェクトを飛ばすのが妥当かという問題ががが……
※ 個人の感想です
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
これにて一件落着
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とかに行っちまったんだろうな
そういうやつはほとんどtwitterとかqiitaとか、最近はzennとかに行っちまったんだろうな
446デフォルトの名無しさん
2022/04/25(月) 10:14:43.63ID:I+YHujqQ 何を今更
5ch/2chが建設的な議論の場だったことなんて一度もない
5ch/2chが建設的な議論の場だったことなんて一度もない
447デフォルトの名無しさん
2022/04/25(月) 10:42:28.46ID:pTstUTP4 >>446
それはお前がそう言う議論に加われなかっただけだろw
それはお前がそう言う議論に加われなかっただけだろw
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 セクションに列挙しておく構造になっている。
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:X6pjTjrs453デフォルトの名無しさん
2022/04/25(月) 13:15:54.48ID:OEFRicH0 勝敗はともかく蟻人間は具体的なコードやキーワードを沢山出して
衆目が独自に再検証できるようにしている
技術的な議論の基本は蟻人間のほうができている
衆目が独自に再検証できるようにしている
技術的な議論の基本は蟻人間のほうができている
454デフォルトの名無しさん
2022/04/25(月) 13:38:16.40ID:hcMsLMgN455デフォルトの名無しさん
2022/04/25(月) 15:37:23.41ID:OEFRicH0 ・CとC++は仕様が異なる
・つまりCでC++の実装は不可能
cfrontやMIWA C++は不可能を可能にしてたね
・つまりCでC++の実装は不可能
cfrontやMIWA C++は不可能を可能にしてたね
456デフォルトの名無しさん
2022/04/25(月) 15:52:24.76ID:kb8wDvaf457はちみつ餃子 ◆8X2XSCHEME
2022/04/25(月) 16:25:58.79ID:5VI7zZaU >>455
CFront は C コンパイラをコードジェネレータとして使う仕組みでしかなくて、
原則として C++ と C の文法的類似性をあてにしてない。
(実装上のトリックとして多少利用することはあったかも?)
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の言う「議論の基本」なんだと思う。
> ・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モデルの例外を生じた当の関数の自動オブジェクトはデストラクタが呼ばれるとは限らない
この解決はやや厄介だとおも
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
オプション指定すれば大丈夫
ただ実行速度やコードサイズは犠牲になるけど
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 のオーバーヘッドが増える感じなのかな
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++例外対応するために色々と大変な状況になっているのか
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++の例外を実装している
C++の例外だけの独自の処理を追加し
C++の例外とは仕様が異なる部分も対応し
C++の例外のために書かれたコードがC++の例外を実装している
468デフォルトの名無しさん
2022/04/26(火) 20:34:02.59ID:2YgT13Zl C++でデバッガに出力ってできないのか
469デフォルトの名無しさん
2022/04/26(火) 20:36:24.76ID:Ss5uCM/X 見苦しい
471デフォルトの名無しさん
2022/04/26(火) 21:13:27.66ID:2YgT13Zl >>470
それってwin限定ですけど?
それってwin限定ですけど?
472デフォルトの名無しさん
2022/04/26(火) 21:23:44.97ID:BZkG8yBX SEHの件もそうだが
Windows特有の話をC++の話だと思いこんでいるダメな人たちが一部いるよな
Windows特有の話をC++の話だと思いこんでいるダメな人たちが一部いるよな
473デフォルトの名無しさん
2022/04/26(火) 21:27:09.59ID:LprfjWj1 C++のfopenをCreateFileで実装するのは当然不可能
C++のfopenだけの独自の処理を追加し
C++のfopenとは仕様が異なる部分も対応し
C++のfopenのために書かれたコードがC++のfopenを実装している
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:2YgT13Zl477デフォルトの名無しさん
2022/04/26(火) 21:54:04.27ID:FD0QYxhU なんだかんだ言ってWimdowsは便利。
478デフォルトの名無しさん
2022/04/26(火) 22:01:46.99ID:LprfjWj1 >>476
それでいいのか?w
それでいいのか?w
479デフォルトの名無しさん
2022/04/26(火) 22:06:05.51ID:2YgT13Zl480デフォルトの名無しさん
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
皮肉でたとえ話してんのに、額面どおりうけるやつ。。。
お前らと仕事だったら大変だな
一から十まで説明しなきゃいけなそう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
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();
これもそうだ
非標準の話をするなという原理主義者は
こういうのは受け入れるということか?
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++やる気なくなったんだろ(´・ω・`)
なんでc++やる気なくなったんだろ(´・ω・`)
498はちみつ餃子 ◆8X2XSCHEME
2022/04/29(金) 21:36:57.56ID:1rxQCQBS >>497
今は C++ 関連ではない仕事をやっているので C++ に対して時間が取れないということと、
C++20 に追加された一部の機能 (ロケールまわり?) に懐疑的だということは江添のブログに数年前に書かれている。
彼は C++ の規格については強い関心を持っていたし解説・教育にも熱心だったが、
プログラミング自体はそんなに意欲的な感じではないんだよな。
好きにやれるポジションを失ったことでやる気をなくしたんだろう。
細かい心情の機微はわからんけどな。
今は 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 用ソフト (というかとあるソフトのアドオン) を
公開したのを見たのが最初で最後だ。
少なくとも外部に発表したのは文章ばかりで、完成したアプリケーションを発表したことはほとんどない。
俺が知っているのは彼がドワンゴに入るよりもずっと前に Windows 用ソフト (というかとあるソフトのアドオン) を
公開したのを見たのが最初で最後だ。
506デフォルトの名無しさん
2022/04/29(金) 23:54:37.33ID:Geo4ukio 仕様ばかりに詳しくても何の役にも立たない
大抵の仕事は言語の細かな仕様まで知らなくてもC++98程度の知識でおおむねこなせるし
大抵の仕事は言語の細かな仕様まで知らなくても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 が最低ライン (もちろん可能ならもっと新しい版) だと考えている。
あまり古すぎるのはかえって学ぶのに資料が見つけにくくなっている場合もある。
俺も今の 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=/*ここ*/;
//...
}
あるテンプレート関数に渡される関数ポインタ、メンバ関数ポインタ、ファンクタ、ラムダの
戻り値の型を取得する方法を教えて
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;
とでもしておけばいい
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
それでやってみろよwwww
512デフォルトの名無しさん
2022/04/30(土) 07:04:59.56ID:2aZ7UOTr 構造体中の配列の特定の要素に対するメンバポインタって何で使えないの?
struct STRUCT {
int array[4];
};
int STRUCT::*pt = &STRUCT::array[2];
こんな事をやりたい
offsetofを使えって?
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
同じことを思ってる人がいるけどダメっぽい
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');
とかされていたら左詰め/右詰め/パディングが独自フォーマットとして制御し切れていない気が……
他から渡されてきた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(...);
でリセットするのが作法?
cout << resetiosflags(...);
でリセットするのが作法?
516デフォルトの名無しさん
2022/04/30(土) 11:40:17.38ID:u0zlL0D0 ('_')と('0')が顔文字に見えた
517デフォルトの名無しさん
2022/04/30(土) 11:49:21.15ID:qP6dl9mx ('_')
||
| つ('0')
||
| つ('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
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、、、
>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では通るコード。正しデバッグ中・・・。
ブロックソート書いたんですよ、ブロックソート。
安定ソート書けないから横着してアルゴリズムヘッダーのヤツ使ったんですよ。
落ちるんですよ。
誰かたすけて!
VCでは通らないが、GCCでは通るコード。正しデバッグ中・・・。
ブロックソート書いたんですよ、ブロックソート。
安定ソート書けないから横着してアルゴリズムヘッダーのヤツ使ったんですよ。
落ちるんですよ。
誰かたすけて!
521デフォルトの名無しさん
2022/05/01(日) 05:16:07.73ID:RKDZOMoi おまえらさぁ
openAPIがロハなのになんでいつまでもVCなんか使ってるのさ?
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 してしまってるけどいいの?
31行目で A = B = DD; しないで return してしまってるけどいいの?
524デフォルトの名無しさん
2022/05/01(日) 09:52:18.27ID:nBd2wfSC525デフォルトの名無しさん
2022/05/01(日) 14:31:24.77ID:ukM6vErn あるプロセスで、変数の型とアドレスはわかってるものとして、
それをc++のプログラムから書き換えるにはどうすればいいんですかね?
調べても情報があまり出てこなくて...
それをc++のプログラムから書き換えるにはどうすればいいんですかね?
調べても情報があまり出てこなくて...
526デフォルトの名無しさん
2022/05/01(日) 14:43:19.26ID:9TCpWNNH527デフォルトの名無しさん
2022/05/01(日) 14:53:21.11ID:vJsN8meg こんなんでいいんじゃね
mytype* p = reinterprit_cast<mytype*>(0xaabbccdd);
*p = 1000
mytype* p = reinterprit_cast<mytype*>(0xaabbccdd);
*p = 1000
528デフォルトの名無しさん
2022/05/01(日) 14:55:46.12ID:t4/NhzPt 他のプロセスからってことじゃないの
WindowsならReadProcessMemory/WriteProcessMemory
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から書き換える、みたいなことです。
自分がやりたいのは、あるプロセスの変数を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さんのものが使えるかもしれないので、一回調べながら触ってみます。
>>528さんのものが使えるかもしれないので、一回調べながら触ってみます。
536デフォルトの名無しさん
2022/05/01(日) 15:47:36.66ID:V8gMjhaX >>534
プロセスって言ってんだから実行中の話だろうjk
プロセスって言ってんだから実行中の話だろうjk
537デフォルトの名無しさん
2022/05/01(日) 16:19:28.57ID:pvwx8N/t >>521
oneapi でなく openapi というのがあるの?
oneapi でなく openapi というのがあるの?
538デフォルトの名無しさん
2022/05/01(日) 16:52:28.16ID:ukM6vErn readprocessmemory, writeprocessmomoryの詳しい使い方が載ってるサイトってありますかね...
539デフォルトの名無しさん
2022/05/01(日) 18:15:25.12ID:fSFndGfw540はちみつ餃子 ◆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 でプロセス内にプログラムを注入する方法もあるよ。
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
て言われてて皆好き勝手に独自のコンテナ実装してたらしいなw
542デフォルトの名無しさん
2022/05/01(日) 18:42:14.03ID:Rd1MW222 >>539
まあ結構ニッチだと言うのとリンク先にも書いてある通り
struct STRUCT {
int* array;
};
int STRUCT::*pt = &STRUCT::array[2];
ってやられたら違うコードにしないといけないから面倒なんだろうね
まあ結構ニッチだと言うのとリンク先にも書いてある通り
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:t6KXJfhj547デフォルトの名無しさん
2022/05/01(日) 22:03:23.83ID:Rd1MW222 >>544-545
だからできないって話なんだがw
だからできないって話なんだがw
548デフォルトの名無しさん
2022/05/02(月) 06:08:38.44ID:9K9pP+jI struct STRUCT
{
int array[2];
};
arrayはSTRUCT直属のメンバだからメンバポインタで指せるが
array[1]はあくまでarrayの要素であってSTRUCT直属のメンバではないので
これを指すようなメンバポインタは存在しない
{
int array[2];
};
arrayはSTRUCT直属のメンバだからメンバポインタで指せるが
array[1]はあくまでarrayの要素であってSTRUCT直属のメンバではないので
これを指すようなメンバポインタは存在しない
549デフォルトの名無しさん
2022/05/02(月) 06:48:46.84ID:LNpTFVSP classのメンバ関数型が存在しない理由って何?
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のはずだが現実にはできない
{
*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()が呼ばれるためのクロージャにデリファレンスされる
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
自分が欲しい機能は全て揃ってないとおかしいとかガイジすぎだろw
556デフォルトの名無しさん
2022/05/02(月) 09:06:55.61ID:6vh8Gvry あれが「揃ってないとおかしい」と読める読解力の方に問題がありそうだが
557デフォルトの名無しさん
2022/05/02(月) 10:01:16.40ID:8dvAAWOX 理由「仕様です」ということも理解できないの?
まじで脳障害を疑った方がいいぞw
まじで脳障害を疑った方がいいぞ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();になればいいのか?
いいだろう
では、仮にあったとしてどんな使い方を考えているんだ?
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:WQmMvuhJ566はちみつ餃子 ◆8X2XSCHEME
2022/05/02(月) 13:50:32.84ID:dhIldcoi >>565
メンバでないものをメンバポインタの範囲で扱うことは出来るけど「やるべきでない」からやってないって話だろ。
まあそれを言ったら C++ には奇妙なものはいっぱいあるから今更ではあるけどさ。
それに offsetof は offsetof で色々と制約があるからなぁ。
特にスタンダードレイアウトである必要がある (そうでないときは未定義) というのがなかなか厳しい。
可能な場合には型システムの枠組み内で扱いたい。
メンバでないものをメンバポインタの範囲で扱うことは出来るけど「やるべきでない」からやってないって話だろ。
まあそれを言ったら C++ には奇妙なものはいっぱいあるから今更ではあるけどさ。
それに offsetof は offsetof で色々と制約があるからなぁ。
特にスタンダードレイアウトである必要がある (そうでないときは未定義) というのがなかなか厳しい。
可能な場合には型システムの枠組み内で扱いたい。
567デフォルトの名無しさん
2022/05/02(月) 14:01:47.48ID:8dvAAWOX >>565
仕様として出来ないことと実現不可能なことの区別もつかないのかよw
仕様として出来ないことと実現不可能なことの区別もつかないのかよ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; こうなるべき
よくわからんが、こう言いたいの?
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:dhIldcoi571デフォルトの名無しさん
2022/05/02(月) 17:32:38.90ID:9K9pP+jI572デフォルトの名無しさん
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++でも配列を指す変数がポインタ扱いになるのはおかしなことじゃない。そうすると配列の要素はポインタの先になるので、配列を指すメンバー変数の要素もポインタの先になってメンバーじゃなくなりますな。
というか、こんなくだらないことでゴチャゴチャやってたの?
c において配列を指す変数がポインタと同一視されるんだから、cを踏襲するc++でも配列を指す変数がポインタ扱いになるのはおかしなことじゃない。そうすると配列の要素はポインタの先になるので、配列を指すメンバー変数の要素もポインタの先になってメンバーじゃなくなりますな。
というか、こんなくだらないことでゴチャゴチャやってたの?
575デフォルトの名無しさん
2022/05/02(月) 18:06:02.86ID:+FOPwlZG576デフォルトの名無しさん
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;
};
};
};
こんな事をやらないと出来ないのはなぜか?
構造体の中の配列の各要素は当然構造体の一部
つまりメンバ
というのが私の認識だが
その結果はどうでも良い
ここを議論しても意味がない
単なる言葉の定義の話だから
そうじゃなくて
技術的な話をしたいわけで
以下なら&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:WQmMvuhJ579デフォルトの名無しさん
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 になると思ってますが。
>576は抽象の問題は話していないので、そういうことにはならないかと。
言葉の定義が重要というならまず「メンバポインタ」などという未定義の用語を使うべきではないでしょうし。
なお>574の「配列を指す変数がポインタと同一視される」といった不正確な理解も、
厳密な定義を語るにあたっては前提が不適切と思います。
>576 などでは現行の pointer to data member を拡張した "pointer to subobject" とでも言うようなものの
可能性が探られているものと理解しています。
現状でそういった機能が無い理由は >561 になると思ってますが。
581デフォルトの名無しさん
2022/05/02(月) 18:53:30.65ID:WQmMvuhJ 配列にも入れ子の構造体にも使えない
offsetofの劣化コピーじゃ
何のためにわざわざ仕様追加したんだかわからんねえ
offsetofの劣化コピーじゃ
何のためにわざわざ仕様追加したんだかわからんねえ
582デフォルトの名無しさん
2022/05/02(月) 19:03:28.83ID:JwCZPFEF >>581
追加された理由は offsetof に伴う危険なキャスト無しで同等の機能を提供したかったからでしょうね。
そもそもCでさえ offsetof を使ったメンバアクセスはすべて規格上は未定義動作の範疇のままであり、
未定義動作を認めないとする観点で言えば pointer to data member は純粋な拡張として有用です。
現行コンパイラ実装での挙動まで含めて考えれば、挙げられているとおり offsetof の適用可能範囲のほうが
ずっと広いんですけども。
追加された理由は offsetof に伴う危険なキャスト無しで同等の機能を提供したかったからでしょうね。
そもそもCでさえ offsetof を使ったメンバアクセスはすべて規格上は未定義動作の範疇のままであり、
未定義動作を認めないとする観点で言えば pointer to data member は純粋な拡張として有用です。
現行コンパイラ実装での挙動まで含めて考えれば、挙げられているとおり offsetof の適用可能範囲のほうが
ずっと広いんですけども。
583デフォルトの名無しさん
2022/05/02(月) 20:14:09.92ID:pVfL1f+B ninja使わないで普通にmakeするとものすごく遅いな。
ninjaって凄く速かったんだな。
ninjaって凄く速かったんだな。
584デフォルトの名無しさん
2022/05/02(月) 20:49:04.97ID:/YgtvrIl 純粋な疑問なんだけどメンバ変数である配列の要素のポインタを変数として扱えて何が嬉しいの?
使い方が思い浮かばない…
使い方が思い浮かばない…
585はちみつ餃子 ◆8X2XSCHEME
2022/05/02(月) 20:59:32.26ID:dhIldcoi そもそもメンバを指すポインタだってそんなに使うもんじゃないしな。
std::is_class の実装に使えるんじゃねーのという文脈で登場する程度。
std::is_class の実装に使えるんじゃねーのという文脈で登場する程度。
586デフォルトの名無しさん
2022/05/03(火) 10:38:15.40ID:J5PtY6cN587デフォルトの名無しさん
2022/05/03(火) 10:41:06.53ID:J5PtY6cN 構造体STRUCTのメンバを指すメンバポインタというものが
構造体STRUCTの直接の配下のメンバ以外まで指せる仕様にしたら
構造体STRUCTの中に構造体SSTTRRUUCCTTが存在する入れ子のケースにおいて
構造体STRUCTのメンバポインタでなんでSTRUCT::SSTTRRUUCCTTのメンバを指せないんじゃヴォケ、
おなじ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)
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(?): コンパイラに怒られそう
}
ファイルスコープの関数を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との相互作用は知らん
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 リンケージを必ず持つようにしなければならない。
た確かに…!
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
なんだそれは...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.
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/600デフォルトの名無しさん
2022/05/04(水) 11:15:08.92ID:GAB8HZoP601デフォルトの名無しさん
2022/05/04(水) 11:16:25.61ID:OOPwcDJ/602デフォルトの名無しさん
2022/05/04(水) 11:19:13.87ID:OOPwcDJ/ でもその前にどのくらいのメモリが必要そうかの見積もりはざっくりやったほうが良さそうね
603デフォルトの名無しさん
2022/05/04(水) 11:20:53.78ID:OOPwcDJ/ ざっくり2GBなのか
なんか現実的ではない気がしてきた
少なくとも家庭用のPCなんかでは無理そうかも
なんか現実的ではない気がしてきた
少なくとも家庭用のPCなんかでは無理そうかも
604デフォルトの名無しさん
2022/05/04(水) 11:48:39.54ID:GAB8HZoP605デフォルトの名無しさん
2022/05/04(水) 14:50:41.22ID:RRH/ygkO 128倍精度ってなんですか(・∀・)?
倍精度で表せる最大値((2^(1023+1)) - epsilon)の2^128倍は
(2^(130944+1)) - epsilon
であって
2^17179869183
よりカナーリ小さげ
倍精度で表せる最大値((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
((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の推奨による仕様での最大値の計算をしていたんです。
128倍精度浮動小数点数は4096ビット浮動小数点数。
IEEE754-2008の推奨による仕様での最大値の計算をしていたんです。
608デフォルトの名無しさん
2022/05/04(水) 15:38:07.79ID:GAB8HZoP609デフォルトの名無しさん
2022/05/04(水) 15:39:34.72ID:GAB8HZoP ちなみに128倍精度の最大値は
(2^((2^(35-1))-1))*(2-(2^-4060))
で計算可能かと。
(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が仮数部(符号含まない)
>(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:TqagpjaD612デフォルトの名無しさん
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)
あれの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:GAB8HZoP616デフォルトの名無しさん
2022/05/04(水) 17:57:22.19ID:GAB8HZoP スレチだけど
https://paiza.io/projects/
のpython3で
print(2**17179869183)
をやってみたところエラーになった。
print(2**171798)
では答えが出る。
メモリかな?
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
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...>>...>;
};
};
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%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
“テレワーク”案件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
やったったが愚直に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)なのは変わらないが、割り算無しで済むのは大きいい(多分、
最終的に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ならすぐ
今のPCならすぐ
625デフォルトの名無しさん
2022/05/05(木) 06:58:12.94ID:ghaa3vLm626デフォルトの名無しさん
2022/05/05(木) 08:43:37.74ID:Hm4Z5Kkb 自演ちゃうねん
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?
繰り返し二乗法の適用を思いつかなかったのは太くの至りで宦官の至りやが
2^N計算を10^n進数ベースでやるときに適用して高速化するやり方しか思いつかん
>大きい素数のmodを計算すれば良いだけ
とは何ですか(・∀・)?
627デフォルトの名無しさん
2022/05/05(木) 10:32:36.82ID:CLlK/Ylr 興味本位で全桁表示したいだけなら5171655947桁あることを知って諦めてほしい
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ
概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる
/と%による単純な基数変換を使うにしても、/も%も桁数Nに対してO(NlogN)程度かかるらしく、それだけかかってようやく1桁求まるレベルなんで、まあ無理よ
概算したいだけなら高校生でも知ってる対数を使う方法で4.637182185+e5171655947くらいと分かる
628デフォルトの名無しさん
2022/05/05(木) 10:34:08.63ID:QrYoef2b 10000007とかで割れって言ってるんだろ
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと
これじゃ余分な7の誤差蓄積しまくって上位めちゃくちゃになるし、影響ないほど巨大な10^n近似素数使っちゃったら結局計算量は大差ない
競プロキッズの考えそうなこと
629デフォルトの名無しさん
2022/05/05(木) 10:39:30.08ID:CLlK/Ylr あごめん桁数は5171655948が正しいね
630デフォルトの名無しさん
2022/05/05(木) 10:41:25.83ID:dV/D8sCJ631デフォルトの名無しさん
2022/05/05(木) 10:44:36.09ID:vEkkTSCd >>627
10進での桁数は
17179869183*log2/log10
https://ja.wolframalpha.com/input?i=17179869183*log2%2Flog10
で計算できることは知っているが、
先頭の値はどうやって出すの?
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:E1ivHqdi634デフォルトの名無しさん
2022/05/05(木) 11:36:06.02ID:CLlK/Ylr >>631
小数部だけをまた10の肩に乗っければいい
小数部だけをまた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...
で勘弁してください。
実数が分かれば文字数で桁数も分かりますので、
実数が知りたかったんですが、ここまでしか分かりません。
お手数おかけしました。
多倍長電卓で計算できないんでプログラムならできるのかな?と思ったわけです。
現時点では計算時間とメモリを食いそうですね。
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:/C0Dx8BU642デフォルトの名無しさん
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 }); じゃないの?
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つの仕事がある。中途半端に仕事が混ざってない?
プログラムの意図がわからんから投げたわ
1. Data型の<1>要素の意味はなんだよ。typedefした行のコメントに書いといてほしい
2. 関数名を流し見る限り、ソート・エンコード・デコードの3つの仕事がある。中途半端に仕事が混ざってない?
645デフォルトの名無しさん
2022/05/05(木) 19:50:34.56ID:p/xHapT/646デフォルトの名無しさん
2022/05/05(木) 21:14:55.46ID:tw5Ro1fM647デフォルトの名無しさん
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++です。
教えて下さい
(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 な値への型変換規則によってかなり巨大な値になってしまう。
たぶんこれが意図しない挙動の原因だと思う。
色々と面倒な細かいルールはあるんだが、大まかには
・ 二項演算子は原則としては大きい側の型に揃えてから計算する (符号は符号無しが優先。 結果の型もそれ)
・ 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) の序列が定められている。 まあ大きさの順なので実質同じやろ。)
符号無しが優先って書いちゃったけど、これは大きさが同等なら符号無しが優先ってことね。
大きさに差があるなら大きい方の符号が採用される。
(大きさって言ってるけど実際には順位 (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しかないから
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 が表示される。
#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ぐらいで出る
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ぐらいで出る
653647
2022/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
やったら最新状況は↓こんな感じでこの後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
になるようです。
ご参考まで。精度等未確認ですが。
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されている可能性があります。
ちなみにこの計算は、
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:dNZjdeLr659デフォルトの名無しさん
2022/05/06(金) 15:08:33.81ID:dNZjdeLr660デフォルトの名無しさん
2022/05/06(金) 15:20:41.30ID:HAMEIRFi 延々同じようなことやってる低学歴さんたちって>>623見えんの?
661デフォルトの名無しさん
2022/05/06(金) 15:25:15.07ID:P9K99Ehi C++ のプログラムでサスペンド/復帰をお手軽に実装するための定番の方法ってないですかね?
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです
USR1 を受け取ったらメモリの内容を丸々ファイルにダンプして、復帰するときはそれを読み込んで続きから実行、くらい簡単な仕組みが実現てきたら嬉しいです
662デフォルトの名無しさん
2022/05/06(金) 15:25:29.57ID:bNsO3W2u >>659
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ
真の乱数データならどのような圧縮アルゴリズムでも縮まんよ
663デフォルトの名無しさん
2022/05/06(金) 15:28:31.87ID:dNZjdeLr664デフォルトの名無しさん
2022/05/06(金) 16:06:26.56ID:DVOROdCT >>661
WM_POWERBROADCAST ggrks
WM_POWERBROADCAST ggrks
665デフォルトの名無しさん
2022/05/06(金) 17:03:00.97ID:Ai+BgFMJ 圧縮方式がなんだろうと可逆圧縮はデータ長が短くなるケースがあるならデータ長が長くなるケースが必ずある
65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。
このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない
65536通りの表記がある2byteデータで、1通りが1byteに圧縮できるとしよう。(0x0000→0x00)
残りの65535通りから256通りの表現を奪うので(0x00から始まるパターンが作れなくなる)、3byte長で表現しなきゃいけないやつが出てくる。
このへんはトレードオフだが、テキストデータとか一定の傾向があるデータのデータ長を短くできりゃいいだろ?
ランダムデータとか圧縮済みデータを圧縮するなんて考えない
666デフォルトの名無しさん
2022/05/06(金) 17:26:03.51ID:dNZjdeLr >>665
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。
まぁ、そうですね。
LZWの性質上、一回出たモノを辞書から洗って一個追加して辞書に返す。という事をやるのです。
エントロピー圧縮では無いので乱数を詐欺れたら無敵だったのですけど、現実は厳しい。
667はちみつ餃子 ◆8X2XSCHEME
2022/05/06(金) 18:18:33.94ID:lqMO+ITd データ圧縮時にあり得る最大伸長率をまとめたサイトをどこかで見たような記憶があったんだけど
あらためて探すと見つからない……。 幻だったんだろうか。
あらためて探すと見つからない……。 幻だったんだろうか。
668デフォルトの名無しさん
2022/05/06(金) 18:30:36.95ID:jJyKyUF7669デフォルトの名無しさん
2022/05/06(金) 20:00:41.83ID:AeHK35lN670デフォルトの名無しさん
2022/05/06(金) 20:02:30.43ID:L9gk7Obb >>664
Linuxではどうすればいいの?
Linuxではどうすればいいの?
671デフォルトの名無しさん
2022/05/06(金) 20:05:10.12ID:O7Z7ebwH 内部クラスを外部クラスが継承するって不可能?
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか
struct A : A::B { struct B {}; };という特殊な事やりたいんやけど前方宣言とかできないっぽいし無理やろか
672デフォルトの名無しさん
2022/05/06(金) 20:10:36.04ID:DVOROdCT673デフォルトの名無しさん
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分くらいで計算できた
30分くらいで計算できた
676デフォルトの名無しさん
2022/05/06(金) 23:34:15.82ID:j0ngZiiW 計算結果いる?
5GBくらいのテキストファイル
5GBくらいのテキストファイル
677デフォルトの名無しさん
2022/05/07(土) 00:00:32.86ID:8cLtDCyH ああもう48年後か…
おまいらまだ生きてるか?
おまいらまだ生きてるか?
678デフォルトの名無しさん
2022/05/07(土) 00:32:32.99ID:hLdUgsLX >>676
先頭100桁とE+の値(文字数でもいいです)と最後の20桁ください。
先頭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
暗算はスレチ
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:i0ZrzBre682デフォルトの名無しさん
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
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年ぐらい待ったらできうる
48年ぐらい待ったらできうる
685デフォルトの名無しさん
2022/05/07(土) 02:17:43.49ID:i0ZrzBre686デフォルトの名無しさん
2022/05/07(土) 02:20:59.45ID:dujXhAGl なぜコードでなく計算結果なのか
687デフォルトの名無しさん
2022/05/07(土) 03:43:06.05ID:bh3xusof >>661,664,670,672
すみません。Linuxを想定していました
すみません。Linuxを想定していました
688デフォルトの名無しさん
2022/05/07(土) 04:06:12.29ID:P9LDpr78689デフォルトの名無しさん
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通りで計算して同じだったし
2通りで計算して同じだったし
693デフォルトの名無しさん
2022/05/07(土) 08:15:43.50ID:hLdUgsLX 先頭数十桁と最後の数十桁は合っていそう。
文字数は5171655817で合ってるの?
文字数は5171655817で合ってるの?
694デフォルトの名無しさん
2022/05/07(土) 08:21:32.36ID:hLdUgsLX695デフォルトの名無しさん
2022/05/07(土) 08:49:15.35ID:i0ZrzBre 2^17179869183
●計算結果
https://5.gigafile.nu/0514-n79efacc97fda1fc1ecce0eeb21225ab7
(5171655946バイト)
※実行時間: 約20分
●コード (C言語)
https://ideone.com/xSaa6x
※メモリが16GBくらい必要です
●計算結果
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秒くらいで出せると良いけどな。
文字数チェックに使ったGigaTextViewerにバグがあったらしい。
バイト数で5171655946で見たら合ってるな。
バグないみたい。ご苦労様。
あとは128倍精度浮動小数点数の最大値とか計算できると良いな。
相当凄腕なら64倍以上のn倍精度精度浮動小数点数の最大値を0.06秒くらいで出せると良いけどな。
697デフォルトの名無しさん
2022/05/07(土) 10:01:38.30ID:i0ZrzBre698デフォルトの名無しさん
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
これを合っているか確認して戴きたい。
時間かけなくていいからね。簡単にできそうならやってみて。
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:hLdUgsLX703デフォルトの名無しさん
2022/05/07(土) 11:29:01.32ID:hLdUgsLX704デフォルトの名無しさん
2022/05/07(土) 11:29:47.60ID:hLdUgsLX ウルフラムアルファでも計算できないのにw
705デフォルトの名無しさん
2022/05/07(土) 11:30:15.89ID:i0ZrzBre 指数と桁の割り振りは決まってないし
好きに決めれば良いんだよ
IEEE754の範囲でも
倍になるごとに4bit増えてるわけでもない
好きに決めれば良いんだよ
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増になる式が書いてある。
まぁ別に合わせなくてもいいが、合わせて演算パッケージの開発をしやすくした方がいいんじゃないのかな。
桁が足りなければどんどん倍数を増やせばよいわけだし。
ちなみにどんな電卓なら計算できるの?
IEEE754-2008では推奨で決まってるよ。
結果的に4bit増になる式が書いてある。
まぁ別に合わせなくてもいいが、合わせて演算パッケージの開発をしやすくした方がいいんじゃないのかな。
桁が足りなければどんどん倍数を増やせばよいわけだし。
ちなみにどんな電卓なら計算できるの?
708デフォルトの名無しさん
2022/05/07(土) 12:02:42.85ID:i0ZrzBre709デフォルトの名無しさん
2022/05/07(土) 12:08:50.27ID:i0ZrzBre 半精度、単精度はルールかは外れてるし
8倍精度以上をそのままバイナリ形式で他のソフトとやり取りする事もなかなか考えられないし
桁数はいらないけど指数が欲しい時もある
というか、桁数に対して指数の割合が少なすぎる
65536倍精度を使う場面で指数を数ビットケチる意味はまったく無い
ライブラリを作るなら柔軟に設定出来るものが良いかと
半精度は今でも用途によって複数の形式があるし
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桁だけなら可能
工夫すると 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++的には前者だが数学的には後者だな
2^(2^35)かどっちだ?
C++的には前者だが数学的には後者だな
718デフォルトの名無しさん
2022/05/07(土) 20:28:26.23ID:hLdUgsLX719デフォルトの名無しさん
2022/05/07(土) 21:33:22.65ID:GCz/eJtw >>687
/etc/pm/sleep.d
/etc/pm/sleep.d
720デフォルトの名無しさん
2022/05/08(日) 00:59:03.56ID:fONWhazS べき乗は右結合というのは宇宙の始まりから決まってゐる
なぜなら、(2^2)^35 = 2^(2*35)であって1重のべきにすぎないから左結合の多重冪は多重である意味が無い
なぜなら、(2^2)^35 = 2^(2*35)であって1重のべきにすぎないから左結合の多重冪は多重である意味が無い
721デフォルトの名無しさん
2022/05/08(日) 01:01:37.38ID:fONWhazS >>717
ここでの演算子^はXORの意味ではないから念のため
ここでの演算子^は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
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で一般化できるか?
これを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;
}
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:vKAQqA9f726デフォルトの名無しさん
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
クヌースの矢印の矢印が一個ずつ足りないんじゃない?
{\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:RTAOPX4V728デフォルトの名無しさん
2022/05/08(日) 11:30:55.36ID:vKAQqA9f729デフォルトの名無しさん
2022/05/08(日) 12:20:02.96ID:sGLUGFq3 >>728
タイムアウトすっぞ
タイムアウトすっぞ
730デフォルトの名無しさん
2022/05/08(日) 12:29:28.95ID:ZM5mEHZG 昔C++で少ない文字数で巨大な数を作るってのやったなあ
intは十分大きいとしてint main();の戻り値を競うって感じ
intは十分大きいとしてint main();の戻り値を競うって感じ
731デフォルトの名無しさん
2022/05/08(日) 12:51:18.92ID:riShKp28732デフォルトの名無しさん
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桁の並びが得られる、
適当な基数の下で表した例えば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年以内に累乗根の誤差の影響が無い形で実装してみるわサーセン;;;
そしたら漏れも勝ちや!
何と戦ってるのかは知らんが、
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)
畳み込みの式は正しくはこうっす
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:yzB2nwTj740デフォルトの名無しさん
2022/05/09(月) 03:52:17.59ID:E3g8JMTZ 「~(1<<31)」 (8文字)が短かくなりそうだがint=4byte+オーバーフローの未定義動作を含むからNGという寸法か
しかし「123456789」もint=4byteが前提になってるしどうやって遊ぶんだ?
「std::numeric_limits<int>::max()」でとりあえずint最大値が帰るが
しかし「123456789」もint=4byteが前提になってるしどうやって遊ぶんだ?
「std::numeric_limits<int>::max()」でとりあえずint最大値が帰るが
741デフォルトの名無しさん
2022/05/09(月) 04:10:24.01ID:lLEJHk2f742デフォルトの名無しさん
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 などの外部関数や変数の使用禁止
実行時間やメモリ使用量は問わない
メモリ解放不要
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;}
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
> たとえば、intのサイズに依存した値になるコードはNG
748デフォルトの名無しさん
2022/05/09(月) 12:36:28.70ID:vv2CegjB749デフォルトの名無しさん
2022/05/09(月) 12:37:51.56ID:b/WmNbyW 16bit, 32bit, 64bitで違う値を返すからNG
750デフォルトの名無しさん
2022/05/09(月) 13:09:06.67ID:uszWTY9x751デフォルトの名無しさん
2022/05/09(月) 13:38:49.81ID:b/WmNbyW 異なる値を返すからNG
何度書いてもNGなものはNG
何度書いてもNGなものはNG
752デフォルトの名無しさん
2022/05/09(月) 13:57:46.67ID:DLFHVgdp ~0U>>1 で int のサイズが同じ環境なのに違う値を返すケースある?
753デフォルトの名無しさん
2022/05/09(月) 14:07:18.41ID:PsDnm+L1754デフォルトの名無しさん
2022/05/09(月) 14:16:39.02ID:RDjTqhEj よくわからないパズルは他所でやれ
755デフォルトの名無しさん
2022/05/09(月) 14:20:50.13ID:vBDmnMzm 環境によってintの最大値が違うのに環境依存はまかりならんとかw
なら規格で保証されてる最大値(32767だっけ?)を返すしかなくね?
なら規格で保証されてる最大値(32767だっけ?)を返すしかなくね?
756デフォルトの名無しさん
2022/05/09(月) 14:22:28.17ID:SOqsBrLy757デフォルトの名無しさん
2022/05/09(月) 14:27:15.36ID:DLFHVgdp >ただし、"int" "float" "double" で表現できる値は十分大きいものとする
>事実上無限ビットあると考えて良い
これと
>たとえば、intのサイズに依存した値になるコードはNG
ここの兼ね合いがどうなってるのか文意が読み取れん
日本語難しい
>事実上無限ビットあると考えて良い
これと
>たとえば、intのサイズに依存した値になるコードはNG
ここの兼ね合いがどうなってるのか文意が読み取れん
日本語難しい
758デフォルトの名無しさん
2022/05/09(月) 14:29:47.27ID:4LSguCbO intの最大値ならINT_MAX
759デフォルトの名無しさん
2022/05/09(月) 14:31:48.86ID:HAgcLczC760デフォルトの名無しさん
2022/05/09(月) 17:07:31.36ID:A/IF7G4V761デフォルトの名無しさん
2022/05/09(月) 17:17:54.32ID:xCpkKQPu762デフォルトの名無しさん
2022/05/09(月) 17:54:22.09ID:L9YeT6Da お題スレでやってろ
763デフォルトの名無しさん
2022/05/09(月) 17:56:24.99ID:DvQbmhaz すぐにオーバーフローしたら大きな数が作れない ==> intは十分大きい
同じ値が返らないと数の定義にならない ==> 同じ値が返る
この2個の条件は必須
多倍長数が扱える言語であれば十分大きいは満たしているわけだけど
同じ値が返らないと数の定義にならない ==> 同じ値が返る
この2個の条件は必須
多倍長数が扱える言語であれば十分大きいは満たしているわけだけど
764デフォルトの名無しさん
2022/05/09(月) 20:08:33.86ID:wCt2CEsw >>735
証明してから使おうね‥‥
証明してから使おうね‥‥
765デフォルトの名無しさん
2022/05/10(火) 06:49:00.20ID:ME910CgO766デフォルトの名無しさん
2022/05/10(火) 07:07:25.40ID:/5WHE8tG767デフォルトの名無しさん
2022/05/10(火) 07:35:35.52ID:6pIq5VRX768デフォルトの名無しさん
2022/05/10(火) 09:46:20.51ID:MIazK+gu769デフォルトの名無しさん
2022/05/10(火) 12:27:13.81ID:KbKCNa1k770デフォルトの名無しさん
2022/05/10(火) 12:40:40.45ID:/5WHE8tG >>768
758にアンカーがないのでそこからしか読んでなかったが
「intを返す関数」と書いてあるのはどこか遡ってみた
で、742か
9E999とか書いてあるの見て思った
ア ホ か !
付き合ってらんね
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 という数でもある
数値としては
ビット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
約だけど
4.63718218*10^5171655945
774デフォルトの名無しさん
2022/05/11(水) 01:47:19.15ID:UPU3lDYb 100桁精度で計算してみた
2^17179869183 =
4.63718218509504584387714531277598505035321551306497981802919920776481\
1280740258379690028942685133666E+5171655945
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
これ以上は迷惑行為だからやめとく
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
が言える
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
https://rio2016.5ch.net/test/read.cgi/wild/1491662825/
https://rio2016.5ch.net/test/read.cgi/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:NvxU75Me784デフォルトの名無しさん
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:NvxU75Me787デフォルトの名無しさん
2022/05/12(木) 20:41:05.66ID:I3DTYm7n 2^^6は
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
であると書いているサイトがある。
2120038728808211984885164691662274630835...............8862693010305614986891826277507437428736
であると書いているサイトがある。
788デフォルトの名無しさん
2022/05/12(木) 21:01:03.42ID:NvxU75Me 有効数字1億桁とか下位1億桁なら簡単
全桁は不可能
全桁は不可能
789デフォルトの名無しさん
2022/05/12(木) 21:21:17.12ID:I3DTYm7n >>788
100桁ずつで良いからぜひぜひ
100桁ずつで良いからぜひぜひ
790デフォルトの名無しさん
2022/05/13(金) 00:43:07.89ID:66pxKN84 なぜかというと筆算を考えたらワカル
真ん中に行くにつれて桁の値を求めるのが一番積和の項数が大きいくて大変でありかつ
LHSとRHSの数のあらゆる桁が関わるから誤差に対してもチョー敏感、
真ん中に行くにつれて桁の値を求めるのが一番積和の項数が大きいくて大変でありかつ
LHSとRHSの数のあらゆる桁が関わるから誤差に対してもチョー敏感、
791デフォルトの名無しさん
2022/05/13(金) 08:40:43.88ID:DjujgnVD792デフォルトの名無しさん
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式に積和の都度上限と下限を見積もるしか無いんじゃないの
見えない敵の可視化
>>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();
テキストエディタの一括置換機能を使うよりもっとスマートな方法ってありますか?
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 になってしまうこともない
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+uY2w796デフォルトの名無しさん
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()してダイナミックレンジを抑えようとしている努力は認められる
しかしダイナミックレンジを抑えることが絶対的に誤差対策になるかというと以下略、
的な、
>誤差はループ内の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
上のerr_maxの更新をやってるんだろうけど運悪く(RADIXが10だとして
9999.9999999999999
みたいなケースで仮数部LSB程度の誤差が生じたら最悪
10000.0000000000000
か
9999.9999999999999
かどっちかわからなくなって整数部LSBより上が誤差に侵食され(ry
798デフォルトの名無しさん
2022/05/15(日) 01:29:26.60ID:Lu4IqK5o799デフォルトの名無しさん
2022/05/15(日) 05:48:25.74ID:f/5Hvrjj いつまでもFFTの話してるバカども、数論変換知らんの
800デフォルトの名無しさん
2022/05/15(日) 07:10:32.52ID:zbEPSoXa801デフォルトの名無しさん
2022/05/15(日) 07:13:35.68ID:zbEPSoXa802デフォルトの名無しさん
2022/05/15(日) 09:10:05.29ID:d9+IDznH 一時オブジェクト指向全盛でGoF本なんかが崇められてたとき
ここで質問してるやつにデザインパターン見直せとか糞レス返してる奴いたが
最近はオブジェクト指向じゃ生産効率上がらないことわかってGoF本のステータスも低下してるのか?
ここで質問してるやつにデザインパターン見直せとか糞レス返してる奴いたが
最近はオブジェクト指向じゃ生産効率上がらないことわかってGoF本のステータスも低下してるのか?
803デフォルトの名無しさん
2022/05/15(日) 09:19:34.13ID:duXfvT8B 今も昔も関係ない
GoF本をステータス視するのが間違ってる
デザパタを乱用するのも間違ってる
必要な人が必要なだけ黙って使うのがデザパタ
必要も無いのに手を出すことは間違ってる
今も昔もずーっと同じように間違ってる
GoF本をステータス視するのが間違ってる
デザパタを乱用するのも間違ってる
必要な人が必要なだけ黙って使うのがデザパタ
必要も無いのに手を出すことは間違ってる
今も昔もずーっと同じように間違ってる
804デフォルトの名無しさん
2022/05/15(日) 09:41:49.69ID:d9+IDznH オブジェクト指向じゃ生産効率向上しないことが明らかになって
そらGoF本の価値そのものが低下するわなww
new deleteなんて多用されたら困る分野なんていくらでもあるしな
そら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++でオブジェクト指向開発」を謳っている案件は漏れなくクソだ
少なくとも「C++でオブジェクト指向開発」を謳っている案件は漏れなくクソだ
812デフォルトの名無しさん
2022/05/15(日) 12:59:14.29ID:c/66LOo2813デフォルトの名無しさん
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おじさんみたいなもんだぞ
令和のstaticおじさんみたいなもんだぞ
816デフォルトの名無しさん
2022/05/15(日) 13:03:51.85ID:c/66LOo2817デフォルトの名無しさん
2022/05/15(日) 13:21:29.47ID:ymmVxVRO818デフォルトの名無しさん
2022/05/15(日) 13:27:39.30ID:0scjaaG3819デフォルトの名無しさん
2022/05/15(日) 13:28:20.62ID:+H3bKj0a OS全てを使うのやめることになるなw
820デフォルトの名無しさん
2022/05/15(日) 13:58:17.52ID:ymmVxVRO というかいまだにオブジェクト指向という低レベルの次元で争ってる時点で無能確定
0.99999....!=1に拘ると同じくらい頭悪い
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切り替えしたほうがパフォーマンスが出るという流れになってるとか
以前はマルチスレッドがもてはやされていたけど
最近はスレッドでは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の方が速いみたいな
列志向のDBの方が速いみたいな
830デフォルトの名無しさん
2022/05/15(日) 15:21:41.77ID:UBy5+e79 スレッドってスタック持ってるじゃん
OSや設定にもよるけど1MBとか これがバカにならないんだと思う
ちなみにJavaでは仮想スレッドというOSのスレッドと1対1対応させない並列化の仕組みが導入される
これで100万並列を実現できるんだと
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:AAncJnA8834デフォルトの名無しさん
2022/05/15(日) 16:07:17.76ID:VMVrIVgn 一般的な並列処理の定義だと同時に実行される複数のスレッドが必要だと思うけど。
835デフォルトの名無しさん
2022/05/15(日) 16:40:35.18ID:UBy5+e79836デフォルトの名無しさん
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
てめえのほざく大規模開発がChromium かいww
839デフォルトの名無しさん
2022/05/15(日) 17:33:52.78ID:dikgwIGH840デフォルトの名無しさん
2022/05/15(日) 17:35:04.93ID:d9+IDznH841デフォルトの名無しさん
2022/05/15(日) 17:39:18.19ID:d9+IDznH >>832
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
どういうおつむしてんだwww
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
>そもそもマルチスレッドと並列処理は無関係でしょ
どういうおつむしてんだwww
842デフォルトの名無しさん
2022/05/15(日) 17:55:59.75ID:d9+IDznH843デフォルトの名無しさん
2022/05/15(日) 18:08:14.42ID:UBy5+e79 >>840
そうそう昔からやってるんだよ
俺がいいたいのはそこ
CPUコア数がどんどん増えていくしマルチスレッドプログラミングが正義!
ってもてはやされていたけどパフォーマンスの問題があってスレッド使わない方式に回帰してるの
オブジェクト指向も同様にオブジェクト指向プログラミング登場以前の手法に回帰することはありえる
ということが言いたかった
スレッドの話を持ち出して混乱させてしまってごめん
そうそう昔からやってるんだよ
俺がいいたいのはそこ
CPUコア数がどんどん増えていくしマルチスレッドプログラミングが正義!
ってもてはやされていたけどパフォーマンスの問題があってスレッド使わない方式に回帰してるの
オブジェクト指向も同様にオブジェクト指向プログラミング登場以前の手法に回帰することはありえる
ということが言いたかった
スレッドの話を持ち出して混乱させてしまってごめん
844デフォルトの名無しさん
2022/05/15(日) 18:10:51.75ID:d9+IDznH >>819
OSを利用するために用意されたライブラリ群がオブジェクト指向的な、
メッセージをHand toする形のライブラリコールを利用してるからといって、
OSのカーネルそのものがオブジェクト指向で設計されてるとでも思ってんのか。
そもそもUnixにしろRTOSにしろオブジェクト指向とは縁もゆかりも無い時代からのOSなんだがな。
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"にレスしてんの
Cコードの固まりがオブジェクト指向てどこの誰が教えてくれたんだ?
xlibのあまりのコードの多さ見て
C++に目を付けたあげく、勝手に文法変えてWinMainなんて用意したのがVC++だろ
そもそも、
Windowsとは違い、X はOSではないことぐらい知っとけよw
おれは>>819の"OS"にレスしてんの
848デフォルトの名無しさん
2022/05/15(日) 18:53:16.28ID:6iIg86JO849デフォルトの名無しさん
2022/05/15(日) 18:56:02.19ID:d9+IDznH あれ?
WinMain用意したときてC++じゃなくてCじゃなかったかな?
WinMain用意したときてC++じゃなくてCじゃなかったかな?
850デフォルトの名無しさん
2022/05/15(日) 19:00:43.54ID:TK6qKU9x851デフォルトの名無しさん
2022/05/15(日) 19:10:33.61ID:d9+IDznH >>848
まだまだスレッド数が少ないCPUではスレッド使えるのに使わないのは悪だな
GPUだとスレッド立ち上げがパフォーマンス低下(処理速度でなくとも消費電力)に繋がる場面はすぐ訪れる。
1万データのMax検索するのに1万スレッド起動しても何の意味も無いから
回帰もなにも、パフォーマンス改善するから並列化を利用するのであって、
オブジェクト指向みたいな生産効率向上(という幻相)のためにパフォーマンスを犠牲にする、
エンドユーザーからみれば安かろう悪かろうでしかないコードスタイルの話とはわけが違う
まだまだスレッド数が少ない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をオブジェクト指向というのは拡大解釈だ。
画像処理プログラムやるとすぐわかるのが関数引数の数がすぐに肥大化すること。
これじゃ、関数コールの際、パフォーマンスが低下すること甚だしいんで、
structという一つのデータグラムにして、ポインタ渡すことと、その順番を
関数コールの一つのマナーにしてるだけだろ。
classはそこから生まれたとしても、
X11をオブジェクト指向というのは拡大解釈だ。
854デフォルトの名無しさん
2022/05/15(日) 19:33:03.96ID:p4xLOVEd xは知らんけどwindows apiのウィンドウ周りはc言語でオブジェクト指向だよ
ハンドル引数にして色んなタイプのウィンドウまとめて扱えるようにしてる
setwindowtext使えばタイトルバー持つウィンドウはタイトルが変わる
テキストボックスならテキストがかわるって具合に
ハンドル引数にして色んなタイプのウィンドウまとめて扱えるようにしてる
setwindowtext使えばタイトルバー持つウィンドウはタイトルが変わる
テキストボックスならテキストがかわるって具合に
855デフォルトの名無しさん
2022/05/15(日) 19:39:10.56ID:p4xLOVEd 上にも書いたけどそのstructのポインタをコード上は見えないけど渡してるのがメンバ関数ね
856デフォルトの名無しさん
2022/05/15(日) 19:42:29.90ID:TK6qKU9x857デフォルトの名無しさん
2022/05/15(日) 20:15:20.39ID:c/66LOo2858デフォルトの名無しさん
2022/05/15(日) 20:22:33.85ID:ymmVxVRO よく見たらこのスレの住人もオブジェクト指向マンと同じレベルで気持ち悪い奴だらけだった
859デフォルトの名無しさん
2022/05/15(日) 20:22:35.74ID:c/66LOo2 >>848
シングルスレッド非同期に回帰しつつあるのはJavaScriptがブラウザやNode.jsでそれの有用性を証明しまくってるからだな
最近だとC#Unityでゲームにおいてもシングルスレッド非同期は多用され始めてる
ロック関連によるバグやスレッド作成コストを回避出来るのが主な利点
シングルスレッド非同期に回帰しつつあるのはJavaScriptがブラウザやNode.jsでそれの有用性を証明しまくってるからだな
最近だとC#Unityでゲームにおいてもシングルスレッド非同期は多用され始めてる
ロック関連によるバグやスレッド作成コストを回避出来るのが主な利点
860デフォルトの名無しさん
2022/05/15(日) 20:46:16.10ID:9hg43hf0 その昔IBMがM:NモデルのPOSIXスレッドAPI(NGPT)を
Linuxカーネルに入れようとしてた記憶してるけど
どうなったんだっけ?
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も一緒
計算量見積れない処理は全部バックグラウンドスレッドに投げるだろ
Javascriptも一緒
864デフォルトの名無しさん
2022/05/15(日) 22:03:31.83ID:tH2IP/Jf >>857
そもそもunixのファイル関係だってread/writeとかの関数ポインタを含む構造体で管理してるから画面出力を簡単にディスクに出力できる
まんま仮想関数テーブルみたいなもんや
ID:d9+IDznH はだいぶレベル低いか単なるレス古事記だろうな
そもそもunixのファイル関係だってread/writeとかの関数ポインタを含む構造体で管理してるから画面出力を簡単にディスクに出力できる
まんま仮想関数テーブルみたいなもんや
ID:d9+IDznH はだいぶレベル低いか単なるレス古事記だろうな
865デフォルトの名無しさん
2022/05/16(月) 08:11:50.24ID:IfoxgD2F 「オブジェクト指向」とかいうバズワードで議論するなら、せめて定義ぐらいは提示しろよ。
「定義はwikipediaのオブジェクト指向プログラミング」あたりで議論したら?
「定義はwikipediaのオブジェクト指向プログラミング」あたりで議論したら?
866デフォルトの名無しさん
2022/05/16(月) 08:56:37.65ID:l25MG5nC >>863
jsはasync awaitもコルーチン利用したシングルスレッドだよ
jsはasync awaitもコルーチン利用したシングルスレッドだよ
867デフォルトの名無しさん
2022/05/16(月) 09:00:24.74ID:mycbCv2g OSからみるとシングルスレッドだけど、開発言語の補助でマルチスレッド風に記述できるようになっているのか
OSからみてもマルチスレッドなのか
OSからみてもマルチスレッドなのか
868デフォルトの名無しさん
2022/05/16(月) 09:40:06.21ID:I2zrNWyd 非同期機能が内部的にマルチスレッド使ってる可能性はあるよ
869デフォルトの名無しさん
2022/05/16(月) 09:55:17.75ID:l25MG5nC そもそも非ネイティブ言語の場合は実行環境によるとしか言いようがないが、async awaitのためにマルチスレッドが走ることはない
GCとか含めたら別スレッドが関与することはあるだろうけど
上でも言われてる通りスレッド立ち上げコスト削減も目的の一つだから態々その目的をふいにするような実装はしないだろう
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:l25MG5nC873デフォルトの名無しさん
2022/05/16(月) 11:10:07.16ID:I2zrNWyd874デフォルトの名無しさん
2022/05/16(月) 11:38:13.72ID:S4yLiTSd875デフォルトの名無しさん
2022/05/16(月) 11:55:16.75ID:l25MG5nC876デフォルトの名無しさん
2022/05/16(月) 12:21:21.64ID:ptnjik8+ C++の話しようぜ
877デフォルトの名無しさん
2022/05/16(月) 12:24:34.24ID:I2zrNWyd >>874
867の言ってることがわからんあの馬鹿を責めてくれや
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レベルで見たら単一スレッドで頭からケツまで動く保証はないっていうレベルの話がしたいのか?
こういう次元の話をしたいなら馬鹿としか思えないけど
そもそも言語の話に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効率化のためにマルチスレッドが使われる実装もある
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+j889デフォルトの名無しさん
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 ヾ 丶
"~、ソ:: :い:: : \_ ノ , ヾ 丶
/;,, : : : //::/: : 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:spPNFpZE894デフォルトの名無しさん
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++ の常識というものもあるし、
ある程度は共通の認識を作っておかないと会話が成り立たんだろう。
基本的にはふんわりした概念でしかないからこの場合にオブジェクト指向
という言葉をどういう意味で使うことにするのかはこの場で擦りあわせろや。
オブジェクト指向ってもんだから、関数 (メンバ関数) をメッセージとみなすかもしれないし、
メッセージキューのようなものを作るかもしれない。
プログラミング言語の言語機能をどのようにプログラム構成の方法論に当てはめるかは自由度はある。
その意味では >>891 の考え方は真っ当なものだ。
でも、 C++ では C++ の常識というものもあるし、
ある程度は共通の認識を作っておかないと会話が成り立たんだろう。
基本的にはふんわりした概念でしかないからこの場合にオブジェクト指向
という言葉をどういう意味で使うことにするのかはこの場で擦りあわせろや。
899デフォルトの名無しさん
2022/05/18(水) 12:12:57.18ID:KNHGZhRF >>895
そもそもos全体がオブジェクト指向だなんて誰も言ってないし
そもそもos全体がオブジェクト指向だなんて誰も言ってないし
900デフォルトの名無しさん
2022/05/18(水) 12:22:21.26ID:CvWTVaQG901デフォルトの名無しさん
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 =>{イベント処理});
みたいなコードを書いていたら、そのコードはオブジェクト指向ではないと解釈するの?
なわけないよね
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:I2H5iqao910デフォルトの名無しさん
2022/05/18(水) 22:00:38.20ID:AIFQ7kC9911蟻人間 ◆T6xkBnTXz7B0
2022/05/18(水) 22:04:01.32ID:1ADDPTHW struct HogeHoge {
void operator(const char *str) const {
std::cout << str;
}
};
HogeHoge hogehoge;
void operator(const char *str) const {
std::cout << str;
}
};
HogeHoge hogehoge;
912デフォルトの名無しさん
2022/05/18(水) 22:04:44.03ID:vRsLqKZH914デフォルトの名無しさん
2022/05/18(水) 22:09:27.02ID:V03o9uZn プログラムを書いた人がオブジェクト指向設計ですと言っているものまでオブジ
ェクト指向ではないと否定するのは愚策言ったが最後、ではオブジェクト指向で
はない何なのかを述べねばならなくなるからなgoto否定論者にbreakは実質goto
とかあまつさえgotoを使ったプログラムを書いてgoto否定論者に対して正当性を
主張した場合に生じる惨状と同じで社会スキル的な意味で避けるべき理由が十分あ
る
ェクト指向ではないと否定するのは愚策言ったが最後、ではオブジェクト指向で
はない何なのかを述べねばならなくなるからな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);
のような記述が当たり前になってきて有難い
uart1.write(data);
のような記述が当たり前になってきて有難い
921デフォルトの名無しさん
2022/05/19(木) 02:53:53.60ID:m2mVV8oP 組み込みってマクロ大好きだからオブジェクト指向の書き方と相性悪いと思ってたけど最近はそうでもないの?
それともそう描いたときのuart1やwriteもマクロなの?
それともそう描いたときの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);なんてのだってオブジェクト指向だし
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+2A926デフォルトの名無しさん
2022/05/19(木) 07:47:19.60ID:Kexh9zXI >>923
そう、Cの時代からオブジェクト指向はあったよな
そう、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にやれと命令している
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
https://mevius.5ch.net/test/read.cgi/tech/1619503348/
https://mevius.5ch.net/test/read.cgi/tech/1619503348/
934デフォルトの名無しさん
2022/05/19(木) 08:30:35.34ID:sZfr5xXW935デフォルトの名無しさん
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:tMeCiyz0938デフォルトの名無しさん
2022/05/19(木) 09:56:27.95ID:qAaVAzHk hogehoge書いた本人はたぶんそこまで考えていないよ
それこそ思い込みが激しいでは?
それこそ思い込みが激しいでは?
939デフォルトの名無しさん
2022/05/19(木) 12:33:57.63ID:Nz/+UK9H >>934
オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。主体はプログラマーとかCPUとかの指示・命令をする主体。
オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。主体はプログラマーとかCPUとかの指示・命令をする主体。
940デフォルトの名無しさん
2022/05/19(木) 12:47:07.52ID:JltPZRp+ まだやるの?
941デフォルトの名無しさん
2022/05/19(木) 12:58:56.65ID:NIcGv5m1942デフォルトの名無しさん
2022/05/19(木) 13:04:29.79ID:B0nB5mTs943デフォルトの名無しさん
2022/05/19(木) 13:06:45.60ID:YUgVG0pp944デフォルトの名無しさん
2022/05/19(木) 13:18:40.04ID:B0nB5mTs945デフォルトの名無しさん
2022/05/19(木) 13:20:01.49ID:z4apOfvE 何言ってんだこいつ
オブジェクト指向を知ってるからって偉そうにしやがって
オブジェクト指向を知ってるからって偉そうにしやがって
946デフォルトの名無しさん
2022/05/19(木) 13:52:35.01ID:gDUMsWXi947デフォルトの名無しさん
2022/05/19(木) 16:31:30.66ID:QDwYarvc948デフォルトの名無しさん
2022/05/19(木) 16:36:02.58ID:QDwYarvc949デフォルトの名無しさん
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++でも制約プログラミング流行るかな。
想定以外の使い方は許さない方が無難かね。Conceptsが普及すればc++でも制約プログラミング流行るかな。
953デフォルトの名無しさん
2022/05/20(金) 06:26:48.33ID:QdnN/13A プログラムの可読性は大事だが
それをアホへの迎合と勘違いしてはいけない
COBOLからの教訓だ
それをアホへの迎合と勘違いしてはいけない
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がチョコレートを受け取れる
>オブジェクト指向の「オブジェクト」は、主体・客体の「客体」として解釈するといい。
どういうこっちゃ……
オブジェクトを客体とみなすルールは必ずしもその客体が主体的に動くシチュエーションの禁止にはならない
客体が主体的に動くシチュエーションを禁止したかったら、複文の禁止までルールを推し進めねばならん
例:
進駐軍の兵隊オブジェクトに「Get chocolate」と言ったらそのオブジェクトがチョコレートの調達に走るのが妥当
この場合進駐軍の兵隊オブジェクトが主体的に動く(倉庫等に取りに行く)ことが気体される
進駐軍の兵隊オブジェクトに「Give me chocolate」と言って初めて発令の主体たるCPUがチョコレートを受け取れる
956デフォルトの名無しさん
2022/05/20(金) 08:26:59.91ID:biGldfGz どっちにせよチョコを取りに行ったりくれたりする主体は進駐軍の兵隊オブジェクト
さらに進駐軍の兵隊オブジェクトが倉庫の受付に「Get chocolate」言うかもしれんし
そうすると進駐軍の兵隊オブジェクトがチョコレートを受け取る主体にもなり得る
こういう入り組んだ解釈を一切禁止ということならやっぱ複文禁止しか……
それはそれで新しいプログラミングパラダイムが拓けそうやがどうかなあ……
さらに進駐軍の兵隊オブジェクトが倉庫の受付に「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乗根とかわけわかんない数値が入って来るんですがなんで?!
ボスケテ、
のコードについて質問なのですが
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:1bxUvska959デフォルトの名無しさん
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乗根とかが混じってくるのでつ∀`;)
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
(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)もマクロじゃなきゃできないけどデバッグが無理ゲーになるから使わん
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
あと文字列を結合してシンボルを合成するとか、
#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 指定してもインラインされない場合がある、とか勝手なことをするのか不明
どうして inline 指定してもインラインされない場合がある、とか勝手なことをするのか不明
972デフォルトの名無しさん
2022/05/21(土) 07:00:24.57ID:LKZ4AMgL #define AAAA xxxx
#include "****"
#undef AAAA
#define AAAA yyyy
#include "****"
#undef AAAA
#include "****"
#undef AAAA
#define AAAA yyyy
#include "****"
#undef AAAA
973デフォルトの名無しさん
2022/05/21(土) 07:11:17.89ID:DcWHGr0j974デフォルトの名無しさん
2022/05/21(土) 08:09:54.00ID:0jWT+RR4 >>973
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に inline を無視してコンパイルしなおすなんて言語道断、コンパイラ作者の独善だね
閾値を決めて閾値を超えてとまらないことがわかったら「エラーを出してコンパイルを止める」べきで、勝手に 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はあるんだし
既に独自実装のalways_inlineや__forceinlineはあるんだし
978はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 11:13:07.39ID:JD6rd3hb C++ は見かけ上の動作が仕様通りならどういう機械語を生成するか規定しないのが原則だから……。
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)
言語仕様的には constexpr やら consteval も定数式として使える範囲を拡大しただけで、生成される機械語に対しては要求をしてない。
(想定はしていると思うけど。)
979デフォルトの名無しさん
2022/05/21(土) 11:49:29.76ID:DcWHGr0j 翻訳系の仕事はソースコードの意味を変えずにオブジェクトコードに翻訳することで(ry
狭義のアルゴリズム(シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし
狭義のアルゴリズム(シングルスレッド条件、有限ステップで結果出力)の入力と出力の関係が翻訳前後で同じ結果になるならおk
最適化はボランティア活動みたいなもん
だいたいコルモゴロフ複雑性的な意味で一意な解など一般に無いし
980デフォルトの名無しさん
2022/05/21(土) 12:00:28.50ID:DcWHGr0j ていうかDFTと逆DFTおよび4n乗根のDFTと逆DFTができましたよ
https://ideone.com/uK9v58
n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、
https://ideone.com/uK9v58
n語のフーリエ変換にメモリを2n語使って良いなら話は簡単やが
>>695 のソースコードはn語で済ませているから黒魔術を駆使しているに違いない
>>695 の作者は漏れよか頭良すぎ(いやいい意味で、
981ハノン ◆QZaw55cn4c
2022/05/21(土) 14:44:04.21ID:0jWT+RR4982デフォルトの名無しさん
2022/05/21(土) 14:47:32.33ID:is6KmnjI あくまでもヒントじゃないのか
983デフォルトの名無しさん
2022/05/21(土) 15:01:05.79ID:0jWT+RR4 >>982
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、inline に限っては強制力を伴うべきでしょう、#define マクロを葬り去りたいのなら
そんな曖昧な態度だから、マクロによるインラインが跋扈してしまうんです、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重ループについてメモリを空けつつつつがなく進められるというしくみ(多分
>>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 の例外としての意味がメインだと考えるべき。
inline は ODR の例外。 また、異なる翻訳単位の同じ定義が統合されることを保証する。
これは C++98 のときからそう。
インライン化が望ましいことの指示であるとは書いてあるけど、
今では変数にも inline を付けることが出来るようになったのはもはや inline は ODR の例外としての意味がメインだと考えるべき。
991デフォルトの名無しさん
2022/05/21(土) 16:29:48.48ID:9lV47uLv >>981
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど
展開を強制したいならforceinlineあるやんけ(メジャーなコンパイラの拡張だけど
992デフォルトの名無しさん
2022/05/21(土) 16:47:52.13ID:x3bK44aY onlineも導入すべき
993デフォルトの名無しさん
2022/05/21(土) 17:00:45.58ID:+x02zxlN994ハノン ◆QZaw55cn4c
2022/05/21(土) 17:25:58.12ID:0jWT+RR4995はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 17:56:26.14ID:JD6rd3hb >>994
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。
① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!
inline というキーワードの選択が不自然なのはわかるが inline はインライン化の指示というよりは
インライン化に都合のよいように制限する指示と考えるとそんなに不自然でもない。
① C/C++ は翻訳単位ごとに個々にコンパイルしてからリンクする手順を取る
② 他のコンパイル単位にある定義の内容はわからんのでインライン化するためには翻訳単位の中に定義がある必要がある
③ ヘッダに関数定義を書きたい
④ ヘッダに定義を書くと ODR 違反やろ
⑤ じゃあ ODR の例外を設けよう。 inline って付けたら ODR の例外な!
996デフォルトの名無しさん
2022/05/21(土) 18:53:36.34ID:0jWT+RR4997はちみつ餃子 ◆8X2XSCHEME
2022/05/21(土) 19:24:52.72ID:JD6rd3hb >>996
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。
その上で現在では LTO が普及したのでどうでもよくなったけど。
外部に見せる用の実体のある定義は実際に用意される実装が多いと思う。
でも、その外部では実体を参照することは出来てもインライン化できないよね、各翻訳単位で定義が存在する必要があるよねということを言ってる。
その上で現在では LTO が普及したのでどうでもよくなったけど。
998デフォルトの名無しさん
2022/05/21(土) 20:03:09.89ID:0jWT+RR4 >>997
なるほど、やっと理解しました
LTO: Link Time Optimization ですか‥‥、トラブルの元で胡散臭いと思っている私は古い人なんでしょうね‥‥、.obj がコンパイラ固有になるのも嫌ですし
なるほど、やっと理解しました
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)ようですね
これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが
村上龍の「5分後の世界」では、略語は使うな、ちゃんと元の言葉を使え、と教育されていますね
ジョージ・オーウェルの「1984」では、略語は謀略的な意味で使われる(小説末尾の appendix: New Speak 解説のカテゴリーB)ようですね
これらに影響されて、略語を連発するのは望ましくないという言語観を私は持っていますが
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 36日 11時間 35分 33秒
新しいスレッドを立ててください。
life time: 36日 11時間 35分 33秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【鹿児島】5キロ2000円台ではコメ作りを続けられない――生産者不在で乱高下する米価。消費者も納得できる適正価格は実現するのか?★4 [シャチ★]
- 【SNS】「なぜうちの子に傘をささずに帰らせたのですか」 理不尽な保護者に困惑…教頭の対応が目からウロコ [少考さん★]
- デパ地下でスイーツを買ったら、紙袋代「20円」を請求された! 有料化は「ビニール袋」だけなのに、どうして紙袋まで有料に? [ぐれ★]
- 永野芽郁「どんなことがあろうとファイティングポーズをとりながら向き合っていこうかな」はにかみながら誓った“女優継続スピーチ”★2 [Ailuropoda melanoleuca★]
- 「タトゥーで料理不潔」「海なし県なのに海鮮やるな」25歳女将が語る誹謗中傷への本音「じゃあ日本でフランス料理食べられませんね」★2 [muffin★]
- 【MLB】436億円契約の報道も… ヤクルト・村上宗隆の“リアル評価” 最低6球団の争い、米熱視線「本物のパワー」 [冬月記者★]
- 日本政府「たすけて!デジタル赤字が7兆円まで急拡大してるの!国民はAmazonやYouTubeを使わないでください!!!」 [949681385]
- 【ジャップ悲報】コンビニ業界、人手不足が深刻で完全に終わる。仕事量多くて低賃金で常勤がまいばすドラストに逃げる。スキマバイト頼り [803137891]
- 米農家「米2000円台とかほんま無理やて」日本人「嫌なら農家辞めろ」 [834922174]
- 河野太郎「コメ価格が2000円に下らなければ関税ゼロで5kg555円の米を輸入解禁する」 [249548894]
- ▶オケラというゴミを見下して楽しむスレ
- 🏡EZ do dance💃😎