1 名前:デフォルトの名無しさん [2022/02/19(土) 11:56:42.14 ID:kSnJ/KwP.net] 前スレ C++相談室 part158 https://mevius.5ch.net/test/read.cgi/tech/1636969758/
51 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:38:51.77 ID:5nwqcAs1.net] 参照オブジェクトを処理するのに 何故か内部でスマポ使いだしたとしたら 予めそいつの代わりに謝っておいてやろう。スマポ。
52 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:40:31.26 ID:5KrZlkth.net] 共用体は特定のアーキテクチャで上位下位とか分けるのに使うのが多かったけど、上に書いたようにstd::variantで使うので主にメモリ節約だと思う ところで↓でコメントにしてるエラーはなんか悔しくない?どうしてこういう仕様なんだろう? #include <iostream> using namespace std; struct s { int a; }; int main() { s o; cout << sizeof(o.a) << endl; cout << typeid(o.a).name() << endl; cout << sizeof(int) << endl; cout << typeid(int).name() << endl; cout << sizeof(s::a) << endl; //cout << typeid(s::a).name() << endl; // error return 0; }
53 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:44:49.03 ID:BLiyeQro.net] sjis/utf8、utf16、utf32を一緒くたに扱う文字列クラスを作った時にそれぞれの型のポインタを共用体で持たせたな キャストするより楽だったからw
54 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 12:49:58.81 ID:EDNjM2Vr.net] >>48 それはお前の経験が足らんだけ >>34 が言うようなケースでも使うよ
55 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 13:44:10.67 ID:MjuaBSm2.net] >>51 これ何であかんの?
56 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 13:59:07.64 ID:uAn4231w.net] >>36 アセンブラでアライン覚えて来い青二才
57 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 15:04:19.29 ID:aLhaBLLn.net] 共用体使うとシフト演算しなくていいし、 最近のCPU(っても20年まえぐらい)から1ビット操作命令もあるし、パフォーマンスがいいと思うぜ
58 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 18:12:12.24 ID:8IAIbIwN.net] >>54 std::variant見てきた ただのunionラップクラスじゃねーか
59 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 19:01:05.55 ID:uUEkIMOM.net] >>58 > ただのunionラップクラスじゃねーか それの何が不満なんだよw
60 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 21:42:58.02 ID:8IAIbIwN.net] ただのunionラッパーをunionの活用例かのような言い方をした >>54 に対する不満だ
61 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 21:47:59.16 ID:uAn4231w.net] 米大統領と密談した「IQ1200の金星人」ヴァリアント・ソーとは ...
62 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 22:02:46.59 ID:uUEkIMOM.net] >>60 意味わからんw ラッパーだと活用例じゃないとでも?
63 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 22:37:27.22 ID:V67/tnWS.net] スマポの記述量が長い問題って皆どうしてんの?
64 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 22:52:41.23 ID:uSEnVnLU.net] C++のstd::variantとほぼ近い、 Rustのenum(=格納付きenum=タグ付きunion)を比べると 圧倒的にRustのenumが使いやすくてRust言語の核心部分となっていることからもわかるように C++ではその分野の言語サポートが弱いんだよな
65 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 22:54:00.38 ID:uSEnVnLU.net] >>63 その件もRustが上手いことやってるよな
66 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 23:01:58.00 ID:V67/tnWS.net] >>65 そうなのか 正直あんまり触ったことないんだが、そういう話なら触ってみようかな
67 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 23:24:26.58 ID:5KrZlkth.net] Rustのことはスレ
68 名前:違いだけど、言語機能としてどこまでサポートするかは、分かりやすさと直結してると思う C++のstd::variantの方が分かりやすいと思う人もいれば Rustのenumの方が分かりやすいと思う人もいると思う [] [ここ壊れてます]
69 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 23:44:12.87 ID:Y4d5gioW.net] >>67 C++には十分なパターンマッチング機構がないからタグ付き共用体(Rustではenum)を便利に生かせないのが大きい C++よりRustは記述がしやすいと言われている原因の大きな一つとなっている
70 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 23:47:42.47 ID:5KrZlkth.net] ほんとに馬鹿ばかりだな・・・ そんな話はしてないしスレ違いだと言ってるだろ・・・ https://mevius.5ch.net/test/read.cgi/tech/1643289587/
71 名前:デフォルトの名無しさん mailto:sage [2022/02/20(日) 23:59:35.38 ID:uSEnVnLU.net] >>52 で主にメモリ節約が目的と言っているようだが それはC++の言語によるサポートが貧弱すぎるための特殊な悲惨な状況であって 他の言語ではむしろvariantこそがプログラミングの中心、という話ではないか
72 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 00:04:14.70 ID:NpsKB2au.net] 馬鹿には分からないかもしれないけど、嫌なら自分で作ればいいという世界なんだよ
73 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 00:06:46.53 ID:Jx3FjySw.net] 昔は全部ゼロから作ってたな
74 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 00:10:21.16 ID:lBTJyZA6.net] >>71 それは無理 様々な言語がなぜ言語レベルでパターンマッチングなどをサポートとしているかというと 言語レベルでサポートしないと無理なことが多数あるため C++しか書いたことがない特殊な人でなければこれを理解することができる
75 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 00:12:34.69 ID:NpsKB2au.net] https://mevius.5ch.net/test/read.cgi/tech/1643289587/
76 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 00:19:21.75 ID:NpsKB2au.net] ところで>>52 の > ところで↓でコメントにしてるエラーはなんか悔しくない?どうしてこういう仕様なんだろう? への回答はないの?
77 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 01:59:03.04 ID:dmBIFY6O.net] &s::aの型がint s::*な以上s::aの型はintにはならんからじゃない? sizeofだけ許されてるのがわからん
78 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 02:21:18.10 ID:NpsKB2au.net] ありがとう。全く同じ感想だわ。わからんよね。 #include <memory> #include <cxxabi.h> // for gcc #include <iostream> using namespace std; const char* demangle(const char* name) { return abi::__cxa_demangle(name, NULL, NULL, NULL); // leaks } struct s { int a; }; int main() { cout << sizeof(&s::a) << endl; cout << demangle(typeid(&s::a).name()) << endl; cout << sizeof(s::a) << endl; //cout << demangle(typeid(s::a).name()) << endl; // error return 0; }
79 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:22:55.36 ID:QJQOoC8g.net] PPoEのことピッポエって読んでたらめっちゃバカにされてくやしいです。 どうしたらいいですか?
80 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 08:24:57.39 ID:wtPLXwv8.net] ボコしたら?
81 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 19:45:02.12 ID:K+YQY1en.net] 複数のプロセスから同時に同じファイルに書き込むにはどうすればいいですか? ofstreamで実験(a.exeとb.exeを同時に起動して、同じtxtに10行ずつ書き込み)してみましたが、 a.exeで書き込んだ内容が10行並んだ後に、b.exeで書き込んだ内容が10行並ぶような結果になりました。 書き込んだ順に並ぶようにするにはどうすればいいですか?
82 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 19:50:32.28 ID:NpsKB2au.net] OS固有の方法を使え
83 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 19:56:04.55 ID:gBEocJIs.net] fprintf()とかの標準ライブラリだとcloseかflushするまで書き込みは反映されない 書き込みのタイムスタンプ順を保証するとなるとかなり面倒くさい 毎回flushするとかcloseするとかしないといけない 書き込んだ内容がもう一方のプロセスに上書きされて消えたりとかの問題も出てくる
84 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 20:03:35.84 ID:K+YQY1en.net] ありがとうございます。 保証とまでは求めてなくて、だいたい秒オーダー程度の順でぱっと見の違和感なければいいかなと思っていますのでひとまずflushを入れて実験してみます。 (多少の順番ずれは問題ないですが、上書き消滅だけは絶対問題なので)
85 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 20:06:09.78 ID:9Efuu0ky.net] ロックしろ
86 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 20:08:56.82 ID:Hi57Ra7S.net] ・別々のファイルに吐き出しておいて後からマージ(リアルタイム性不要なら一番楽) ・書き込みの時に毎回排他ロックする(くそ遅い、書き込みが稀ならあり) ・書き込み専門のプロセスを設けてプロセス間通信(正しいけどめんどくさい)
87 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 20:22:59.51 ID:M/x1eSML.net] >>80 書き込みプロセスを集約した方が制御はしやすいわ
88 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 21:24:26.76 ID:NpsKB2au.net] こんなC++erばかりではもうダメだな・・・・ 質問は最悪だけど、確認も回答もやばい 混ざった行が出来たり上書き消滅する日がいつか来る
89 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 21:47:29.24 ID:2lTMmgDc.net] >>87 ロックを使っても行が混ざるのかーすごいなー
90 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 21:55:16.21 ID:Gf4lGfIx.net] ロックの仕方によるから 極論文字単位にロックしたら混ざるし
91 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 22:05:20.94 ID:NpsKB2au.net] 真面目に相手をするなら、質問の前提を明確にしないといけないから。 聞きたいことだけ書いてきて、状況が全く分からない質問に対して、あれこれ書いても意味はなく、最初にしないといけないのはまず確認。 環境やら現象やら具体的なコード、最終的なゴールがどこか、当たり前のモノが全て抜けていて、未だに8割方見えていない。
92 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 22:27:52.22 ID:2lTMmgDc.net] 質問に対して状況を確認せず真っ先に>>81 で抜けてる回答してる君がいうと説得力があるね
93 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 22:40:17.44 ID:NpsKB2au.net] あれはいつものWIN32APIスレへの誘導しか意味してないw .exeが出て来た時点で萎える
94 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 23:11:26.10 ID:Vo68A3hI.net] 同時には無理やろ〜
95 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 23:17:32.27 ID:NpsKB2au.net] // std::endlでflush()。時間測定と1行/秒機能付きバッファ懸念OS順序懸念あり。 // 混ざった行が出来たり上書き消滅してもいい人向け。 #include <iostream> #include <fstream> #include <chrono> #include <thread> using namespace std::chrono; template<typename T, typename CallbackFunc, typename TargetFunc, typename... Args> void measure(CallbackFunc callback, TargetFunc f, Args... args) { auto start = high_resolution_clock::now(); auto result = f(args...); auto end = high_resolution_clock::now(); callback(result, duration_cast<T>(end - start).count()); } int write_to_file(const char* path, const char* sts) { std::ofstream f(path, std::ios_base::app); for (int i = 0; i < 10; ++i) { f << sts << std::endl; //std::this_thread::sleep_for(1s); } return 0; } int main(int argc, char* argv[]) { int ret = -1; measure<microseconds>( [&](auto result, auto time) {ret = result; std::cout << time << std::endl; }, &write_to_file, "hoge.txt", (argc > 1 ? argv[1] : "hoge")); return ret; }
96 名前:デフォルトの名無しさん mailto:sage [2022/02/21(月) 23:19:40.75 ID:NpsKB2au.net] 書き忘れた。異常系なし。
97 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 08:35:20.17 ID:4AnTGrM3.net] セマフォかミューテックス使えばいいだけやん
98 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 08:52:30.71 ID:uvLrfhT4.net] 偉そうなこと言っといて>>83 の上書き禁要件ガン無視してるのは草
99 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 08:56:43.07 ID:vnxKrxaR.net] 消滅って実際あるもんかね? unix系はなさそうな気がする
100 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 10:16:04.97 ID:fFHtSmjB.net] 標準ライブラリの仕様で上書き消滅しないって保証されてれば問題ない 保証されてなければ20プロセスぐらいからchrono::system_clockのタイムスタンプとloopcountを出力させる負荷テストしてみて判断するしかない
101 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 10:38:46.92 ID:3Vwbzil/.net] >>99 > 保証されてなければ20プロセスぐらいからchrono::system_clockのタイムスタンプとloopcountを出力させる負荷テストしてみて判断するしかない バカなの? 普通に排他制御すればいいだけだろ
102 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 12:32:42.83 ID:G6nBeheJ.net] 俺は最初にWIN32APIスレへの誘導の意味で、OS固有の方法と書いてるよw ソースコードは回答ではなく、本来質問時に提示されるべき叩き台を俺がわざわざ書いただけw ソースコードが分からないアホ向けに説明しておくと、OSに書き込みが発生するのは実際にファイルに書き込むAPIを叩いたとき(/システムコールかそれに準ずるものを呼んだ時(以下略))なので、それはバッファをフラッシュするタイミングになる。 それが発生するのは普通fに文字列を書き込むときバッファが溢れるかendlの呼び出し中(ライブラリの実装に依存する)。 文字列の長さがバッファから溢れない限り、endl中のAPI呼出が重なるかどうかが問題になる。 各プロセスでAPI呼出が運悪く重なった場合、ここからは一度に書き込まれる量と、OSのファイルシステム実装に依存するが、 混ざった行が出来たり上書き消滅する可能性が生まれる。 それが問題な場合は、主にOS固有の方法でIPCかファイルロックを行う必要がある。 なお要件が明確でない状態で何かを言う必要は全くないw
103 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:18:13.18 ID:/94dJWyd.net] グダグタと意味不明な長文書いておいて > なお要件が明確でない状態で何かを言う必要は全くないw って笑いでも取ろうとしてるのか?
104 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:22:26.14 ID:uHuVwSWm.net] > 複数のプロセスから同時に同じファイルに書き込む > 書き込んだ順に並ぶようにするには 同時に書き込んでるのに書き込んだ順が決まるわけないやろ〜
105 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:30:20.16 ID:Xp3JBKU/.net] 何したいのか知らないけど>>85 で出てるようにタイムスタンプ付けて別のファイルとして書き出した後、 メモリ上でマージするなり第三のプロセスでマージしたファイルを書き出すなりするのが一番楽だな
106 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:33:11.97 ID:/94dJWyd.net] >>103 秒オーダーで揃ってりゃいいって話だから多少の前後は気にすんな
107 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:39:15.40 ID:uHuVwSWm.net] ファイルOpenして書き込んですぐCloseするだけやん。
108 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 13:46:45.07 ID:G6nBeheJ.net] ほら何もかも要件の問題だろ?w 馬鹿なんだよ質問者がw
109 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 16:11:10.10 ID:BY2+Ruab.net] 馬鹿が馬鹿を笑う地獄絵図
110 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:29:07.28 ID:3uW2JHvs.net] 質問のレベルが低くて恐縮ですが、クラスにおいてメンバ変数は各インスタンスに対してメモリが確保されますが、メンバ関数も各インスタンス毎にメモリ確保されるんでしたっけ? メンバ関数はクラスで共有されるんでしたっけ?
111 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:44:13.67 ID:G9HkpoRr.net] 共有されてて、呼び出すときにインスタンスのポインタが渡ります。
112 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 21:53:10.29 ID:aBkA6PYf.net] >>109 通常のメンバ関数の実体はそのクラスで1つ(共有される)でインスタンスのメモリ領域は消費しないが、 virtual関数はオーバーライド動作のためにインスタンスにポインタが確保される
113 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:27:23.48 ID:Ui5AoFrq.net] >>110 >>111 ありがとうございます! virtualはともかくメンバ関数を書く際にあまりその点は気にしなくてよさそうですね、安心しました
114 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:27:30.88 ID:Ui5AoFrq.net] >>110 >>111 ありがとうございます! virtualはともかくメンバ関数を書く際にあまりその点は気にしなくてよさそうですね、安心しました
115 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:31:03.90 ID:Ee0G2C5Q.net] main(exe)とlib(dll)の両方から参照されるクラスHoge(非dll・シングルトン)のインスタンスをmainとlibで共用する方法はないですか。 軽く調べてみたらHogeをdll化するかHogeのラッパーdllを作れと出てきたのですが 作らなくても実現出来る方法があれば教えてください
116 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:31:52.69 ID:Ee0G2C5Q.net] main(exe)とlib(dll)の両方から参照されるクラスHoge(非dll・シングルトン)のインスタンスをmainとlibで共用する方法はないですか。 軽く調べてみたらHogeをdll化するかHogeのラッパーdllを作れと出てきたのですが 作らなくても実現出来る方法があれば教えてください
117 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:32:39.84 ID:SYhqe6to.net] virtualも継承されたクラスごとにポインタサイズの隠しフィールドができるだけで virtual関数が増えてもクラスサイズは変わらないんじゃ?
118 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:38:55.24 ID:SYhqe6to.net] >>114 >>115 C++17以降ならstatic変数がある それ以前ならtemplate関数を使ってどうにかごまかせばいける class C{}; inline C c=...; //C++17以降 template<int...>C& _dummy_func(){static C _back=...; return _back;}static C&c=_dummy_func();
119 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:39:30.53 ID:G6nBeheJ.net] ポインタサイズじゃないよ
120 名前:デフォルトの名無しさん mailto:sage [2022/02/22(火) 22:39:57.82 ID:SYhqe6to.net] static変数じゃねーわ inline変数
121 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 01:56:47.51 ID:vCUIsgzX.net] https://godbolt.org/z/P497GqYc7 struct s { virtual void* func(){return this;} virtual void* func2(){return this;} }; struct s2: public s { void* func(){return this;} void* func2(){return this;} }; s obj; s2 obj2; int main() { s& o = obj2; o.func(); o.func2(); return 0; } gcc/clang/msvcどれもポインタサイズだった模様w >>114 についてはまた同じ馬鹿の質問だろうけど論外w コードで示せアホw 「main(exe)とlib(dll)の両方から参照される参照されるクラスHoge(非dll・シングルトン)」???? クラスHogeはシングルトンなのかそうでないのか? lib(dll)から参照されるクラスHoge(非dll)とは? どうして毎日こんな馬鹿な質問が出来るのか分からない。 仮にDLLが遅延ロードされず、シングルトンで、インスタンスの定義だけEXE側に入れたいというアホな要件を思いついた馬鹿がいるのだとしたら、dllexportを使わず、モジュール定義でやれ。 なお、inlineメンバ変数を使ってもdllexpportsならDLL側にインスタンスの定義が入る。
122 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 09:00:40.51 ID:stefKGxD.net] ヒント: 仮想継承
123 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 13:46:51.78 ID:UVDZkpPA.net] >>96 そうだねミューテックス使うね
124 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 13:49:09.36 ID:UVDZkpPA.net] Windowsなら名前付きミューテックスでファイルのオープンからクローズまでを排他するところやが C++の標準規格でどうなっているのかわ知らん、
125 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 14:13:27.06 ID:UVDZkpPA.net] 複数のプロセスから同一ファイルに書き込んで書き込み内容の順序(位置)を制御する方法は 1. プロセス間の同期側で順序を担保する(イベント等による通信を併用 2. ファイルのアクセス権を握ったプロセスがファイルの中身を読んで書き込み位置を決める 3. ファイルのアクセス権を握ったプロセスがファイルを追記オープンして単純に追記していく の大きく分けて3つの方法が取れる 普通は3が多いという印象 ※ 個人の感想です 辞書化とかが必要なら専用のプロセスが適宜ファイルのアクセス権を獲得してやったらええ、
126 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 14:58:09.38 ID:lSALbkfN.net] ちょっと処理が重なったくらいでデータが消えるようなコンピュータはまともに動かんと思うよ
127 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:17:24.74 ID:A1VwjaQk.net] そんなアホなことせんでもOSが同期取ってくれるやろ…
128 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:43:04.84 ID:vCUIsgzX.net] >>122-126 2日前からアホ質問者不在のまま要件不明案件でお蔵入りした質問を今更ほじくり返して質問者本人ですか?w
129 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 15:53:59.19 ID:A1VwjaQk.net] 頓珍漢な回答して相手にされないからっておれに当たるなよ。
130 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:03:22.40 ID:vCUIsgzX.net] 回答してないけどw >>122-126 は全て本人確定かなw
131 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:04:56.99 ID:A1VwjaQk.net] >>129 >120
132 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:14:02.97 ID:vCUIsgzX.net] >>130 >>120 も回答じゃないけどw
133 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:42:08.43 ID:lSALbkfN.net] 126と86は俺だけど…
134 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:45:52.89 ID:UVDZkpPA.net] >>126 kwsk 複数プロセスから同一ファイルに対する同時書き込みオープンは当然できなず、後から開こうとしたプロセスはオープンに失敗する その場合失敗したプロセスは(エラー要因を調べた上で)一定時間(例えばT秒後)後にオープンを再トライする必要がある んまーそう作っても良いが(ファイルアクセス権獲得待ちをいつでも簡単にやめられるメリットがある)が、 失敗の度にT秒消費するというのをミューテックスを使えば短縮できる
135 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:51:07.27 ID:A1VwjaQk.net] オープン失敗したら100ms開けてリトライで十分だろう。待機が嫌なら非同期で実装するだけ。 T秒消費するというが同期オブジェクト使っても変わらん。
136 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:54:41.39 ID:UVDZkpPA.net] >>134 >T秒消費するというが同期オブジェクト使っても変わらん。 間違い。 同期オブジェクトを使えばプロセスAがファイルへのアクセス権を行使中、 プロセスBがアクセス権が回ってくるのを待っている状態で プロセスAがアクセス権を放棄した瞬間にプロセスBにディスパッチされる ことが気体できる 無駄というものが最小限で済む
137 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 16:58:57.65 ID:lSALbkfN.net] 同期オブジェクトってそんな低レベルで存在しとる概念なのかね
138 名前:はちみつ餃子 mailto:sage [2022/02/23(水) 17:06:44.05 ID:o4j3GXmb.net] 同期オブジェクトを機能させるためにスケジューラに負担をかけるので 待機時間が特に短いことがわかってるならスピンロックのほうが性能は出る可能性はある。 でもスピンロックを正しく実装できる気がしない。 同期のための仕組みを用意してくれてるんだからそれを使っておくのが基本的には楽だよ。 待機時間 100ms のところを 10ms とかに短縮できたところでなんだというんだ。 それが必要な場合もあるといえばあるけど、どちらがより良いかは状況による。
139 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:12:13.15 ID:UVDZkpPA.net] >待機時間 100ms のところを 10ms とかに短縮できたところで プロセスAがファイルのアクセス権を握り続けている間、 プロセスBがファイルシステムを10 ms周期でcallすることになるな!
140 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:17:22.47 ID:A1VwjaQk.net] 消費ってCPUリソースの話じゃないのか。 書き込みに100msの待機が問題となるようなリアルタイムな要件があるならともかく ファイルの書き込みなんていう遅いものは非同期の実装に頭使うほうが効率的だろう。
141 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:21:14.59 ID:UVDZkpPA.net] 非同期の実装を最小の時間ロスで安全に行うものにするにはミューテックスによる同期が必要なわけで(以下無限ループ
142 名前:はちみつ餃子 mailto:sage [2022/02/23(水) 17:24:49.92 ID:o4j3GXmb.net] スピンロックは沼なんで、 OS が用意してくれとる仕組みを使えってことで FA 。
143 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:26:48.01 ID:A1VwjaQk.net] >>136 同期は機械語レベルの話じゃけんのう。 尻拭いの案件でよく見るが間違ってもCでグローバル変数でif文で切り分けとかしないでくれよ。 OSが提供する同期オブジェクト使うんだ。
144 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 17:30:05.39 ID:lSALbkfN.net] タイミング合わせるために工夫をこらしたプログラムってのは見ていて嫌な気分になるのう 8bit機なら全部ビジーウェイトでいいんだけど
145 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 18:04:03.45 ID:vCUIsgzX.net] >>
146 名前:94 のコードでコメントを外してビルドし、端末を2つ開いてほぼ同時にそれぞれ ./実行ファイル名 hoge1 ./実行ファイル名 hoge2 で実行してやると分かるけど、オープンはできていて書き込みも行われるよ ポーリングで見ようがロックできなければ>>101 の解説どおり危険な瞬間(同時にAPIが呼ばれる瞬間)は必ず発生してしまう。 ポーリング間隔0をスピンロックとかビジーウェイトと言ってるのだと思うが、用語の使い方は置いておいて、0でも同様。 [] [ここ壊れてます]
147 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 18:13:52.21 ID:A1VwjaQk.net] 8bitのCPUなんて命令の消費clockでタイミング取るとか普通やん
148 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 19:32:25.60 ID:+QDyyf8g.net] ウェイト気にするんだったらI/O周りでガチャガチャするより書き込み要求をキューで受け付ける専門プロセス用意しろよ
149 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 19:34:41.10 ID:lREuCbZK.net] >>117 ありがとうございます、inline変数を試してみます
150 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 19:41:23.72 ID:lREuCbZK.net] >>120 コードは手元(スマホ)にはないので貼れないです、すみませんが日本語で理解してもらえると助かります。 クラスHogeは書いている通りシングルトンです。 よく分かっていませんがHogeは静的ライブラリ?というのでしょうか。 visual studioでいうと、 Hogeが入っているプロジェクトと mainのプロジェクト、 dllのプロジェクトの3つがあって mainとdllのプロジェクトの両方が「参照」でHogeが入ってるプロジェクトを依存関係?構築してます。
151 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 20:42:20.48 ID:vCUIsgzX.net] >>148 日本語で説明できてないんだよw 今も確認が必要になってるだろ 問題は何? シングルトンオブジェクトが、プロセス内に2つ(exe側とdll側)あること? dllは遅延ロードするの?
152 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 20:50:56.75 ID:vCUIsgzX.net] >>146 結局ここまで全部要件の問題ということで・・・
153 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:10:52.14 ID:A1VwjaQk.net] Hogeのヘッダとlibファイルをmainとdllのプロジェクトに追加するだけの話じゃないのか。
154 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:37:03.52 ID:vCUIsgzX.net] >>151 こんな感じになってるんだと思う https://wandbox.org/permlink/ME0HLrM3vXDeMvoR main.cpp(exeプロジェクト) api.h(dllプロジェクト) api.cpp(dllプロジェクト) Sample.h(libプロジェクト) Sample.cpp(libプロジェクト) vc++で実行すれば分かるけど、dllとexeでインスタンスが2個出来る IDEが作るファイルは使ってない(プリコンパイル済ヘッダ未使用vs2019で確認)
155 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 21:55:19.66 ID:PssNo99E.net] >>148 あーすまん.dllならinline変数でもダメだわ .libとの変数共通ならいけるんだが
156 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:10:26.11 ID:vCUIsgzX.net] >>152 どうせ昼間のIDの誰かが質問者兼>>153 だと思うので面倒なので補足しておく。 もし>>149 の > シングルトンオブジェクトが、プロセス内に2つ(exe側とdll側)あること? がYesで > dllは遅延ロードするの? がNoなら クラスSampleの宣言に__declspec(dllexport)を付けることで、1つにすることはできる。 ただし実体がdllに入るので、遅延ロードはできない作りになる。
157 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:31:49.11 ID:PssNo99E.net] 質問者ではないけど俺は.hで完結させたい人種なので「dll側かexe側に変数の実体を作らなきゃいけない」という縛りを極端に嫌ってる dllとも変数実体を共有したいなら.h完結を諦めて ・実体生成用の1つのcppでだけ#defineでなんか定義して実体を定義させる ぐらいしかまともな回答は思いつかん どうせ複数dllから1つの変数を共有したいって話にもなるから 実体生成用のcppはexe側が受け持つか管理用のdll(質問者はやりたくないようだが)を作ることになるだろうな
158 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 22:49:56.05 ID:A1VwjaQk.net] hogeの実装がどこにあるべきか決めてないとな。COMにするという手もあるな。
159 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:10:37.89 ID:vCUIsgzX.net] 質問者本人の匂いがプンプンするけど、全部ヘッダならそもそもlibやdll要らないでしょ 昔からstaticメンバ変数にその手のマクロが付いてるヘッダオンリーなライブラリもどきはある 管理用のdllなるものを作るにしたって、exportされるAPIとしてインスタンス生成用メンバ関数を直に紐付ける方法がないと、公開された生成方法が必要になり、シングルトンとして十分制限できない。 COMにするならもうC#で作ればいいのにと思ってしまう。
160 名前:デフォルトの名無しさん [2022/02/23(水) 23:14:23.43 ID:bb+gp0i+.net] Linuxには名前付きミューテックスないだっけ? プロセス間の排他制御にflock使った思い出
161 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:19:02.33 ID:kWD6+CX1.net] pthreadにあるやつが使えるからあるんでしょう
162 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:19:54.09 ID:kWD6+CX1.net] mutexっていうかセマフォ使ってるかも
163 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:33:12.25 ID:vCUIsgzX.net] linuxのプロセス間同期にはセマフォを使うよ https://man7.org/linux/man-pages/man7/sem_overview.7.html boostでやりたければこんな感じらしい https://www.boost.org/doc/libs/1_58_0/doc/html/interprocess/synchronization_mechanisms.html#interprocess.synchronization_mechanisms.mutexes.mutexes_named_example ※最近boost使ってないのでよく知らない
164 名前:デフォルトの名無しさん [2022/02/23(水) 23:43:27.24 ID:bb+gp0i+.net] なるほどLinuxもセマフォは名前付きがあるのね ありがとう!
165 名前:デフォルトの名無しさん mailto:sage [2022/02/23(水) 23:44:52.39 ID:kWD6+CX1.net] 条件変数が一番好きです
166 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 02:08:55.88 ID:9O+r6lMK.net] そのへんが全て最初から言語の型として標準で装備されていて さらにコンパイルが通ればマルチスレッド時のデータ競合すら起きないことが保証されるRustが強いよな
167 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 02:43:58.81 ID:tiwBzbY0.net] openMPを使いたいけど使うと言えない
168 名前:デフォルトの名無しさん [2022/02/24(木) 03:32:22.22 ID:+hdCiApF.net] どうやってスレ立てるの??
169 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 03:59:43.03 ID:D634csZp.net] >>166 https://cpprefjp.github.io/reference/thread/thread.html
170 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 15:54:24.18 ID:ZFLA2QwP.net] メモリ上で連続した多次元配列を動的に確保したいんですけど、どうするのがスマートなやり方ですか?
171 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 16:09:23.68 ID:tiwBzbY0.net] 多次元配列を宣言する
172 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 16:12:31.94 ID:MBzpszCI.net] >>168 「連続した」ってとこkwsk ハード的な事情があったりするのか?
173 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 16:25:32.45 ID:xAP0ZjRZ.net] スマートが何処にかかるのか
174 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 16:32:30.77 ID:cGpWV2sd.net] またスマートとか自分の希望要件すら言語化できないアホな質問来てるな・・・ いっぺん真で頭ガチャするのがスマート
175 名前:はちみつ餃子 mailto:sage [2022/02/24(木) 16:42:22.24 ID:KIw+63Ii.net] 「動的に確保」というのも、コンストラクトの時点で大きさが確定するというのと 後から伸長する可能性も含むというのでは事情が違う。
176 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:02:25.64 ID:ZFLA2QwP.net] >>173 VLAのように実行時に全体の大きさを指定したいです
177 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:05:32.25 ID:M4s9COHd.net] mallocや
178 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:34:08.45 ID:cGpWV2sd.net] 小出しにしてんじゃねーよw 質問者のお前が聞かれたことに答えるんじゃなくて、せめて満たすべき最低限の要件くらい自分で明確にしろと言ってるんだよw そんなこともできなければ真でくれと言われてるのw
179 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:38:54.01 ID:MBzpszCI.net] >>174 ということは最初の割り付けでサイズが確定していて 途中でresizeはできなくていいんだな?
180 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 17:40:07.73 ID:MBzpszCI.net] あるいは、CのVLAをC++で操作できるようにしたいのか?
181 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 18:26:58.76 ID:qnUKy4cC.net] 初心者ですまんがVLAってvectorで代用できないの?
182 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 18:34:10.20 ID:xAP0ZjRZ.net] つvalarray
183 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 19:04:00.53 ID:7WoYZRJz.net] 3次元配列なら template<class T> class V{ T*const ptr; size_t s1,s2,s3; public: V(size_t s1,size_t s2,size_t s3): s1(s1),s2(s2),s3(s3), ptr(new T[s1*s2*s3]){} T&operator()(size_t i1,size_t i2,size_t i3){ return ptr[i1*s2*s3+i2*s3*i3]; } ~V(){delete[]ptr;} }; V<int> v(4,5,6); v(1,2,3)=42; みたいのでええんか? 大体こういうの自分で作るとバグらせるからあんまやりたくないけど
184 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 19:07:44.67 ID:cGpWV2sd.net] すでにバグってる気がする
185 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 20:00:57.06 ID:1pzXIXf6.net] boostにあるけどオーバーエンジニアリングっぽいんだよな
186 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 20:30:12.93 ID:cGpWV2sd.net] 馬鹿にされたい馬鹿が小出しにしてる以上何とも言えないw 僕ちゃんboost使いたかったけど馬鹿だからよく分からないし、条件小出しなまま複数IDで汎用な答えが欲しいのぉって言ってるだけなのが透けて見えるw
187 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 20:38:21.09 ID:I6df84hq.net] 何の情報が必要かすら分かってない初心者かもしれないんだから聞き出してやればいいのに 煽って出てくると思ってるなら考え甘いぞ、要件引き出せないようじゃ半人前
188 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 20:59:04.53 ID:cGpWV2sd.net] ちゃんとID変えて出てきてるし煽ってないし、僕ちゃん答えは欲しいのに分不相応なプライドだけ高くて素直になれないのぉって言われてもね
189 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:02:22.10 ID:j0njw0Fu.net] 一方すぐ質問者にマウンティングしたがるおまえはすぐわかるなw
190 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:03:10.18 ID:MBzpszCI.net] > ID:cGpWV2sd おまえイラネ 無駄にうるせえ
191 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:29:39.55 ID:cGpWV2sd.net] こんなスレにいちいち相談する初心者なんてそうそういねーよ もし初心者なら回答欲しいんだから何言われても何某か返事する そういうのがなく単発IDなどが煽ってくるということはつまり・・・図星ってことw
192 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:36:30.68 ID:j0njw0Fu.net] ここ覗いてるのって技術系の雑談ネタとしか思ってないだろうが、 毎回、単発IDで質問して逃げてるとしたらクソ野郎だな。 学生の課題か何かだろう。おれたちは利用されてるんだ!!!
193 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:50:54.34 ID:p3uXF2gK.net] 利用されるのが嫌ってこと?よくわからんが。 まぁ、学校の課題でズルしても本人のためにはならないんだから勝手にしとけって感じだな。
194 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 21:59:42.81 ID:cGpWV2sd.net] >>190 >>191 そう、お前のことだよ質問者兼回答者君 ただ学生じゃなくて社会不適合者だと思うし、毎日アホな質問しちゃぁ俺に馬鹿にされてるのに飽きないね
195 名前:デフォルトの名無しさん mailto:sage [2022/02/24(木) 23:03:53.08 ID:I6df84hq.net] 妄想えっぐ、糖質っぽいな
196 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 00:16:50.60 ID:5F5cVQmS.net] 在日君なんだろうな
197 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 01:06:42.45 ID:xX3MCg4u.net] >>192 おれみたいなじーさんがおまえのような小便垂れの小僧に質問するわけないだろ…
198 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:25:19.29 ID:xlKD2LUb.net] なんで const なオブジェクトは const なメンバ関数しか呼べないの?
199 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:29:01.84 ID:uD2ZWt4n.net] メンバ関数でメンバ変数が書き変わるとconstオブジェクトとして困るから
200 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:29:09.22 ID:KX/JNmq+.net] 中
201 名前:が書き換わるかもしれないから [] [ここ壊れてます]
202 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 11:59:24.66 ID:169sj97j.net] でもポインタで簡単に書き換えられるじゃん
203 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 12:14:57.98 ID:mK/IikxE.net] 意図的にconst外さなきゃconstのままだよ 何も考えずconst外すバカのことなんて知らん
204 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 18:43:59.10 ID:xX3MCg4u.net] constが役にたった場面にあったことがない。 自分で書き換えといて「書き換わるかもしれない!!」とかどんだけ適当にコード書いてんだか。
205 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:05:22.20 ID:kxjR7eze.net] constは積極的に使うことでI/Fを分かりやすくしたりできるね 書き換えない想定を明示的にして最適化しやすくする効果もある 意味的に正しいことが保証できないときにconstを使うと泣くこともあるけどw
206 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:11:03.22 ID:xX3MCg4u.net] >>202 const使ったらコンパイラはどういった最適化するんだ?
207 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:12:37.70 ID:pF12AA3R.net] constとprivateはテストの邪魔でしかない 使ってる奴は例外なく低脳
208 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:27:49.01 ID:RMWkUPMB.net] privateはインテリセンスがすっきりしていいじゃん
209 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:38:04.25 ID:kxjR7eze.net] >>203 実際にやってみろ >>204 サンプル説明以外で可視性やconst使ってない馬鹿はエアプ
210 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:43:16.35 ID:xX3MCg4u.net] 自分で言い出しといて急にキレられてもな。
211 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:48:21.44 ID:kxjR7eze.net] >>207 キレる?お前が調べもせずに聞いてくるから当たり前のことを言っただけだが
212 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:52:14.27 ID:pF12AA3R.net] >>206 エアプは君だよ 製品レベルの緻密なテストセットをきちんと書き上げるためにはconstなしのオールpublicしかあり得ん テストケースで様々な状態を作りだして動作確認するためには、全てを必要に応じて自由に書き換えられることが不可欠というもの 書き換え不可だのクラス専用だのの決め事は命名規則で担保するんだぞ
213 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 19:58:35.87 ID:46L8HXzx.net] IFのシグネチャにconstついてないといちいち仕様書読まなきゃいけないから面倒くね? char* token(char* str)とかあったら破壊的かどうか判別できん
214 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:00:20.50 ID:gDL/lDyA.net] >>209 struct最強伝説キタコレ
215 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:04:09.41 ID:Ttq2k6xT.net] >>211 staticおじさんの生まれ変わりだろw
216 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:04:09.42 ID:kxjR7eze.net] >>209 https://github.com/trending/c++ この辺のプロジェクトのソースでもいいし、chromiumのソースでもいいし、見てみたら? 製品レベルのコード見せてみろよ
217 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:07:48.92 ID:xX3MCg4u.net] const使ったらどんな最適化するんだろう? 言った本人はキレて答えてくれないし。
218 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:12:00.77 ID:kxjR7eze.net] >>214 お前が1+1=って言ったら俺はお前のためにわざわざ2と言う必要があんのか? 自分で調べたことの事実を示せw
219 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:14:10.16 ID:aDhOSI3t.net] Rustは何も指定しないとimmutable(不変)にしちゃったから、そういう点でもわかりやすく、かつ、テストやデバッグも少数のmutableなものだけ対象にすればよくなってるね
220 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:15:39.58 ID:xX3MCg4u.net] >>215 全く必要ない。 キミは自分で言い出しといて逃げる人とよく分かったから他の人に質問してるだけ。 キミはスルーしてくれていいよ。
221 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:16:05.93 ID:kxjR7eze.net] >>216 Rustは無関係なので巣に帰れ
222 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:32:18.12 ID:6k09Uwld.net] constを使うのがいいことがよく分かった
223 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:39:24.80 ID:xX3MCg4u.net] constウイルスと言わざ
224 名前:るをえないアホ仕様 [] [ここ壊れてます]
225 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 20:57:38.37 ID:QBj91W6D.net] だからさ、釣り針が太すぎるんだよな
226 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 21:25:13.93 ID:4EL5U7Bc.net] constついてないコードは九分九厘ごみ 絶対に自分一人で書き上げて絶対に一生涯外に出さない保証があるなら付けなくても良い
227 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 21:34:50.33 ID:6k09Uwld.net] 本に載るほどの支持を覆すほどの権威と実例があるわけもなく
228 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 22:44:59.40 ID:RMWkUPMB.net] メンバ関数のconst修飾とか関数の引数のconstとかはわかるけど関数内部のローカル変数にconst付けるのはよくわからんな
229 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 22:51:54.69 ID:a/ksSb5+.net] const お会いしたらお茶しませんか?
230 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 23:04:47.69 ID:aDhOSI3t.net] >>224 コードが読みやすくなるし間違って書き換わることもないから どの言語でもconstやそれ相当で宣言するのが最近は一般的 JavaScriptですらconstにするのが常識となった
231 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 23:07:46.96 ID:vOr560R7.net] ここ数年constをつけて再代入しないのが当然になってますってjavascriptの専門家に言われて殴りたくなりました
232 名前:デフォルトの名無しさん mailto:sage [2022/02/25(金) 23:13:07.22 ID:aDhOSI3t.net] JavaScript程度はブラウザのカスタマイズしたり含めて誰でも使える言語だろ まさかC++しか使えない新人かね
233 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 00:15:34.77 ID:VmHIkvc0.net] Pythonにはconstもprivateもない 大文字だけの名前はconst、アンダースコア始まりの名前はprivateという規約があるだけ でもそれでみんな勝手に書き換えるべきでないと了解されてて完全に成立してる とはいえ言語機能ではないのでテストとかでの必要に応じて規約を無視して値を変えることもできる こういう実例を見るとわざわざコンパイラ機能として書き換え禁を強要してるconstやprivateは偏執的過ぎると思う
234 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 00:23:17.69 ID:xDf2Ellb.net] 小さいオブジェクトにconst付けるとアドレスが割り振られて最適化が阻害されるみたいな話は聞いたな
235 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 01:13:30.79 ID:fRC8OZTs.net] 日付が変わってまた湧いてるw >>229 pythonみたいなゆるゆる言語と比較してconst/privateがないとかw >>230 その話URLで示してw
236 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 01:14:41.41 ID:TNmFLFGs.net] ここまでconstつけると最適化されるという例はなし。
237 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 01:39:20.96 ID:fRC8OZTs.net] ここまで何を調べたかの記述なしw
238 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 04:01:53.50 ID:L9ZaKHY5.net] move、右辺値参照、各種オペレータなどフルセットで対応するライブラリ的なクラスならconst対応した方が良いけど、 末端のアプリケーションにまで全部律儀にconst付けるのは面倒くさいだけだわな
239 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 04:13:27.79 ID:fRC8OZTs.net] そんなしょうもないものならわざわざC++で組むなよw 発想がアホの極みw
240 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 06:30:02.19 ID:BX4iLvdt.net] Rustなどは無指定デフォルト時がC++でのconst状態になってるよな 楽でいいよな
241 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 07:05:16.24 ID:fRC8OZTs.net] >>236 Rustの話はRustスレで
242 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 08:03:06.09 ID:w5NWCXyu.net] 話題に沿ってるんだし少しくらいなら良いと思うけどね。アレルギーかよ
243 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 08:11:23.88 ID:fRC8OZTs.net] Goスレ見てると対岸の火事とは思えないw Rustスレは静かなのに、そこで議論できない馬鹿がずっと他言語スレでRustのヘイトを稼いでるからなw Rustくらいみんな知ってると言うのにw ってわけで、特に今は各言語固有スレではその言語の話だけってことw
244 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 10:47:22.97 ID:w5NWCXyu.net] 他所のスレのことは知らんけどこれをヘイト稼ぎと受け取るのは捻くれな気がするけどね Rustのことも自分が知ってるからってみんな知ってるとかイキるのも良くない 知らない人だって当然いるだろうに
245 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 11:00:37.71 ID:fRC8OZTs.net] ヘイト稼ぎと解釈しない方が捻くれてるだろw 今どきC++やっててRust(やそれ以外の言語)知らん方がレアだし、その程度のやつは何を言われても仕方ない
246 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 11:24:01.42 ID:Cjy1TnYX.net] その程度とか言い出した パソコンの大先生かな?w
247 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 11:56:13.77 ID:w5NWCXyu.net] 誰でも最初は初心者なんだけどね ここオンラインの匿名掲示板なの忘れてない? 勝手に自分基準のレベルを周りに押し付けられてもね そういうのは自分の納得できる閉じたコミュニティでやればいいと思う
248 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 13:03:43.12 ID:d8NXRVNx.net] いや、悪いけど>>241 はレベル低いと思うよ・・・w
249 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 13:14:24.08 ID:qsPBexON.net] 自動販売機のタバコじゃないんだけどね もっと高級なのね
250 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 15:44:44.33 ID:xDf2Ellb.net] Rustってまだ言語マニアくらいしか使ってなくね そもそも案件が少なすぎるしRsutでしか提供されていないライブラリやフレームワークやSDKなんて聞いたことないし 俺が知らないだけで実はコッソリ出現してるのか???
251 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:06:22.23 ID:aW9KNPN/.net] 実際こうやってアレルギー反応(スレが荒れる)起こすからよその話はよそでやれってことだな
252 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:11:54.75 ID:fRC8OZTs.net] 荒れてねーよw
253 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:19:40.75 ID:4mZJSMD8.net] >>246 色んな分野でRustがC++の立ち位置を侵食していってるよ 例えばブラウザ内だけでなく今は色んな所で使われるようになったWebAssembly(WASM) WASMでプログラミングするための記述言語は当初C++が先行していたけど今はRustが逆転してトップになっているね
254 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:27:10.15 ID:I1qWxMaG.net] constさいこー 固定文字列リテラルとか const char* const s = "Hello World!\n"; やし 関数の仮引数は関数内で絶対変えないことにして void foo(const char* const p); // 宣言 void foo(const char* const p_) { // 定義 const char* p = p_; // 関数内で値を変える場合 } と書いてしまうま
255 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:27:29.83 ID:I1qWxMaG.net] だいたい https://mevius.5ch.net/test/read.cgi/tech/1524746903/652 https://mevius.5ch.net/test/read.cgi/tech/1524746903/659 と質問したら https://mevius.5ch.net/test/read.cgi/tech/1524746903/661 やそうやし\(^o^)/
256 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:46:27.37 ID:I1qWxMaG.net] テストのときにprivateメンバを弄りたいケースは確かにあって そういう場合は次のどれかかが多いう気がする印象だが知らん ※個人の感想です 1. 長ったらしい接頭辞がついた名前のテスト用メソッドを設けてその中にテストコードを書く リリースコードでもそのままだが呼ばれないからリンクはされない 2. 長ったらしい接頭辞がついた名前の構造体として実装して細かいテストしてclassでwrapしてリリース 3. 長ったらしい接頭辞がついた名前の普通の関数として書いて細かいテストしてそれをclassから呼ぶ
257 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:47:36.31 ID:fRC8OZTs.net] >>249-251 こういうのが荒れてる状態
258 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 22:48:11.64 ID:fRC8OZTs.net] >>252 これもな
259 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:14:01.86 ID:I1qWxMaG.net] だいたいインターフェースにもconstつけちゃう class IFoo { int bar(const int x, const double y, const RECT z) const = 0; double baz(std::string& buf) const = 0; /*...*/ }; とか
260 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:14:57.75 ID:I1qWxMaG.net] virtuarl ~IFoo() { } を忘れたorz (死
261 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:17:36.73 ID:TNmFLFGs.net] 値渡しをconstにして何がしたいん?
262 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:27:30.26 ID:w5NWCXyu.net] 固定ならconstexpr使おうや
263 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:36:20.44 ID:I1qWxMaG.net] >>257 文字通りconstにしたいのですヽ(`ー´)ノ 引数に再代入するのはガイジのやることなので(>>251 で関数定義でそうしたら、作業性のためにそれをコピペして極力弄らずにヘッダファイルにするから 宣言においても値渡しの引数にもconstが付くのでつ∀`;)
264 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:43:30.97 ID:w5NWCXyu.net] まあ非参照型でconstついてなかったらとりあえず ひょっとして関数内で書き換えられるんかと疑ってかかるよね
265 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:44:54.89 ID:I1qWxMaG.net] >>232 IPAコーディング左方ガイド[C++言語編] (p.120) https://www.ipa.go.jp/files/000055043.pdf >M1.11.1 参照しかしない領域は、const 型であることを示 >す宣言を行う。 (中略) >参照するだけで変更しない変数を const 型で宣言することで、その変数を変更しないことを明 >示できる。また、処理系の最適化処理でオブジェクトサイズが小さくなる可能性もある。この >ため、参照しかしない変数は const 型にする。 やそうや;;; 具体的には知らん
266 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:45:14.56 ID:nPeFYJEF.net] 引数に再代入するかどうかは呼び出し側の与り知らぬところなんで それを公開インターフェースに乗せるのはどうかなぁ。
267 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:45:57.76 ID:BX4iLvdt.net] Rustだと値渡しだけでなく参照渡しも無指定デフォルト時は書き換え不能だよな 書き換えが起こる関数へは指定して可変参照を渡す
268 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:48:32.78 ID:UUNvHcAJ.net] どこぞの馬の骨とも知れないIT後進国ジャップが言う事よりも天下のGoogle様のコーディング規約を真似るほうが無難だぞ そしてGoogleのコーディング規約によると「可能な限りconst付けまくれ」との事 実際にGoogleが公開してるライブラリはCにしろC++にしろ関数の引数から大体const付いてる、ポインタは勿論constバーガーで
269 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:50:44.52 ID:I1qWxMaG.net] >>262 あずかり知らぬことならどうでもいいんじゃ…… コピペした後手作業でconstを消すとかアフォらしい漏れクラスの天才の単金は高いからな やっぱ作る方の作業性優先で、 記憶モードだがVC++のインテリセンスは値渡しのconstは除去して提示してくれるはず……
270 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:58:24.50 ID:nPeFYJEF.net] でもconst書く方の手間は惜しまないんだ
271 名前:デフォルトの名無しさん mailto:sage [2022/02/26(土) 23:58:37.20 ID:Cf/OFvAp.net] > 処理系の最適化処理でオブジェクトサイズが小さくなる可能性もある。 > int bar(const int x, これをどうやって小さくするんだ? そもそもconstの値渡しの話だよな。
272 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:02:08.66 ID:/TAxLK2K.net] >>264 へぇ〜知らなかったわこれ 流石ゴーグル様やで
273 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:02:10.22 ID:o7kRBzLD.net] 引数で明示的に書き換え禁止にしたいということはポインタ渡しか参照渡しだよな。 アドレスしか渡してないのに最適化でオブジェクトサイズが小さくなるというのはどういう意味だろう?
274 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:05:12.18 ID:o7kRBzLD.net] > 「可能な限りconst付けまくれ」 自分で設計、コーディングができなくてオープンソースをパクる側の意見だろう。 あくまでパクりすぎて訴えられて負けるググルくんの意見。
275 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:07:37.55 ID:KWP91+7v.net] char*ならアドレス渡すより実値渡す方がサイズ小さくて済むとかじゃない?知らんけどね
276 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:14:47.59 ID:/TAxLK2K.net] >>269 値渡しだとしても関数内で決して書き換えませんよって意思表示でconst付けるん
277 名前:だわ 使う側はどうでもいいのかも知れないけど少なくてもメンテ側はその方が楽 [] [ここ壊れてます]
278 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 00:39:11.54 ID:GNkMbU6V.net] 実質in宣言だよね
279 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 05:41:24.49 ID:+yReYAPt.net] まだ馬鹿がconst不要とかアホなこと言って荒らしてるのか・・・
280 名前:デフォルトの名無しさん [2022/02/27(日) 07:45:11.01 ID:hjaMvOv0.net] もういっそのこと、constをメンバ関数宣言のデフォルトにして、volatileキーワードをメンバ関数宣言にそえないとメンバ変数の値を変更できないような仕様変更をしたほうがいいくらいだよ
281 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 07:54:46.50 ID:XiobTp3y.net] ラムダ式の値キャプチャはデフォでconstだね constつけたくないときはmutable
282 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 13:50:59.05 ID:i/FBvdzu.net] 勝手な憶測だけどconst付けると即値埋め込み以外にもどの変数をレジスタに入れるかって辺りの最適化が効きやすくなりそうな気はする
283 名前:デフォルトの名無しさん [2022/02/27(日) 14:21:10.71 ID:ai7feBss.net] class ClassA { public: int x, y; ClassA(int n1, int n2) { x = n1, y = n2; } virtual void VirFunc() = 0; }; class ClassB :public ClassA { public: ClassB(int n1 = 0, int n2 = 0) :ClassA(n1, n2) { ; } void VirFunc() { cout << "Disp1:x+y=" << x + y << std::endl; } void Dummy() { ; } }; void check(ClassA* obj) { if (typeid(*obj) == typeid(ClassB)) { static_cast<ClassB*>(obj)->VirFunc(); } } int main() { ClassB objB(10, 20); check(&objB); }
284 名前:デフォルトの名無しさん [2022/02/27(日) 14:21:28.24 ID:ai7feBss.net] クラスの継承やtyoeidで今躓いています。 objにclassBがなんで代入出来てなんでキャストできるのかわかりません。 check関数の中の引数、ClassAのポインタにClassBで実体化したオブジェクトのアドレスを入れると言うことは 継承した部分だけを見ることで同じ型として見ているのですか? だとしたら派生先のクラスでできたメンバ?がどうなるんだろうと言うのもわからなかったりはします。
285 名前:デフォルトの名無しさん [2022/02/27(日) 14:22:00.29 ID:ai7feBss.net] すみませんコードってどう上げれば良いんでしたっけ?
286 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 14:34:30.92 ID:57HjD/n9.net] const の必要性ってこういうときにあると思ってる struct T { int x; int y; T(int _x,int _y):x(_x),y(_y){}}; int test1(T &a){ return a.x*a.y;} int test2(const T &a){ return a.x*a.y;} int main() { T a(10,5); printf("%d",test1(a));//OK printf("%d",test1(T(5,4)));//エラー printf("%d",test2(a)); //OK printf("%d",test2(T(4,6)));//OK }
287 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 14:38:16.26 ID:gvx2nAxT.net] >>279 想像のとおりです なのでメンバーが減るようなキャストはまずい
288 名前:デフォルトの名無しさん [2022/02/27(日) 14:51:04.74 ID:ai7feBss.net] >>282 ありがとうございます。 アップキャストダウンキャストも関わっていたのですね すぐにはわかりませんでした。 たとえばなんですけど派生クラスBは基本クラスAに別の名前を付けてかつBで新たに 加えられたメンバはBから紐づけられていて、これらをセットにして見やすくしたものが 派生クラスBになると言う感じなのです?
289 名前:はちみつ餃子 mailto:sage [2022/02/27(日) 15:01:31.40 ID:ftSqTRxL.net] 派生クラスのオブジェクトには基底クラスのオブジェクトが含まれる。 派生クラスの一部であるようなオブジェクト (基底やデータメンバ) をサブオブジェクトという。
290 名前:デフォルトの名無しさん [2022/02/27(日) 16:18:03.61 ID:ai7feBss.net] >>284 ありがとうございます。 サブオブジェクトがサブオブジェクトと言われることにつながるのですね。
291 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 16:44:15.33 ID:+yReYAPt.net] ダウンキャストは危険で、本来無条件にやっていいものではない なので実行時型チェックをして使っている今回は問題ないだけ なお、static_cast<ClassB*>(obj)->VirFunc()は最近のコンパイラ(gcc11.2)だと 最適化なし時はClassA*として仮想関数呼び出しと同じ方法で呼び出す 最適化あり時はvtableがClassB::VirtFunc()かどうか確認してインライン展開したものが実行される (万一確認失敗したら仮想関数呼び出しと同じ方法で呼び出す)
292 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 17:38:03.37 ID:HuUTW9GQ.net] ダウンキャストをするならstatic_castではなくdynamic_castを使うべき。 見ているobjの実体がclassBじゃないなら失敗してnullptrを返してくれる。 そもそもダウンキャストが必要になること自体良い設計ではないが auto* pb=dynamic_cast<classB*>(pobj); if(pb){ pb->...; }
293 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 17:46:47.65 ID:NpJPdMJB.net] 「キャストはなるべくするな、特にdynamicはコストが高い」と古文書にもあった
294 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 17:54:22.89 ID:+yReYAPt.net] 今回はそれをtypeidでやりたかったんでしょ
295 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 18:02:07.86 ID:HfpUvsK0.net] ダイナミックダイクマ
296 名前:デフォルトの名無しさん [2022/02/27(日) 20:42:58.79 ID:ai7feBss.net] なんかC++が気になるので実践的な情報でもなんでもありがたいです。 C++で食べてる人と話したこともないし・・・
297 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 20:45:27.70 ID:NpJPdMJB.net] 古文書には「#defineではなくconst,enum,inlineを使うといい」ってあるよ
298 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 20:47:31.05 ID:nGlHhzSe.net] 死海文書では「constexpr, enum struct, enum class」を使うことで難を逃れたと書いてある
299 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 20:56:43.39 ID:o7kRBzLD.net] const使えば分かる。#defineのほうがやっぱり便利だわ。
300 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:21:58.39 ID:Xl3wWN+O.net] C++のenumは機能が弱いからなあ Rustのenumみたいに任意の型の変数値を格納できるようにしてほしい
301 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:31:32.92 ID:nXG/aSfD.net] >>275 >>276 その方針で全ての変数のデフォルトをC++のconst状態にしてしまったのがRustだね 代わりに値が変化する変数にだけミュータブル指定しないといけないけど if-elseもループもブロックも値を返してくれるためほとんどの変数が変化しない
302 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 21:36:52.29 ID:o7kRBzLD.net] char*やシンプルな構造体ならconst使うのはメリットあると思うが、 あれこれ機能が詰め込まれるクラスになると不便さ、面倒さのほうが際立つ。 多重継承並にハゲる原因になる。
303 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 22:28:50.95 ID:hjaMvOv0.net] まーたしかにconst_castだらけになるかもしれないね
304 名前:はちみつ餃子 mailto:sage [2022/02/27(日) 23:37:06.31 ID:ftSqTRxL.net] const_cast を正しく使うのは難しい。 const なオブジェクトから const を剥がして書き換えるのは未定義。 数年前に LLVM が const 指定の情報を最適化に活用する方向に舵を切ったというニュースもあった。 const ではないオブジェクトに対して const なポインタや参照を経由している場合には const を外して書き換えるのは許されるはずだが、 それが必要になるようだと設計を見直したほうがいい。 現在のコンパイラは賢くて、 const 指定をしてなくても書き換えられる可能性がないことを見抜いて最適化することも多いんで、 const の指定自体は最適化にはそれほど寄与しないよ。 ただ、 const を前提とした設計はコンパイラにとって最適化しやすい構造である可能性はある。 @ const を前提にした設計にできるもんならしたほうがいい A そうできないなら無理に const を付けないほうがいい (後で場当たり的に const_cast で const をはがすとどこかで間違う)
305 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 23:43:44.46 ID:o7kRBzLD.net] 書き換えないコードの場合はどういう最適化がされるのかを知りたいのだが。
306 名前:デフォルトの名無しさん mailto:sage [2022/02/27(日) 23:51:40.12 ID:HuUTW9GQ.net] getterにlockを仕込む場合にgetterをconstにするべきかどうか悩む const扱いにしてmutexに関してだけconstをはがすべきなのか class C{ std::mutex _mtx; int _a; public: int get_a(){ std::lock_guard lk(_mtx); return _a; } void set_a(int a); };
307 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 00:43:20.93 ID:7GK6w4Z4.net] >>301 俺ならgetterにはconst付けてmutexメンバ変数にはmutable付けるね。
308 名前:はちみつ餃子 mailto:sage [2022/02/28(月) 00:54:54.67 ID:R6BwoFXD.net] >>301 俺も >>302 には賛成。 mutex はあくまでも内部的な実装の都合であって、 それを mutable にしてもクラスの logical constness は維持されると判断する。
309 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:18:45.25 ID:EeqSDih1.net] >>300 だからお前は何を調べたとずっと聞いてるんだがw
310 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:22:01.28 ID:LWo9z6at.net] 言い出した本人が逃げ出して答えないし、誰もはっきりと答えないんだからウソなんじゃね?
311 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:25:22.84 ID:EeqSDih1.net] 状況に依るけどmutableにするなら俺はunique_ptrとかにするかもしれない
312 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:42:21.31 ID:EeqSDih1.net] >>305 言い出した本人はいるし、「お前は何を調べたとずっと聞いてる」のにしかも何度も聞いてるのに答えない=お前が逃げ続けてるからだろ?w
313 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:47:08.01 ID:LWo9z6at.net] 本人いたのか。自分で言い出したはいいが実はさっぱり分からないって感じか。 それはそれで仕方ない。発狂してたら余計にやっぱりウソなんだ〜ってなるだけだぞ。
314 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:50:37.25 ID:EeqSDih1.net] もう寝るけど、お前がただただ煽りながら発狂しちゃってる間も、毎日何某か書いてるんだがw いつになったらお前がどこまで何を調べたのか詳細に説明してくれるのか心待ちにしてるよw
315 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:50:44.99 ID:h02lB8BP.net] >>302 >>303 ありがとうございます なるほどフィールド側でconst扱いしないモードを初めから指定すればいいのか...
316 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:54:51.97 ID:LWo9z6at.net] >>309 やっぱりウソなのか。散々暴れといてしょうもない奴だな、おまえ。
317 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 01:56:18.18 ID:h02lB8BP.net] void f(const std::vector<int>&v){ for(size_t i=0; i!=v.size(); ++i)... } とかで 本来v.size()を毎回呼ばなきゃいけないけどconstだから1回呼ぶだけで十分って話とかじゃないの? まあ俺も-O2コンパイル結果を読む気力はないからエアプ扱いしてもらって構わんが
318 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 02:03:13.46 ID:/gADsoXI.net] constなんていつでもconst_castで引っぺがせるんだから、勝手に定数畳み込みとかは出来ないし じゃあそういうのが無いのを検知すれば出来るだろというと、そんなに賢いならconst無しの変数でも同じ事が出来るはず 結論から言うとconstは最適化に何の影響も及ぼさない 畳み込ませたい定数はconstじゃなくenumか#defineで定義するのが正解
319 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 02:14:26.59 ID:EeqSDih1.net] 複数IDで暴れとるwwwww 朝までに具体的な事例を書いてねw 環境も明記されてないコンパイルも通ってないモノでは想像で言ってるだけってことになるよw
320 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 06:31:25.23 ID:Zh+6zBsp.net] >>312 この例は毎回v.size()呼んで遅くなりうる それは最初に1回一時変数に受ければ解決するがそれがconstかどうかはまずパフォーマンスに影響しないだろう もっというとこれは生のfor文の欠陥でこれからはstd::views::iotaを使っていくべき理由の1つだと思う
321 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 06:47:54.89 ID:EeqSDih1.net] >>315 その例はconstにしようがしなかろうがインライン展開されるので最適化結果に違いはないよ そもそも最適化しやすくなると言ってるだけで、違いがあるとまでは言ってなかったんだけどw >>314 に書いたとおり、煽るだけ君は結局「想像で言ってるだけ」なんだなw 妄想はほどほどにしてくれw 最適化コードに違いがある例が以下。マクロの定義を空にすればconstなしのコードになる。 https://godbolt.org/z/YavYzrE3z #define CONST const template<typename T> struct s { T value; operator T() CONST {return value;} }; CONST s<int> a[] = {1,2,3,4,5}; template<typename T> T func() { T r = 1; for (int i = 0; i < sizeof(a)/sizeof(a[0]); ++i) { r *= a[i]; } return r; } int main() { return func<double>(); }
322 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 07:29:26.73 ID:Zh+6zBsp.net] >>316 俺はこの話題に関して初めて書き込んだ者だが
323 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 07:34:24.42 ID:Od0J2fCm.net] >>316 都合の良い例にしすぎだろ
324 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 07:43:08.18 ID:EeqSDih1.net] 反証は1つで十分w 具体例の1つも書けない人は黙ってようねw
325 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 08:14:09.88 ID:Od0J2fCm.net] ああすまん、変化しない例を出してるつもりだと思ってた そんなコードでも変化したりするのね
326 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 10:21:52.93 ID:ftLJb++c.net] 古文書には#defineは良くないってあったけど今のC++ってその辺り改善されたんですか?
327 名前:はちみつ餃子 mailto:sage [2022/02/28(月) 10:47:09.12 ID:R6BwoFXD.net] >>321 ある程度は。
328 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 10:56:01.32 ID:xzjNndYE.net] >>321 「その辺り」って何? スコープとの相性が最悪って意味なら変わってないぞ
329 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 11:04:38.67 ID:ftLJb++c.net] >>323 他所からパクってきたコードですが、#defineはそのまま書き換えるだけだから以下や #define SIX 1 + 5 #define NINE 8 + 1 int main(void) { printf( "What you get if you multiply six by nine: %d\n", SIX * NINE ); return 0; } 以下の関数の呼び出しなどで意図しない挙動になったりとかです #define SquareMulti(x, y) x * x * y SquareMulti(++a, b)
330 名前:はちみつ餃子 mailto:sage [2022/02/28(月) 11:14:22.32 ID:R6BwoFXD.net] >>324 その程度なら inline や constexpr を活用するのが今は良い作法
331 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 11:19:01.97 ID:xzjNndYE.net] >>324 マクロに関してはそういう所は変わってない 餃子が言うようにマクロ以外の手段を使うというだけ
332 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 11:20:49.97 ID:+7QZaSxQ.net] >>321 #defineじゃないとできない/面倒なパターンが減ったという意味ならある程度はマシになってる <numeric>とか<source_location>とかconstexpr/constevalとか
333 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 11:24:50.52 ID:s9ebK7Me.net] >>321 #付いてるから、基本プリプロセッサ文だかんな
334 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 11:39:25.77 ID:42wjdHim.net] スコープ付きの#defineが欲しい時ってあるよね…w
335 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 12:09:06.26 ID:EeqSDih1.net] ねーよw
336 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 12:16:38.60 ID:WvOgTxGl.net] #define NAMESPACE namespase #define NS ns NAMESPACE NS{ void f(); } void g(){ NS::f(); } このへんのコードをプリプロセスの段階で正しく解釈するのは無理なのがね #pragma defines(push) みたいのが言語標準になればいけるか?
337 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 12:32:49.89 ID:EeqSDih1.net] 馬鹿の妄想は放置して、マクロでないと困る例 #include <iostream> #define PRINT_LOCATION() (::std::cout << __FILE__ ":" << __LINE__ << ":" << __PRETTY_FUNCTION__ << "\n") namespace hoge { void func() { PRINT_LOCATION(); } } using namespace std; using namespace hoge; int main() { PRINT_LOCATION(); func(); return 0; }
338 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 12:41:59.91 ID:xzjNndYE.net] 友達いなさそうだな
339 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 12:49:02.69 ID:EeqSDih1.net] そんなこと気になっちゃう程度の馬鹿よりは多そうだけど、多けりゃいいってもんでもないと思うぞw
340 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 13:48:09.49 ID:ftLJb++c.net] 多くの回答ありがとうございます やはり可能な限り#defineは避けた方が良さそうですね ただ#defineでもできないことや、#defineにしかできないこともあるので変に毛嫌いせず勉強を進めてこうと思います
341 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 14:03:01.00 ID:EeqSDih1.net] 例外中の例外なので、毛嫌いして全く問題なく、勉強する必要も全くないw
342 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 15:55:04.33 ID:Yx2Q2Rjy.net] Include Guard Macro以外の#defineは忘れてもいいと思う。
343 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 17:13:33.60 ID:HhKI/yF6.net] ほんそれ 一生ソロプレイかつCにしがみつくつもりなら構わないけど そうじゃないなら基本的に使わないべき遺物
344 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 20:11:29.53 ID:Zh+6zBsp.net] ほぼ同じ演算子オーバーロードを延々と書く場合とかマクロでまとめていいと思うけどね テンプレートではどうしようもないレベルのメタプログラミングの手段として未だに有効
345 名前:デフォルトの名無しさん [2022/02/28(月) 20:17:53.65 ID:xrBOKM6i.net] むしろ、他言語にマクロ展開機能がないことが不満
346 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 20:19:01.14 ID:EeqSDih1.net] そうなる仕組みもどうかと思うけど、必要悪として採用するケースが「あってもいい」という程度だよ
347 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 20:39:17.05 ID:xzjNndYE.net] >>339 だよな 復号代入とかフルで揃えようとすると 毎回同じようなコードを延々書くからな
348 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 21:11:31.61 ID:EeqSDih1.net] だよなじゃねーよw 本当にマクロでないとできないケースなのかすら怪しいw
349 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 21:21:08.91 ID:TawWBZkT.net] >>339 テンプレートでできなくてマクロならできるとかそんなにはないだろ >>340 C/C++ のマクロなんて PL/I から見たら子供騙しレベルだけどね
350 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 23:32:29.49 ID:7SSxP2tw.net] >>340 C++に一番近い言語であるRustが多様な各種マクロを充実させているので乗り換えるのもよいかもね マクロ以外にも非常に多くの問題が解決される
351 名前:デフォルトの名無しさん mailto:sage [2022/02/28(月) 23:58:07.07 ID:EeqSDih1.net] ゴミのような文化を踏襲してしまった残念言語のRustさんのヘイトを上げるのはやめましょうw
352 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 00:33:34.91 ID:Sj28peWv.net] C++使ってるおれすげーみたいな
353 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 01:06:15.88 ID:PkY5rkFL.net] C++を使いこなせないから皆下流行語の修得を目指す
354 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 06:11:28.76 ID:qblu1Z+O.net] >>343 怪しいって明確に判断できねえのかよ そもそも俺そんな話してねえし
355 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 06:34:48.00 ID:MT73K7Vw.net] >>343 見てもないコードが明確に判断できたらこえーよ そんな話じゃないって何いってんのw
356 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 06:35:21.34 ID:MT73K7Vw.net] >>350 アンカー間違った。>>349 な。
357 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 07:02:46.96 ID:qblu1Z+O.net] >>350 おまえさん本当にC++使いか? operator+とoperator+=みたいのの全組み合わせがマクロ使わずにできないとでも思うのか?
358 名前:はちみつ餃子 mailto:sage [2022/03/01(火) 08:36:21.07 ID:9lt8ULa+.net] >>340 Cプリプロセッサを他言語で使ってもいいんですよ。
359 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 09:06:42.29 ID:cUOzOJ3p.net] >>340 マクロを持つ言語は多い Rustのように用途に応じてマクロが何種類もあるケースもある
360 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 10:19:23.90 ID:Hv9eImco.net] struct B{...}*bP; struct D1 : public B{...} d1; struct D2 : public B{...} d2; bP = (...)? &d1 : &d2; これって駄目なんですね
361 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 10:40:29.97 ID:MQDieCXt.net] >>355 3項演算子の引数型が互換性のないD1*,D2*だからね C#9あたりがターゲット型から3項演算子の型推測やってた気がするがC++に導入される日か来るんだろうか
362 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:01:53.10 ID:Hv9eImco.net] なるほど 素直にif文にしておきます
363 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:08:34.73 ID:cMGuQY9h.net] つ static_cast<bP>(&d#)
364 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:13:51.24 ID:qblu1Z+O.net] >>357 bP = (rnd() & 1)? (B*)&d1 : (B*)&d2; ではあかんのか?
365 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:14:23.15 ID:qblu1Z+O.net] rnd() & 1 は無視してくれw
366 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:14:50.30 ID:Hv9eImco.net] ああ、それでいいんですね ありがとうございます
367 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 11:54:42.57 ID:MT73K7Vw.net] 今度はCに毒されていくC++スレw プリプロセッサはincludeパス的に言語や標準ライブラリを結構意識したりしますw
368 名前:デフォルトの名無しさん mailto:sage [2022/03/01(火) 23:30:51.45 ID:cUOzOJ3p.net] >>355 そういうのはRustがすっきり実現していていい感じ 静的モノモーフィングでコンパイル時に解決させる方法と 動的ディスパッチで実行時に解決させる方法の2種類を選びつつ簡単かつ安全に記述できる
369 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 01:32:22.77 ID:/wwlA8Tq.net] なんでこんなとこにrust信者が湧いてるん?
370 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 03:41:00.25 ID:re9dUtRi.net] C++のstatic_castで十分すっきりしてるし安全なんだがw
371 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 03:51:26.38 ID:S8+3WyDZ.net] うむ まあRustはトレイトを導入しているためもっとフレキシブルに機能毎に事実上のキャストができる点で先に進んでる感じ
372 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 04:16:03.37 ID:re9dUtRi.net] std::visitで十分じゃないの?
373 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 06:05:07.28 ID:+cCq037X.net] >>364 メンタルはルビ基地と同じだから相手すんな
374 名前:デフォルトの名無しさん mailto:sage [2022/03/02(水) 08:02:10.51 ID:UQPkqsb3.net] >>364 スレ違い野郎はNG推奨
375 名前:デフォルトの名無しさん [2022/03/02(水) 10:15:53.71 ID:KGds3ROy.net] RustはUnityで作られてるんだからC#スレ行けよ
376 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 11:52:56.52 ID:YmcISO0J.net] 有名なライブラリのコード覗いて見るとC++でもマクロ結構使ってるよね
377 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 12:21:01.59 ID:aVzPtAzs.net] まあそこは女性のウェストが50cmだと思ってるスペック厨のオタクと現実に生きて実用的なものを開発してる人の違いだね
378 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 12:24:43.91 ID:adLRB/+A.net] 有名ライブラリこそマクロに頼らないとやってられんとこあるからな コンパイル環境(gcc/clang/MSVC)のスイッチとか C++バージョンのスイッチとか(#define CONSTEVAL20 consteval/constexpr) ボイラープレートの簡略化はどれぐらいやってるかは知らんが
379 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 15:14:53.11 ID:dDnSjvDO.net] 条件コンパイルには#ifdefがいるね
380 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 16:48:19.79 ID:PsZF8bq4.net] 文法ばかり勉強してコード書かないからマクロの必要性が見えないんだよ。
381 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 18:39:02.62 ID:c7Jb1Y/C.net] ああ、マクロ不要論者は自分でライブラリ書いたことないというオチか 腑に落ちたわ
382 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 19:24:38.63 ID:hTxF5AaQ.net] まともにコード書く量も質も足りない人にはマクロの弊害を認識できてないんだろうなw インクルードガードなどの条件コンパイルはプリプロセスではあるものの、一般的なマクロ置換処理ではないw
383 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 19:49:49.09 ID:l1hFvrU8.net] 本気でいってんの?このバカ
384 名前:デフォルトの名無しさん mailto:sage [2022/03/03(木) 20:05:07.59 ID:hTxF5AaQ.net] 単発IDで中身のない煽りだけの人が早速出現w 臆病すぎwwww
385 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 05:56:44.52 ID:1RB3fRbG.net] > マクロ不要論者 誰? いたっけ、そんなやつ
386 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 06:37:36.91 ID:DqQFNqIa.net] >>380 >>336 あたりじゃね?
387 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 06:43:28.40 ID:1RB3fRbG.net] ああ、あのキチか 相手すると馬鹿が伝染るからやめようぜ
388 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 11:43:03.93 ID:4zB49VIz.net] まだいたのか臆病者w 答え教えてもらってもなお理解しない人に付ける薬はないよw 構ってちゃんやるなら別の板でやれ
389 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 20:47:43.90 ID:TVZZL9aI.net] コンパイル時にansiをunicodeに変換する簡単な方法あってある? 具体的にはmagic_enum::enum_namesで返ってくるstring_view配列をwchar_tとして貰いたいのだけど
390 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 20:55:24.70 ID:4zB49VIz.net] exe野郎は口を開く権利なしw ソースコードのエンコーディングを指定するか、エスケープした文字列まで正しく変換したソースを使った上で、必要なキャストをするか、プロジェクト設定を使えw
391 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 20:58:03.36 ID:nHKPE6Wj.net] MSの教えどおりにマクロ使ってれば簡単なのにな。
392 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 21:17:57.65 ID:4zB49VIz.net] そもそも言ってる内容が怪しいw ワイド文字の話とエンコーディングの話がごっちゃになってるw
393 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 21:40:05.34 ID:TVZZL9aI.net] ansiをunicodeにエンコードしたいって意味なんだけど自分でテーブルでもつくらないとconstevalには無理? それ以外に方法がないならライブラリいじることにするけど
394 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 21:47:53.46 ID:4zB49VIz.net] 動くサンプルを載せてみろw
395 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 21:55:46.03 ID:cJZvpdpU.net] ansiってなにを指すん?
396 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 21:56:54.08 ID:1RB3fRbG.net] アメリカの国内規格
397 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:00:02.02 ID:4zB49VIz.net] MS様のお庭ではローカルコードページくらいの意味だw
398 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:05:54.66 ID:TVZZL9aI.net] >>390 日本語WindowsMSVCだと"あ"はansi(shift-jis)として{ 0x82, 0xA0 }になる これをunicodeの0x3042にエンコードするって感じでconstexprに生成されたansiを変換していきたい ライブラリ内部では__FUNCSIG__等を利用して静的にenumから文字を生成してるからL#でもして端からunicodeを生成すれば良いんだけどその場合は他にも色々と変えないとダメだからそれは最終手段にしたい
399 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:07:55.03 ID:4zB49VIz.net] >>393 ごたくはいいから動くサンプルを載せてみろw
400 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:12:15.56 ID:TVZZL9aI.net] >>394 動くサンプルって何? 動く見通しついてないからこうして質問してるんだけどとりあえずansi版でもいいからサンプル見たいってことか? enum class AIUEO { あ, い, う, え, お }; void print(){ constexpr auto texts = constexpr auto texts = magic_enum::enum_nameptrs<AIUEO>(); for (auto& str : texts) puts(str.data()); //ほんとはここを_putws的なunicodeを受け取るものに投げたい }
401 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:14:02.23 ID:TVZZL9aI.net] 今即席でスマホのブラウザで書いたからconstexpr auto texts = constexpr auto texts = のところミスってるけどスルーしといて
402 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:14:34.14 ID:4zB49VIz.net] main関数がないので動かんな magic_enumもないので動かんな これがお前の「動く」サンプルなのか???w
403 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:16:37.08 ID:aciaBeWI.net] 出たよサンプルないと何もできないおじさん
404 名前:蟻人間 mailto:sage [2022/03/04(金) 22:33:11.96 ID:08B25WN2.net] https://qiita.com/ta_dragon/items/1828ceb16bc8733526e1 貼っとくよ。
405 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:42:39.88 ID:rsYyHWe+.net] constexpr std::string s="test"; constexpr std::wstring ws=L"test"; こいつらが通らない時点で俺は諦めた 最終的にほしい型はstd::wstring_viewだろうけど std::array<wchar_t, size>ならなんとかなるかもしれん
406 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:52:27.11 ID:nHKPE6Wj.net] そもそもウクライナに寄付しろとか言う前に他民族、多言語に対応しろとmagic_e
407 名前:num作者にメールすべき。 [] [ここ壊れてます]
408 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 22:57:11.67 ID:4zB49VIz.net] 違うだろw こいつが動かせてないだけだろwwww
409 名前:デフォルトの名無しさん mailto:sage [2022/03/04(金) 23:05:31.04 ID:TVZZL9aI.net] >>399 まさにnameofと同じ作者のものだけど、やっぱ__FUNCSIG__の部分からLつけていくしかなさそうだな
410 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 00:24:50.51 ID:AqnMHu7I.net] まだ動かせないんかいw
411 名前:蟻人間 mailto:sage [2022/03/05(土) 00:27:03.13 ID:z+1i+qt8.net] L##
412 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 00:45:32.11 ID:E2o+9AFP.net] C##
413 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:02:31.13 ID:AqnMHu7I.net] 一応言っておくと__FUNCSIG__はリテラルじゃなくてシンボルだぞw >type hoge.cpp hoge(__FUNCSIG__); >cl /P /std:c++17 hoge.cpp Microsoft(R) C/C++ Optimizing Compiler Version 19.28.29912 for x86 Copyright (C) Microsoft Corporation. All rights reserved. hoge.cpp >type hoge.i #line 1 "hoge.cpp" hoge(__FUNCSIG__); > なんというか...ロクに動かせもしないアホが一足飛びに余計なことして普通なら瞬間に出来ることを他人様に何度も何度も聞いて回るというねw
414 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:13:20.54 ID:rFZZ/Cia.net] >>407 >__FUNCSIG__ 外側の関数のシグネチャを含む文字列リテラルとして定義されます。 直接Lは付けられないが#define L(x) L##xを使えばちゃんとワイド文字リテラルとなる ついでに言っておくとVSのこの手のマクロはANSIではなくUTF8だったと思うぞ(固定ではなくソースコードの文字コード依存の可能性あり)
415 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:23:21.22 ID:AqnMHu7I.net] utf8は正解なんだが、リテラルは不正解w https://godbolt.org/z/4G1vvhrEc コンパイラがリテラルに置き換えるわけだけど、プリプロセッサではシンボルのままなので置換されると分からなくなるw
416 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:25:23.87 ID:AZBfqXsc.net] MSVCの場合 /execution-charset で指定した文字コード(デフォルトはsjis=cp932)になるんじゃなかったかな
417 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:37:21.06 ID:AqnMHu7I.net] 未
418 名前:指定時はソースと同じらしい https://docs.microsoft.com/ja-jp/cpp/build/reference/execution-charset-set-execution-character-set?view=msvc-170 でutf-8になってたようだな [] [ここ壊れてます]
419 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:47:40.22 ID:AqnMHu7I.net] ただし、__FUNCSIG__はそういうのに影響されずutf-8っぽい 普通のリテラルはちゃんとシフトJISで出るけど、__FUNCSIG__はutf8だな
420 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:49:42.38 ID:AZBfqXsc.net] ややこしいな、そういうのが一番困るんだよねw
421 名前:デフォルトの名無しさん mailto:sage [2022/03/05(土) 01:52:53.77 ID:AqnMHu7I.net] MSにありがちw ただシンボルに日本語とかキチガイしかしないからw
422 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 06:57:02.25 ID:RhJCMKRm.net] >>414 だって規格で認めてるじゃん ISO/IEC 14882:2020(E) 12.8 User-defined literals [over.literal] 8 [Example 1: template <char...> double operator "" _\u03C0(); // OK: UCN for lowercase pi
423 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 07:14:15.82 ID:2Lq6XwwP.net] 引用が仕様ですらないし、引用元もないし、、、挙げ句内容的に__FUNCSIG__はシグニチャ付きの関数名がリテラルとして入るだけだぞw その関数名に日本語使うのキチガイだけだろw リテラル調べてどうするんだよw
424 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 07:41:36.14 ID:RhJCMKRm.net] 関数名の一部ってことわかんない?
425 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 12:31:32.96 ID:2Lq6XwwP.net] 君に何かを理解してもらうのは諦めるよ 俺の力では無理
426 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 12:38:21.73 ID:RhJCMKRm.net] 捨て台詞にしてももうちっとくらいマシなこと言えねえの?
427 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 20:42:37.07 ID:padO6mVy.net] >>395 初心者だけどこれってプログラム内の変数名や関数名に日本語を出したいってこと? あ = 3; みたいな
428 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:21:28.85 ID:yDdB4j8G.net] 規格上はもうUnicodeの文字はだいたい使えるぞ 移植性やコーディングスタイルや常識の観点での良し悪しは別にして
429 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:29:08.28 ID:ivurCOzA.net] >>420 俺抜きでレスバしてて恐縮だが enum class AIUEO { あ, い, う, え, お }; const wchar_t* aiueo[] = { L"あ", L"い", L"う", L"え", L"お" }; enumに合わせてこんな感じで文字列も欲しいってこと utf8からutf16へのエンコードは割と簡単に実装出来るという事が判明して、200行くらいかかったけどconstevalなu8_to_u16関数作ってmagic_enum::detail::n部分からwide版作っていくことで解決できた
430 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:34:05.04 ID:yDdB4j8G.net] ええやんプルリクしといてよ
431 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:39:53.01 ID:ivurCOzA.net] いいけど既に同じようなissue出してる人いて「constexprに文字列返されるので別の形にしたいならそっちで自由にやって」みたいな感じだったからな
432 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:55:07.26 ID:uQvWeikk.net] これだから白人は嫌なんだよね。
433 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 21:58:54.49 ID:2Lq6XwwP.net] 昔からキチガイがシンボルに日本語使ってたりしたし、規格仕様の該当項目も挙げてないのに可能というのはおかしく またソースコードや出力設定が何かに依るのが正しい可能性だって普通にある またutf8というかunicodeとそのエンコーディング形式は簡単な計算式で可換 200行あればvc++固有ならmagic_enumの使用機能全て載せられるし、そもそも不要 そもそも情報小出しな時点、puts使ったりしてる時点、vc++を好き好んで使ってる時点でもうね・・・ 挙げ句説明なくても5分もあれば気づくことに何日かかってるのかって人のプルリクが通るわけないだろw
434 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 23:18:01.19 ID:ivurCOzA.net] >>425 まぁ面倒だからってよりこのスレにもちらほらいるようにASCII文字だけを想定してて それだけなら1文字づつキャストするだけで簡単に出来るだろうしusing string_view = std::string_viewの所を上書きできるようにしておくから自前でやってって感じだな
435 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 23:23:59.38 ID:2Lq6XwwP.net] 「ASCII文字だけを想定してて」wwwww
436 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 23:29:43.95 ID:m7T5bZFc.net] マクロ騒動で脳が破壊されてしまった子がいるね
437 名前:デフォルトの名無しさん mailto:sage [2022/03/07(月) 23:46:00.91 ID:47rZ/1iq.net] SEXの時は動かずにマグロになってしまったようですね やっぱりロボトミー手術してよかったですね
438 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 21:56:42.93 ID:A5UfccGR.net] >>422 はえー解決したなら良かった まだまだ勉強不足だから半分理解できなかったけどconstexprはstring_view型なら使えることは学んだ
439 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 22:58:13.81 ID:2Ie6O3y5.net] はいはい、一人何役するのかねw
440 名前:デフォルトの名無しさん mailto:sage [2022/03/08(火) 23:19:40.19 ID:lL5N1LvC.net] >>432 我々ギフハブがいつも見ているぞ
441 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 18:10:06.68 ID:USdHjBxA.net] テンプレートの可変長引数って一般的な実装だとスタックに積まれるの? てことはあんまり大きいデータは渡せない?
442 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 18:17:21.80 ID:6o5PvaaD.net] template-parameter-packは実行環境では普通の引数と全く同じだ 翻訳中の解釈でどんな「普通の引数」にするか判断してるだけ
443 名前:デフォルトの名無しさん mailto:sage [2022/03/10(木) 21:39:59.02 ID:xy5Q90JZ.net] template<class...T>void f(T...t){} f(1,2,3,4); で実体化されるf<int,int,int,int>は、 void f(int,int,int,int){} と同じ扱いをされる。 普通の関数と変わらんよ。 たぶん気にしてるのはこんな感じの再帰実装だろう template<class First>auto sum(First first){return first;} template<class First, class Second, class...Rest> auto sum(First first, Second second, Rest...rest){ return first+sum(second, rest...); } sum(1,2,3,4,5,6,7,8,9); 最適化なしコンパイルだとクソ真面目に45*sizeof(int)と9段分のリターンアドレスとか諸々をスタックに積む 最適化ありコンパイルなら大体インライン展開されるからさほど大事にはならない
444 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 07:47:35.25 ID:GmBPyzdt.net] #include <utility> template<class First>auto sum(First first){return first;} template<class First, class... Rest> auto sum(First first, Rest... rest){ return first+sum(rest...); } template <class T, T... Seq> auto sum_seq(std::integer_sequence<T, Seq...>) { return sum(Seq...); } int main() { return sum_seq(std::make_index_sequence<100>()); } こんな感じになるよ https://godbolt.org/z/obj4ra671 途中経過のテンプレートも全て関数実体として展開される 最適化すると、この例だと全部定数で計算されるけど
445 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 08:12:59.76 ID:GmBPyzdt.net] 流石にちょっと説明追加しておきます。 sum_seq(std::make_index_sequence<100>())の部分は sum(0,1,2,3,...,97,98,99)と同じです。 sum(0,1,2,3,...,97,98,99)は sum(0) + sum(1,2,3,...,97,98,99)で計算されます。第2項の sum(1,2,3,...,97,98,99)は sum(1) + sum(2,3,...,97,98,99)で計算されます。第2項の sum(2,3,...,97,98,99)は ... sum(98,99)は sum(98) + sum(99)で計算されます。 つまりすごい再起的に呼び出してバカ正直に壮絶な計算をするため、スタック消費も大きいということ。
446 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 08:30:00.26 ID:bj9xq9MP.net] おれおれtemplateの例ですね。
447 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 11:44:15.06 ID:yxfxX1kD.net] 普通はテンプレつかった可変引数でも、イニシャライザでforで回して足して終わりっしょ。 なぜ自分で再帰にして書くのやら。
448 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 12:14:25.50 ID:GmBPyzdt.net] >>440 一般には可変長テンプレート引数の型が一律とは限らないので
449 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 12:45:09.09 ID:FGXUCKCr.net] >>440 initializer_listは実行時の解釈なので 翻訳時に全てを解決できるテンプレートを使っていて それが出てきてしまうと残念な気持ちになる
450 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 19:55:16.89 ID:XC1WHC10.net] constexprでやればいいじゃん
451 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 19:58:15.85 ID:bj9xq9MP.net] なんでもtemplateにしたい病なんですよ。プロジェクトで一番迷惑なタイプです。 おれおれtemplateは可読性、保守性が一気に落ちるので勘弁してください。
452 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 20:09:30.59 ID:rOwnBpGX.net] 読む方は溜まったもんじゃないが書くのも実行速度もなんだかんだテンプレートが一番早いんで…
453 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 21:26:30.13 ID:FGXUCKCr.net] >>444 純コンパイラ方式の言語を使ってるのに 中間コードを使わにゃならんところが出てくると 残念な気持ちにならん? もっと極端に言うとアセンブラからBASICやBATを呼び出すようなこと 人それぞれで何も感じない人っているのかね
454 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 22:03:21.13 ID:GmBPyzdt.net] 例えばさっきのシーケンスをランダムな数字をその場で生成みたいな感じにすると、 #include <random> #include <iostream> #include <utility> using namespace std; template<class First>auto sum(First first){return first;} template<class First, class... Rest> auto sum(First first, Rest... rest){return first+sum(rest...);} template<class... Args> auto print_and_sum(Args... args) { for (auto e: {args...}) cout << e << endl; // ココ return sum(args...); } template <typename F, size_t... Seq> auto gen_and_print_and_sum_impl(F func, index_sequence<Seq...> ) { return print_and_sum(func(Seq)...); } int main() { random_device seed_gen; mt19937 engine(seed_gen()); const size_t n = 3; cout << gen_and_print_and_sum_impl( [&](size_t i){ return engine();}, std::make_index_sequence<n>{}) << endl; return 0; } こんな感じになるけど、genとprintとsumを分けたいとなるとtupleにしたくなって、templateでparameter packとtupleを行き来することになり、結構煩雑になる気はする 今は分けずに初期化リストにぶち込んで誤魔化してるけど… こういうのも分けてtemplateにする?
455 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 22:03:23.71 ID:bj9xq9MP.net] >>446 加算するだけの処理でtemplate使わない場合 どういった中間コードが作成されるのですか?
456 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 22:52:13.11 ID:GmBPyzdt.net] ちなみに分けてテンプレートにしてみた。もう1レスに収まらないので消えたらごめんw https://godbolt.org/z/YoxG7b4ro
457 名前:デフォルトの名無しさん mailto:sage [2022/03/11(金) 23:14:03.97 ID:GmBPyzdt.net] #include <random> #include <iostream> #include <tuple> using namespace std; // 余計なコード消したらギリギリ入ったw template<class First>auto sum(First first){return first;} template<class First, class... Rest> auto sum(First first, Rest... rest){return first+sum(rest...);} template<typename T, size_t... Seq> auto sum_tpl_impl(const T& tpl, index_sequence<Seq...>) {return sum(get<Seq>(tpl)...);} template<typename... Types> auto sum_tpl(const tuple<Types...>& tpl) { return sum_tpl_impl(tpl, make_index_sequence<tuple_size<tuple<Types...>>{}>{}); } template <typename T, typename F, T... Seq> auto gen_impl(F func, index_sequence<Seq...>) { return make_tuple(func(Seq)...); } template <size_t N, typename F> auto gen(F func) { return gen_impl<decltype((func)(0))>(func, make_index_sequence<N>{}); } template <typename T, size_t... Seq> void print_impl(const T& tpl, index_sequence<Seq...>) { for (auto e: {get<Seq>(tpl)...}) cout << e << endl; } template <typename T> void print(const T& tpl) { print_impl(tpl, make_index_sequence<tuple_size<T>{}>{}); } int main() { random_device seed_gen; mt19937 engine(seed_gen()); const size_t n = 3; const auto tpl = gen<n>([&](size_t i){ return engine();}); print(tpl); cout << sum_tpl(tpl) << endl; return 0; }
458 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:11:11.84 ID:uDPm4ane.net] 大学で下記のようなSTLアルゴリズムの課題が出たのですが、全然わからないです Hogeというstructがあったときに、 class HogeCollection { public: void display(ostream& os) const; friend ostream& operator << (ostream& os, const Hoge& hoge); private: vector<Hoge> m_hoges; }; display関数でm_hogesのすべてのHogeに対して os <<を呼び出し出力させなさい。 ただしforやwhileなどの手動ループを使用しないこと。
459 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:12:32.40 ID:aEfI8PjB.net] >>450 ちょっとバグってたので修正 template <typename F, size_t... Seq> auto gen_impl(F func, index_sequence<Seq...>) { return make_tuple(func(Seq)...); } template <size_t N, typename F> auto gen(F func) { return gen_impl(func, make_index_sequence<N>{}); }
460 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:14:20.70 ID:aEfI8PjB.net] >>451 言われた通りにやればいいやん
461 名前:蟻人間 mailto:sage [2022/03/12(土) 13:16:03.75 ID:0xm7vL+e.net] >>451 <algorithm>を見てみ。便利な関数があるから。
462 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:21:05.85 ID:45uBSPYW.net] 「STLアルゴリズム」の課題だからSTL使えばいいんだもんな… 自分でアルゴリズム実装しろって課題だったらちょっと面倒だが
463 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:21:47.65 ID:uDPm4ane.net] >>453 ,454 ありがとうございます。 std::for_each()なんてのがあるんですね・・・
464 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 13:55:39.46 ID:uDPm4ane.net] 度々すみません。 display関数を書いたのですが、VS2019でコンパイルエラーになります。 void HogeCollection::display(ostream& out) const { std::for_each(m_hoges.begin(), m_hoges.end(), [](const Hoge& hoge){ out << hoge; }); } error C3493: 既定のキャプチャ モードが指定されていないため、'out' を暗黙的にキャプチャできません
465 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:02:30.95 ID:9rXKBdgd.net] キャプチャモードを指定してあげれば…
466 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 14:09:52.70 ID:uDPm4ane.net] >>458 ありがとうございます。以下で通りました! [&out](const Hoge& hoge){ out << hoge; }
467 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 21:02:47.42 ID:uDPm4ane.net] もう1つ、STLの問題がわからないので、質問させてください。 >>451 のHogeCollectionに以下のようなメンバ関数があるとします。 void sort_by_key(const string& key) { if (key == "a") (Hogeのメンバ変数 m_aでソート); else if (key == "b") (Hogeのメンバ変数 m_bでソート); } keyの値が"a" か "b"以外のときはエラーにしたい場合に、 実行時エラーでなくコンパイルエラーにするには、 この関数をどのように再設計すればよいでしょうか。
468 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 21:08:31.31 ID:yBTVs/aF.net] keyの値はコンパイル時に決まるん?
469 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 21:49:16.97 ID:uDPm4ane.net] >>461 そうですね。 今のプログラムでは、main関数で sort_by_key("a"); のように呼び出しています。
470 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 22:30:59.53 ID:olrB42jq.net] >>462 コンパイル時にkeyを見てチェックするという縛りなら、実行時になるまでkeyがわからない状態にはできない。 雑にやってしまうならこうなる。 真面目にやるならフィールドへのポインタをテンプレート引数にすることになると思う template<char key> void sort_by_key() { if constexpr (key == 'a') (Hogeのメンバ変数 m_aでソート); else if constexpr (key == 'b') (Hogeのメンバ変数 m_bでソート); else throw std::invalid_argument(); }
471 名前:デフォルトの名無しさん mailto:sage [2022/03/12(土) 22:46:39.28 ID:uDPm4ane.net] >>463 やっぱそうですよね。 私も sort_by_keyを廃止して、sort_by_a と sort_by_b を作るくらいしか 思いつかないです。
472 名前:デフォルトの名無しさん [2022/03/13(日) 18:52:37.38 ID:mTtq0Uph.net] ポインタとか文字列の勉強をしていてよくわからなくなってしまいました char* test(char* &s){ char* ans=“B”; s[0]=‘C’; s=ans; return ans; } int main(int argc,char *argv[]){ char s1[]=“A”; char* s2=s1; #if 1 cout<<s2; cout<<test(s2); cout<<s2; #else cout<<s2<<test(s2)<<s2; #endif return 0; } 上のようなものを動かす時、#if 1のときはABBと表示されて、#elseにするとBBCと表示されます #elseのように一行にまとめた時に何が起こっているのかよくわからないので教えていただけると嬉しいです よろしくお願いします
473 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 18:56:08.61 ID:wq
] [ここ壊れてます]
474 名前:c4hozV.net mailto: ポインタじゃなくて評価順の問題なのはわかるが 何が起きてるのかは俺もようわからん [] [ここ壊れてます]
475 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:00:28.93 ID:wF3w3WV7.net] char*&なんて20年C++プログラマやってて一度も使ったことないわ… どういうときに必要になるん?
476 名前:デフォルトの名無しさん [2022/03/13(日) 19:02:39.85 ID:mTtq0Uph.net] 必要ないとは思うんですけど、理解を確かめるために色々試していたって感じです
477 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:02:42.19 ID:uIbezUFD.net] >>467 おっちゃんやん
478 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:05:39.12 ID:wqc4hozV.net] あーわかったけど説明めんどくさいな とりあえず、if 1では1行ずつ評価(今の場合表示と読み替えても良い)が行われてるが 2行目の場合、評価(表示)の前に途中で関数が実行されて、値が書き換えられている、とだけ
479 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:06:08.61 ID:e39Fa4ck.net] コレ質問してるのもおっちゃん臭いんだよな いつもVC++だし、MFCみたいな書き方するし
480 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:06:22.60 ID:wqc4hozV.net] 誤 2行目の場合→正 elseの場合
481 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:12:14.63 ID:wF3w3WV7.net] >>469 おう、最近白髪が気になってきた
482 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:20:55.04 ID:e39Fa4ck.net] そして答えてるのも同じおっちゃんw
483 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:22:15.18 ID:e39Fa4ck.net] そもそもそんな怪しいコーディングは普通のC++プログラマはしないから warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
484 名前:はちみつ餃子 mailto:sage [2022/03/13(日) 19:38:16.17 ID:lhgOY5DD.net] 文字列リテラルの型は const char[] だが、 C++03 時代は const をはがして char* に (暗黙に) 型変換することが許されていた。 文字列リテラル限定の特別な型変換規則。 C++11 以降ではその規則は削除された。 C++03 時代でも非推奨なんだけど昔の本だとちょくちょくやってるんだよなぁ。 俺は持ってないから知らんけどロベール本とか有名な本でもそういう記述があるらしい。
485 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 19:51:18.33 ID:hJwK9XXb.net] ロベール本は<iostream.h>とか書いてあったしC++03ですらないんじゃない?
486 名前:デフォルトの名無しさん [2022/03/13(日) 19:54:43.65 ID:mTtq0Uph.net] >>470 すみませんやっぱりよくわからなかったです アドレスとか調べてみてみました 元の初期化されたばかりのs2を@、ansをAとします •#if1において 最初の(1行目の)s2は@を指している 最後の(3行目の)s2はAを指している •#elseにおいて 最初の(左の)s2はAを指している 最後の(右の)s2は@を指している どうやらこうなっているようなのですが、なぜ逆になるのでしょうか?
487 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:06:11.90 ID:GnTJD4Pm.net] >>471 VC++以外のがLinuxおじさんってイメージがある 実際ワイは平成2桁生まれやけどVC++しか触ったことないわ Windowsじゃないとゲームしづらいし
488 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:12:18.98 ID:e39Fa4ck.net] そんな調べれば一瞬で分かるようなこと自分で調べろよおっさんw
489 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:13:33.25 ID:e39Fa4ck.net] お前の間違いをいちいち指摘するのは最近もう面倒w ヒントはあげたしw
490 名前:デフォルトの名無しさん [2022/03/13(日) 20:14:46.38 ID:mTtq0Uph.net] あなたには聞いたつもりはないのですけど…
491 名前:蟻人間 mailto:sage [2022/03/13(日) 20:18:18.08 ID:+6IhxTlU.net] どいつもこいつもおっさん
492 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:28:56.19 ID:GnTJD4Pm.net] おっさんって大体C++17以降アレルギーもってるよな 言語の進化に付いていくのをやめると新機能への愚痴ばかり言う老害になっちゃうんだよな ああはなりたくないからC++40くらいまでは初心を忘れず学習し続けると心に誓うわ
493 名前:蟻人間 mailto:sage [2022/03/13(日) 20:35:15.04 ID:+6IhxTlU.net] WinXPをサポートしている最新のC++規格となると選択肢が少なくなるのが嫌になる。
494 名前:デフォルトの名無しさん [2022/03/13(日) 20:35:18.33 ID:R0s3zSYd.net] Rustに変わるのでは?
495 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:56:20.40 ID:e39Fa4ck.net] linuxだとgcc 9か10がデフォルトだし、9,10のデフォルトのc++標準は14だから 現状17,20は断らないと使えないので、自分で使う分以外は可能なら11、無理でも14までにしたいというだけ VC++2022を除き20はデフォルトだと使えないので、自分で使う分でも20は滅多に使わない twitterとかで記事を見かけたら23までは内容見たりするけど、自分で追っかけるのは17まで、興味があれば20までかな 23だとrangeがすごいことになってるみたいね
496 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:57:02.88 ID:BWiYjhGb.net] >>478 評価の順と関数の実行が同じとは限らない。 だったかな 要するに cout<<s2@<<test(s2)A<<s2B; 君の考えでは@の評価、関数test(s2)Aが実行されtest(s2)Aの評価、最後にs2Bが評価される、だろうけど 実際には先ににtest(s2)Aが実行され、その後s2@の評価、test(s2)Aの評価、s2Bの評価と続く って感じと思う
497 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 20:57:21.78 ID:GnTJD4Pm.net] >>478 言語バージョンはいくつ? 逆になってるというよりC++17未満だと#elseのほうの評価順は未定義だからてきとーになってるってことだと思うが
498 名前:蟻人間 mailto:sage [2022/03/13(日) 20:59:06.58 ID:+6IhxTlU.net] LinuxでDirty Pipeの脆弱性が出たからバージョンアップしとけよ。
499 名前:デフォルトの名無しさん [2022/03/13(日) 21:22:04.20 ID:mTtq0Uph.net] >>488 >>489 ありがとうございます https://cpprefjp.github.io/lang/cpp17/expression_evaluation_order.html それっぽいのを見つけたので詳しく読んでみたと思います 言語のバージョンは多分C++11てやつです GCC4.4.0のコンパイラーでした 本の付録についてきたものですが、結構古いやつだったみたいです コンパイラー新しくすればもしかしたら動くのかもしれないですけど、あんまりこういうことはしないほうが安全なんでしょうかね
500 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 21:30:44.52 ID:5qwn5s+6.net] >>478 この手の副作用が2つ以上現れるような動作は未規定か環境依存か未定義動作だったりを疑わなきゃいけない cout<<s2<<test(s2)<<s2; の評価順序は規格で決まってる? Noならコンパイラの気分次第で変わったりする。 何が起きてるかを知るにはコンパイル結果の逆アセンブリを見るのが一番手っ取り早い
501 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 21:33:21.26 ID:e39Fa4ck.net] ちなみにVC++だと2019のオプション指定なし(C++17)で再現するんだけどねw
502 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 21:35:03.87 ID:e39Fa4ck.net] あ、14だったw https://godbolt.org/z/fcPT6jjhf
503 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 21:37:39.20 ID:e39Fa4ck.net] gccは9でデフォルト(c++14)指定でも再現しない
504 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 23:06:02.21 ID:1ZaIS7m7.net] おまえもうハゲ始めてるのに何若者のフリしてんだよw
505 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 23:19:39.35 ID:bI6DiOQ5.net] なんやおっさんが書きこんだらあかんのか おっさんがC++やったらあかんのか、ええおい!
506 名前:デフォルトの名無しさん mailto:sage [2022/03/13(日) 23:47:54.26 ID:e39Fa4ck.net] 今どきこんなスレ見てるのおっさんしかいねーよw
507 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 00:10:40.47 ID:ci4mynDi.net] もう5ch自体がオッサンのすくつやしのう
508 名前:デフォルトの名無しさん [2022/03/14(月) 02:20:02.12 ID:rjFiO5pI.net] >>499 YouTubeで動画投降して、視聴者の年齢層を見てみたら、100人以上ユニークユーザー 数がいるのに、なぜか、45〜54歳が 100% になっていた。 日本にはこの年齢しか存在せず、後は幻影であることが明らかと成った。
509 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 02:28:09.93 ID:U570WKgz.net] URLを提示しない
510 名前:ニ何とも・・・内容次第では? [] [ここ壊れてます]
511 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 09:03:41.97 ID:HoF8kO8q.net] >>484 昭和生まれだがclangが未だにstd::pmr::memory_resourceに未対応なことに怒ってるぞ (experimentalにあるがほとんど実装されてない
512 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 11:38:57.54 ID:ndyVaXT0.net] 昭和ってことは戦争体験したんですね
513 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 12:26:33.29 ID:GQP59fXj.net] 生家のすぐ隣が根岸の米軍住宅だったのが俺の最も古い記憶だな
514 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 12:27:46.01 ID:alz+gcb+.net] カトラーも昨日で80歳なんやで
515 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 12:28:28.21 ID:7hHUAGdp.net] >>504 はえー ええところに住んでいたんやな 森林公園のそばか?
516 名前:デフォルトの名無しさん [2022/03/14(月) 12:32:31.77 ID:VKZDzId0.net] c++17までカバーしてる良書教えてちょ
517 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 13:39:35.57 ID:9629WIm4.net] 俺の周りだと本物の老害は数が少なくて、脳が老害化してるアラサー前の若者が大多数だな
518 名前:デフォルトの名無しさん [2022/03/14(月) 14:53:18.27 ID:2N61p2oq.net] ニュース ・ トレンド 世界供給の約半分カバー トレンドトピック: マック最終日、半導体不足 ツイッターのトレンドだけ見てたらAppleのマックのほうに見えるよな
519 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 16:35:39.58 ID:GQP59fXj.net] >>506 美濃屋の工場らへん
520 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 18:24:00.75 ID:7hHUAGdp.net] >>510 もしかして本牧あたり?
521 名前:デフォルトの名無しさん mailto:sage [2022/03/14(月) 20:13:17.28 ID:GQP59fXj.net] >>511 美濃屋の工場は現存してるからググるマップあたりで調べてみては? 今はどうか知らんが当時は割れせんをタダでくれてたので 未就学のガキがお使いしてた、そいういう距離だ
522 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 22:33:04.75 ID:x6RxSJEa.net] 追ってたらオッサンの会話にしか見えないやんけw
523 名前:デフォルトの名無しさん mailto:sage [2022/03/15(火) 23:43:47.86 ID:IA+izEeV.net] >>508 いや実際今の若人のほうが老害化(頭がカチカチ)になってるパターン多いよ なんつかーSNSとかの弊害だろうな、方法論にはつねに正解があってそこからはずれるのは全部ダメ! みたいな、自分で試さずに「誰某というカリスマが言うてるのが正しい」みたいな発想のやつが多い
524 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 00:07:07.20 ID:kR1ttM2X.net] 常にググって解法らしきものを見つけることを研鑽してきた弊害やろな。 誰かの踏襲しか出来ん、本人一人しかやってない、 どこにも参考資料なしとなったら思考停止か もしくはあきらめちまう層。
525 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 00:36:18.16 ID:892EcJv9.net] 分野の蓄積が多くなるとそうなのかもね
526 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 01:22:56.72 ID:dDBzFjnz.net] ム板でC++の規格以外の話をすることは板違い
527 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 08:57:09.69 ID:eFhooB6a.net] >>515 デンマーク人やアメリカ人が作った言語にタダ乗りしてるジャップ全体に当て嵌まるな 年齢関係ねぇ
528 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 09:28:03.54 ID:9b9buJuo.net] >>518 朝鮮人は板違い
529 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 09:47:16.21 ID:sZ1wd+Ly.net] 和製言語つーとRubyとか?
530 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:01:22.67 ID:qWEoTKGw.net] >>519 ジャッッッッッップwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
531 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:50:04.72 ID:sZ1wd+Ly.net] >>518 タダ乗りか? 言語は使い手がいなきゃ消えていくだけだぞ 若害を指摘されてムカついたのかも知れんが 的外れな逆ギレは相手の主張を補強するだけだ
532 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:00:56.73 ID:UOk2lOR/.net] >>518 日本に寄生しているチョン君に言われてもねぇ 日本人は色々と貢献しているけどチョン君ときたら自分さえ良ければだからな
533 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:26:21.48 ID:NlrnkDXA.net] >>521 火病w
534 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:33:19.05 ID:FLjIdsXf.net] さすがに極東板かマ板行け。
535 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:41:44.02 ID:w0SS0fac.net] ネタにマジレスするのもあれだが、国民的アプリすらも実質韓国産という惨状なのに韓国をバカに出来る神経が本当に分からない まぁそれこそアメリカ人とかであれば分かるが
536 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:52:37.30 ID:sCgw3/BF.net] >>526 あれは日本人プログラマーをハンティングして作らせて完成した途端にクビにしたんだな 知らないとでも思ってんのかよ さすがバ姦酷
537 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:58:06.63 ID:ken1LPi5.net] >>527 体調わるいときはネット断ちして寝てた方がええよ お前のお母さんみたいに無理して死んだら元も子もないよ
538 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 12:29:23.19 ID:eFhooB6a.net] >>527 シナチョンジャップってお互いにお互いで起源主張マウントし合ってるよな そしてお互いにお互いを起源主張と罵り合ってるのがほんま笑える
539 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 12:29:53.35 ID:fL7hhvH/.net] >>529 祖国にお帰り
540 名前:デフォルトの名無しさん [2022/03/16(水) 15:21:21.65 ID:OMEE91WJ.net] EclipseでGNU Autotoolsでビルドしたいんだけど、ワンクリックでファイル構成をパースしてMakefile.amを作ってくれるプラグインてないんかな?
541 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 16:43:46.25 ID:IF2KaGKL.net] >>531 https://gammalab.net/blog/3rgve9rdw2kt5/
542 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:21:01.73 ID:dC1HWmI+.net] defaultって単語が熱いなぁ
543 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:26:44.65 ID:sZ1wd+Ly.net] ロシア国債?
544 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:43:54.03 ID:AUMfJKJU.net] ルーブルをreturnするから問題ない
545 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:44:36.81 ID:dC1HWmI+.net] C++11で正式採用されて11年経つというのに関数のdefault宣言を一度も使ったことがないわ
546 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:47:40.89 ID:lLYtmIck.net] ええ…
547 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:49:13.58 ID:dC1HWmI+.net] >>535 迷惑度でいうとreturnというより例外クラスをthrowする感じに近いですね
548 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:51:06.34 ID:sZ1wd+Ly.net] >>536 = default; より {} のほうが短いってこと?
549 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:54:01.36 ID:dC1HWmI+.net] 短いとは?
550 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:56:55.95 ID:sZ1wd+Ly.net] ソースコードの文字数
551 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 19:05:34.58 ID:gvdy2Zu4.net] bool oprator==(const ThisClass&)const = default; は便利だぞ
552 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 19:32:49.28 ID:YdzJshEX.net] {}の定義はtrivial判定にならないからなあ
553 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:15:30.86 ID:dC1HWmI+.net] 関数のdefault宣言を今まで一度も使ったこと人、正直に手を挙げなさい
554 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:54:55.18 ID:J1wyaesr.net] ノ
555 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:03:43.15 ID:LiWeOEyq.net] そもそもdefault宣言がわからない 何?
556 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:17:44.96 ID:jNwWVkZm.net] struct C{ C(); C(const C&); C(C&&); C& operator=(const C&); C& operator=(C&&); ~C(); // fields int i; std::string s; }; class/structのうちコンストラクタとかの特殊関数を「何も考えずに実装したらこうなるよね」ってのを明示的に宣言する。 上のstructに初期化用の C(int, std::string); も追加するけど元のコンストラクタもそのまま使いたいときとか C()=default; を書いておく。
557 名前:デフォルトの名無しさん [2022/03/16(水) 22:32:26.86 ID:aL91bHGW.net] じゃあ便乗して >>547 &&の意味を教えてください const &の代わりになるんですか?
558 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:40:15.82 ID:J1wyaesr.net] >>547 あーなるほど 便利かもな
559 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:08:39.16 ID:jNwWVkZm.net] >>548 T&&は右辺値参照 C++11で導入された「もう使わない値」を使いわますための仕組み わかりやすい例だと std::vector<int> mk10000(){ // 10000要素のvectorを適当に作って返す } struct C{ using ivec=std::vector<int>; ivec _v; C(const ivec&v): _v(v){} C(ivec&&v): _v(std::move(v)){} }; int main(){ C c(mk10000()); } const T&のやつしかないと、vectorが持ってる10000要素を全部コピーするしかないが、 (その直後にもう使わないコピー元を破棄しなきゃいけない) T&&のやつがあるとvectorが内部で持ってるポインタを差し替えるだけで済む。
560 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:19:48.63 ID:0TydPa2f.net] それだけじゃ誤解しか生まないw https://cpprefjp.github.io/lang/cpp11/rvalue_ref_and_move_semantics.html
561 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:26:37.67 ID:Jym8C6W+.net] 昔はswap咬ましてたヤツだな
562 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 00:06:29.74 ID:duMzaOgi.net] shared_ptr使えばいいじゃない
563 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 00:35:48.54 ID:Oo+Bui2i.net] メモリポインタの差し替えか
564 名前:デフォルトの名無しさん [2022/03/17(木) 00:43:42.18 ID:DrTp92yO.net] >>550 >>551 ありがとうございます 普通の変数 左辺値参照 右辺値参照 ポインタ ポインタのポインタ etc... うーんC++は頭が痛くなりそうですね
565 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:50:00.57 ID:jsnVHM5N.net] >>544 (´・ω・`)の
566 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:50:25.35 ID:faeKJv0z.net] そんなことくらいで頭が痛くなるなら、むしろやめとけw
567 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 03:32:17.05 ID:kCjHZQsl.net] 昨今のコード書かない言語オタクのオナニー拡張はスルーしてよい。
568 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 13:38:21.60 ID:faeKJv0z.net] そのまま動かない部分コードだけ書くバカを除いたら、大抵のスレは多分俺しかコード書いてないけどねw
569 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 13:52:55.92 ID:86Z8hvJ4.net] ム板で「俺はコード書いてるぞ、どうだ偉いだろうエッヘン」 これ寒すぎるんだけど・・・
570 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 14:50:03.04 ID:zTqRydhk.net] ム板だからこそコード書く奴は偉いと思うぞ ただ実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないけどなw
571 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 14:53:55.54 ID:86Z8hvJ4.net] 偉いのか? やっと一人前の板民というだけだろ コード書かないやつがム板ではアウェーなだけで そこから相対的に見て偉いと言うことにどんな意味があるんだ
572 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:07:05.49 ID:zTqRydhk.net] >>562 > コード書かないやつがム板ではアウェーなだけで お前は自分がアウェーという意識を持つべき
573 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:22:32.44 ID:86Z8hvJ4.net] >>563 そこで喧嘩腰かよ 実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないと言ったばかりの 舌の根も乾かぬうちにそれか 頭冷やせ、話はそれからだ
574 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:33:03.66 ID:faeKJv0z.net] >>564 コラコラお前は煽るなw 俺は>>558 に俺のことスルーできなくなっちゃうけどいいの?って言っただけだよ やれマウントだやれドヤ顔だとか、ホームとかアウェーとか、その手の話しはじめちゃうやつはちょっと発想がやばいって あと承認欲求なんていくら高くてもクソの役にも立たんぞw
575 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:37:19.10 ID:kCjHZQsl.net] なにケンカしてるん? おまえら仲良くしろよな^^
576 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:39:26.58 ID:86Z8hvJ4.net] >>565 何が? 俺煽ってないよ 唯一、批判めいたことを言ったのは560だけ 例えばだが562に青筋立てるようなら 俺はコード書きませんと自己申告しているようなものだぞ
577 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:00:27.96 ID:kKKT9czh.net] >>562 みたいなことを書く奴に喧嘩腰とか言われてもなぁw ちょっと頭冷やした方が良くね?
578 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:03:43.13 ID:86Z8hvJ4.net] >>568 あれ? 否定しないのか だったら話にならないな
579 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:15:46.57 ID:0FIEYVVj.net] 何を否定してほしいんだろ… 相当頭に血が上ってそうw
580 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:58:36.33 ID:7ByY4YCs.net] そんなことよりC++の話しようよ
581 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:12:52.60 ID:duMzaOgi.net] 日本のトレンド ちんこ勝負 トレンドトピック: 正式決定 ツイッターの形態素解析エンジンやばくないですか
582 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:16:07.60 ID:VOoj+XQs.net] OSSの拾いもん回してるだけだろ
583 名前:デフォルトの名無しさん [2022/03/19(土) 19:36:28.58 ID:0pH7TqjX.net] std::vector::atの定義がこうなってるんですけど reference at(size_type n); const_reference at(size_type n) const; これはエラーにならないんですか? 戻り値の型だけが違う場合オーバーロードはできないと勉強したんですけど
584 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:45:40.38 ID:jBXtN76z.net] 戻り型だけの違いやないやん thisの違いは仮引数の違いやで
585 名前:デフォルトの名無しさん [2022/03/19(土) 19:48:56.32 ID:0pH7TqjX.net] あ、なるほど ありがとうございます! あと2つが呼ばれるときの違いもわからないのでそちらも教えていただきたいです
586 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:15:27.83 ID:Cc07y5v9.net] 少なくともconstオブジェクトからはconstメンバ関数しか呼べないね
587 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:28:47.85 ID:Cc07y5v9.net] www7b.biglobe.ne.jp/~robe/cpphtml/html02/cpp02024.html と思ったら非constオブジェクトはキチンとconstじゃない方を呼ぶんだね
588 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:29:14.00 ID:hj0ig94x.net] const Tからはconstメンバ関数しか呼べない Tからはconstじゃない方を優先的に呼ぶ constメンバ関数しかなかったらconstメンバ関数を呼ぶ
589 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:30:44.79 ID:hj0ig94x.net] わかりやすいのはvector::size()const; constから使えるし、constじゃなくても普通に使える
590 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:31:32.90 ID:HgLoiHN9.net] constあるなしでオーバーロードできるんですか?
591 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:36:43.47 ID:hj0ig94x.net] >>581 できる 件のvector::at(size_t) もそうだし、operator[](size_t)もそう vector<int>{0}; const vector<int>cv{0}; v[0]=1; // int& operator[](size_t); cv[0]=1; // const int& operator[](size_t)const; こっちがコンパイル通ったらまずいよね
592 名前:デフォルトの名無しさん [2022/03/19(土) 21:07:20.86 ID:0pH7TqjX.net] 皆さんありがとうございます ちょっと自分で整理してみたんですけどこれで合ってますか? ☆普通の関数の場合 •引数のconstの有無だけのオーバーロード→コンパイルエラー int A(int x); double A(const int x);//エラー •constなし引数への代入→const有無どちらも可 int A(int x); int i=0; const int c=0; A(i);A(c); •const引数への代入 → const有無どちらも可 int A(const int x); A(i);A(c);
593 名前:デフォルトの名無しさん [2022/03/19(土) 21:08:09.65 ID:0pH7TqjX.net] ☆メンバー関数の場合 •thisに対するconstの有無だけのオーバーロード → OK class B{ public: int C(){return 0;} int C() const{return 1;} }; •const無メソッドだけあるとき→const変数からは呼べない class B{ public: int C(){return 0;} }; B b1; const b2=b1; b1.C(); b2.C();//エラー
594 名前:デフォルトの名無しさん [2022/03/19(土) 21:08:27.42 ID:0pH7TqjX.net] •const有メソッドだけあるとき →const有無変数どちらからも呼べる class B{ public: int C()const {return 1;} }; b1.C(); b2.C(); •両方あるとき→変数のconstの有無に対応したものが呼ばれる class B{ public: int C(){return 0;} int C()const {return 1;} }; b1.C();//0 b2.C();//1
595 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:41:36.92 ID:DslNhsx1.net] 最近静かだったので見てなかったら、めっさ自演されてるw
596 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:43:30.89 ID:DslNhsx1.net] const云々とか流石にやばすぎなので、↓へw 0からの、超初心者C++相談室 https://mevius.5ch.net/test/read.cgi/tech/1542002113/
597 名前:デフォルトの名無しさん [2022/03/19(土) 21:50:03.17 ID:0pH7TqjX.net] 😢 ありがとうございます スレ汚し失礼しました
598 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:51:54.61 ID:JACgrnJr.net] volatileメンバ関数の話もしないと片手落ちだぞ
599 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:02:55.92 ID:hj0ig94x.net] >>588 その認識で合ってる volatileもconstも伝染する性質が同じだけだからconstだけ覚えておけば問題ない 586はプログラム板で意味もなくマウント取るだけおじさんなので無視していい
600 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:17:28.58 ID:DslNhsx1.net] マウント取りたいだけ、認められたいだけなのはお前w 自作自演のconst劇再演して面白い?w
601 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:21:01.58 ID:lIF6fzsd.net] >>558 を見てオモタが、 規格委員会が新しい言語要素を仕様化する際に、必ずコンパイラに実装してみて 実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証するフェーズが入ると思うんだけど その手の実装ってどこがやってるの?コンパイラメーカーに規格書のプレプリントを渡して丸投げ??
602 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:23:47.24 ID:lIF6fzsd.net] もし規格委員会自身がやっているんなら神の実装技術を持った集団が規格委員会に居るはずで、>>558 の言い様は正しくないかもしんないが、 万が一プロプラエタリーなコンパイラメーカーに丸投げなら参入障壁を高めるために複雑怪奇な仕様をあえて無理矢理引き受けるケースもあるかもしんない かもしんない運転、
603 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:35:55.70 ID:1+CNf8az.net] お前がそんな風に何も調べもせずに妄想だけで他人に聞いちゃう読んで字のごとくの「丸投げ」と一緒にしちゃダメだろwwww
604 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:37:12.20 ID:1+CNf8az.net] 調べればすぐ出てくるけど、 https://isocpp.org/ で聞けw
605 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:45:20.01 ID:lIF6fzsd.net] いやすまん確かに >(規格委員会が)実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証する というのは妄想やったわ;;;
606 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:48:15.78 ID:1+CNf8az.net] 何か裏を取れる事実がないなら全て妄想なんだよw お馬鹿さんw
607 名前:デフォルトの名無しさん [2022/03/20(日) 16:56:04.20 ID:XASZAdc/.net] すいません教えていただけないでしょうか 棒読みちゃんっていうフリーソフトが一向に更新されないので 真似て作りたいのですがどのようなプログラム言語を学んだらよろしいですか?
608 名前:デフォルトの名無しさん [2022/03/20(日) 17:07:50.89 ID:XF1vAqW3.net] 参考書を一冊読み終わった程度のガチガチの初心者です。 初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。 VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。 そもそも質問する場所はここであってますでしょうか?
609 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 17:14:15.90 ID:n/9ce90/.net] 以下スレのほうが質問するのにあってると思うます Win32API質問箱 Build127 https://mevius.5ch.net/test/read.cgi/tech/1639053176/
610 名前:デフォルトの名無しさん [2022/03/20(日) 18:05:54.67 ID:XF1vAqW3.net] >>600 すみませんありがとうございます。
611 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:52:39.86 ID:kJ/tleYc.net] なぜガチガチの初心者がなぜC++/CXいってまうんや。 昔はまだしも、C++17とCX両方襲いかかってくるから 理解するの大変な上、理解しても先が難しいと思うが。 普通にc#+やむなしなトコだけC寄りのC++でいいと思うが。
612 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:32:45.31 ID:EuUP+kdP.net] >>598 テキスト文字列を合成音声で読ませるってことならスピーキングライブラリに頼りきることになるだろうしPythonとかでお手軽にできるんじゃない ライブラリに頼る場合はPythonとかJavaとかC#らへんが適正だと思う 自分も少し前にC#でそういうの作った事あるけどWindowsならSystem.Speech.dll参照して簡単に喋らせられたな
613 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:15:40.56 ID:1+CNf8az.net] 別に喋らせるんならC++でもpythonでもC#でも出来るけど、Javaは難しい(面倒)だろうねwwwww
614 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:38:16.04 ID:UJahVNmy.net] パピコンでも喋るのに
615 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:46:10.52 ID:1+CNf8az.net] 流石にそのレベルの音声合成と一緒にしたら可哀想w PCM音源がなかったので、FM音源でしゃべらせたり、beep音で音楽(単音・音量調整なし)鳴らしたり効果音出したりが当時の流儀w
616 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 01:56:07.23 ID:TlR/Mg8q.net] ゲームアーツのソフトがFM音源でよく喋ってたわ
617 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 13:45:57.08 ID:sqIPbQd/.net] C# - C++/CX - ネイティブC++ というふうに間に挟めば時としてマーシャリング規則がメドイP/Invokeからおさらばできる……! ような気がする……!!
618 名前:デフォルトの名無しさん [2022/03/21(月) 13:48:08.86 ID:ROKj/vns.net] どうも599です。 買った参考書の終わりの方にUWPでなんか作ろうって書いてあったのと、スマートポインタってなんかいいなって思って、そんでC++/CXかなって思いました。 そもそも言語の選び方もなんか間違ってたっぽいんですけど、なんか、 最速っていう響きに寄せられてなんか、c++すごそう・・・、っておもって続けてます。簡単なものでもなんでもいいからなんか作りなと知人に言われたので、とりあえず簡単なタイマー作ることにしました。
619 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 13:55:13.39 ID:2Z4azz5I.net] >>608 そこはC++/CXじゃなくてC++/CLI。というかまさにそのために作られたのがC++/CLI
620 名前:デフォルトの名無しさん [2022/03/21(月) 14:01:07.93 ID:ROKj/vns.net] 今やっと昨日の質問の答えを見てきたんですけど、UWPやるのはやめといたほうがいいらしいですね。 VisualStudioでタイマー作ろうと思ったんですけどおすすめのテンプレートありますか?
621 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:05:11.38 ID:sqIPbQd/.net] >>610 えっ
622 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:21:34.68 ID:j56ex+kV.net] C++/CLIでコンパイルされたDLLはC#で書いたDLLと同じように利用できる C++/CXは知らん public ref class C{ public: property System::String^ S1{ System::String^ get(){return _S1;} void set(System::String^value){_S1=value;} private: System::String^ _S1; } }; ↓ class C{ string S1{get;set;} }
623 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:23:46.00 ID:TlR/Mg8q.net] cliはc#と変わらんからなあ 間に挟む意味はないよ
624 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:57:53.89 ID:HCPaDxP+.net] delphiとc++が合体したような言語よの
625 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:13:19.47 ID:BAdp3agq.net] 嘘つくな・・・あと
626 名前:UWPならその名のついたスレに行け C++/CLIはマネージドコードを混ぜられるネイティブコードってだけで、C++の大規模な「MS独自拡張」 これを更に拡張してUWP要素を載せたのがCX C++じゃないんで、独自スレでも立てて一人で盛り上げてくださいw 個人的にはUWP自体がオワコンなので、せめてC#でやればいいのにとしか思えないがやるのは君の自由だw [] [ここ壊れてます]
627 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:22:20.19 ID:OLHk6lmK.net] >>616 マネージド拡張と勘違いしてるんでは?
628 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:28:56.05 ID:BAdp3agq.net] https://docs.microsoft.com/ja-jp/cpp/extensions/component-extensions-for-runtime-platforms?view=msvc-170
629 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:32:58.53 ID:Prmlj1K5.net] 今はC++もクロスプラットフォームに対応する時代ですよ いきなりWindowsべったりの書き方を覚えるより簡単なコンソールアプリとかQtから始めるのをお勧めしておきます
630 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:37:45.51 ID:BAdp3agq.net] どうせいつものVC++使うconstの話ばかりするおじさんの自演w
631 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:46:38.57 ID:2xjgwrAK.net] MSの独自拡張ガーとか言われてもC++を世界に普及させたのはMSですからね。
632 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:55:58.33 ID:TEVzcoXo.net] MFCのことかね?
633 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:30:28.04 ID:RS8xXzlz.net] ユニコードのことか〜
634 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:33:36.97 ID:zSyDDKWU.net] utf16 なんか消えて、utf32 と uft8 だけになればいいのに…
635 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 20:04:10.64 ID:HCPaDxP+.net] J#が一番ワケワカランかった
636 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 22:37:44.93 ID:dYQgVp3+.net] ちんちんシュッ!シュッ!シュッ!
637 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 08:04:59.19 ID:jyd+b1no.net] なんでqmlって機能があるQtよりelectronが普及したのか
638 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 08:19:14.63 ID:4wXemx3i.net] >>627 Qtはライセンスが面倒じゃない? 特にwindowsはよくわからん。
639 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:17:12.52 ID:e045zQYf.net] >>619 プラットフォームをWindowsからQtに乗り換えるだけじゃ同じことじゃん アプリから見てAPIでしかないんだから
640 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:31:07.58 ID:OaCGWLhd.net] 泥舟に乗り換えろと言われてもな。
641 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:46:04.30 ID:mouTiTR6.net] 共通プラットフォーム使うのは全然マシだと思いますよ
642 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:51:02.79 ID:OaCGWLhd.net] Javaの失敗から何も学ばないのは馬鹿というものだ。
643 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:53:19.42 ID:mouTiTR6.net] C++の失敗とかここで言われても
644 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:08:25.57 ID:7HP7s9m4.net] じゃ鉄舟にのりかえるわ
645 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:48:01.28 ID:BLG0uiz2.net] Win32で書いたソースコードそのままでスマホで動かせるんか?
646 名前:蟻人間 mailto:sage [2022/03/22(火) 12:59:12.46 ID:BjxSmr6W.net] >>635 最近はARMで動くWindowsもあるよ。
647 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:03:45.42 ID:e045zQYf.net] こういう質問、Windowsとスマホの用途の違いという根本を蒸ししているパターン多いよな 前提になっているパーツや環境だって違うのに「自分は移植作業したくない」 じゃあPGやめたらって話
648 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:04:16.00 ID:e045zQYf.net] s/蒸し/無視/g
649 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:04:33.14 ID:njeYgDdQ.net] >>636 MS も Windows phone から撤退したじゃん
650 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:31:47.44 ID:1zUmccnl.net] Win32は「Windows」という環境依存定期
651 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:37:00.07 ID:OaCGWLhd.net] 処理系依存していいのかC/C++の最大のメリットだし。
652 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 11:56:26.96 ID:I3LWr1Un.net] 変なのキタ https://ossia.io/posts/minimum-viable/
653 名前:デフォルトの名無しさん [2022/03/23(水) 13:08:39.58 ID:AtA1Snji.net] >>642 構造体を入れ子にしてGUIノードツリーを表現するの面白いね 最近はXAML/FXML/HTMLなどXML派生言語でGUI構造を表現するものが多いけど、言語固有の構造体で表現するほうがパース・オーバーヘッドがなくていいのかな まだ、ボタン押下時のコールバック(ハンドラー)など不明点が多い
654 名前:デフォルトの名無しさん [2022/03/23(水) 14:11:26.99 ID:MxMb2yoX.net] ``` void fuga() {} auto hoge = fuga; int main() { std::cout << GetFuncName(hoge) << std::endl; } ``` こんな感じのコードを書いたときに文字列で"fuga"を返してくれるようなGetFuncNameの実装方法ってありますか? はじめは #define GetFuncName(var) #var とマクロを定義すれば良いかと思ったのですがこの定義でGetFuncName(hoge)とすると"hoge"が返ってきてしまいます...
655 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 14:25:09.91 ID:KVWBweE9.net] 実行時に動的に取るためにはどっかで入れてあげないと駄目ですなー
656 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 16:45:23.47 ID:U3MPlBH2.net] ある比較関数 f = [](int l, int r){return l > r;}; があったとして、priority_queue<int> に f を渡したときと vector<int> を f で sort したときに両者の順番が異なるの非自明過ぎるのだが なんで priority_queue の方はこれで昇順になるの?
657 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 16:49:02.84 ID:nUwfSeaH.net] extern C declspec dlldxport 付けて、 実行時に自分自身をサーチすれば、付けた関数については 文字が残るから可能だけど、やるかと言われたら まあ最悪一歩手前の方法やな...
658 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 17:47:41.73 ID:Rq928qXu.net] enumの名前ほしがったり関数名ほしがったり 最初からC#使えばいいんですよ。
659 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 18:52:01.34 ID:wWGNqGIP.net] C++erは速度厨なので名前を実行時解決するC#のリフレクションはあり得ない C++23に入るかもしれない静的リフレクションを待ちましょう https://cppmap.github.io/standardization/cppx/#_3
660 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 18:58:48.40 ID:nUwfSeaH.net] 静的リフレクションとか意味うっすw リフレクション欲しいのは大抵自分自身が定義するものではないのに。
661 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 19:02:11.91 ID:4wwS6ZaC.net] 用途に応じてベターな手段を選ぶことができるとこまで整備されると いいね
662 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 19:30:22.64 ID:Rq928qXu.net] よくねーな。C++はとことん薄っぺらであるべき。
663 名前:デフォルトの名無しさん [2022/03/23(水) 19:48:39.65 ID:BZjVj5dO.net] >>646 template <class T, class Container = std::vector<T>, class Compare = less<typename Container::value_type>> class priority_queue デフォルトはlessで<を定義して、降順にするのが元の意味 fで<の意味をひっくり返せば、昇順になる
664 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:10:07.72 ID:8yKlU7lo.net] つーかリフレクションてコンパイル時に決定できない事を扱うから意味あるのに 性的に解決できることはリフレクションとしては意味がない
665 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:35:05.43 ID:FjwJYdtM.net] >>649 速度厨? なにバカ言ってんだ ハードソフトまで含めた全てのトータルバランスを追求するんだよ そうじゃないおまえの眼がこの世界を正しく写
666 名前:せないだけだ [] [ここ壊れてます]
667 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:52:55.01 ID:k8Z8CHR2.net] またマクロ/const/リフレクション/windowsおじさんが自演で暴れてるw マクロ→廃止すべき const→常識なので話題に挙げないべき リフレクション→静的/手動なべき(というか動的にリンクされない限り、C++では不要) windows→滅びるべき なのでおじさん不要w
668 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 21:42:30.64 ID:Rq928qXu.net] ATL使ってCOMで実装しなさい。
669 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 21:47:56.30 ID:nUwfSeaH.net] COMとかWin用に大型アプリ提供してる会社しか 継続してないんじゃないか。 C#のCOMは簡単だし妙な記述皆無だから まだ使ってる人居そうだが。
670 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 22:19:07.27 ID:k8Z8CHR2.net] COM/DCOMの技術は良かったし、MSはときどきいい技術を作るんだけど、元の信用度が足りなくて普及しなくて失敗するw COMやC++/CLI以降の話は正確にはC++じゃないので別スレでも作ってやれw
671 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 22:26:18.54 ID:Rq928qXu.net] MSの信用が足りないとかCOMが普及しなくて失敗したとか釣り針でかすぎ。 井の中の蛙というか下水道のゴキブリ。社会に出たことがないのだろう。
672 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:17:30.63 ID:k8Z8CHR2.net] 釣りじゃねーよw 当時OMGのCORBA、JavaのRMI、MSのDCOMとかあったけど、全部潰れてSOAP一択になったろw 今じゃそれも廃れてRESTだけ残ってるw 井の中の蛙はお前w
673 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:26:20.36 ID:e3uFLGnE.net] DCOMその他とCOMを同列に扱うな
674 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:37:17.78 ID:k8Z8CHR2.net] ただのCOMなんて・・・w ActiveXと一部のコントロールで使われただけだろw 一言で言えばゴミw
675 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:48:22.86 ID:Rq928qXu.net] 釣りかと思ったらこいつガチの引きこもりやんw
676 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 00:06:11.51 ID:1Vr2GJ3G.net] 自己紹介乙w ATLほんとに使ったことあんのか?w 俺はWin3.1のMFC/OLE時代からWindowsどっぷりで作りまくってたぞ Java/.NET以降はWindowsあんまり触らなくなったけどなw
677 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 00:19:47.29 ID:JVs5nwp2.net] 今でもWindowsはcomの塊。IE、DirectX、Office全部comやで。 一太郎にExcelの表貼れるのも、vbscript、perlからExcel呼べるのも全部comのおかげ。 専ブラが一日で作れるのもcomのおかげ。 規格だけで実装では禄にオブジェクト間通信できなかったCORBAを COMの対抗馬として本気で持ち出すあたりが無知で笑える。圧倒的MSの勝利。
678 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:01:10.28 ID:1Vr2GJ3G.net] そりゃWindowsはOLE時代から使ってるから当たり前だろw むしろ他で使われてなければ負けなんだよw
679 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:08:56.24 ID:1Vr2GJ3G.net] あと普通にCORBAは結構実装されてんぞ COMが他のプラットフォームで使われてんの見たことないし、MS以外のCOMもWindowsプラットフォームでも結構レアw 専ブラなんて今どき何で作るのか知らんが、普通ならElectronで書くだろうし、COMってIEコンポーネントで作るのか???w バカも休み休み言えw
680 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:38:18.08 ID:y95b8UUh.net] Electronだと外からの操作大変だしアプリへの組み込み難しくなるから(electronの中で戦う苦しい状態に) 普通はWebView2もってくんじゃないかな。 どんな独自アプリでもサクッと組み込めるっしょ。
681 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:15:16.69 ID:1Vr2GJ3G.net] ないないw Electron超簡単だよw JS書けるだけでいいし、すごい面倒くさいよw 二重管理だからw WebView2なんてほとんど使ってるやついないだろうし、何でも外からやらないといけないからすごい大変そうw Webの画面を表示したいのでなければ俺なら絶対に使わないw
682 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:38:00.53 ID:+RGleBjy.net] 今はElectronより高速なTauriだな
683 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:39:48.55 ID:1Vr2GJ3G.net] TauriとかWebView2よりないw
684 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 03:31:57.74 ID:DeDdmrpu.net] Tauri>>>Electronで大方の勝負ついた感じだな
685 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 04:02:03.79 ID:y95b8UUh.net] Electronて既存で出来上がってるアプリの一部、 一つのタブ内やパネル内に手軽に組み込めるの?
686 名前:はちみつ餃子 mailto:sage [2022/03/24(木) 04:16:18.85 ID:3pj9A089.net] WinRT は COM がベースだよ。 C++ から利用するなら旧来の API より使いやすいんだが、 WinRT もそれほど積極的に活用されてる感じはしないな。
687 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 04:28:29.36 ID:1Vr2GJ3G.net] そこに気付くとはw C++のままだからな .NETにすると自動的に変換可能なCOMになるっていうw
688 名前:はちみつ餃子 mailto:sage [2022/03/24(木) 04:39:56.11 ID:3pj9A089.net] ?
689 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 05:46:41.46 ID:1Vr2GJ3G.net] .NETのアセンブリは元々publicなら設定によりCOM参照可能に出来る https://docs.microsoft.com/ja-jp/dotnet/framework/interop/exposing-dotnet-components-to-com WinRTは言語的な拡張なしに=C++のままで.NET(だけじゃないけどw)とinteractionするので、 https://en.wikipedia.org/wiki/C%2B%2B/WinRT 必然的にCOMになるよねって言っただけw
690 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:07:41.33 ID:JVs5nwp2.net] > むしろ他で使われてなければ負けなんだよw 圧倒的シェアのWindowsではなく ニッチ市場で使われないと負けという謎のオレオレルールw
691 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:22:11.34 ID:s6VdVAhb.net] イキッてるくせにCOMがそもそも何のためにあるのかがわかってないやつが散見されるな
692 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:44:02.07 ID:1Vr2GJ3G.net] そもそも論ならWindowsのコントロール間でデータを授受するための仕組みであるOLEの成れの果てだぞw ただ最終的に目指していたのはDCOMで、プラットフォーム非依存、DLLヘルからの脱却/GUID(UUID)での識別/バージョン管理などのローカル諸問題解決を含む、RPCだよw .NET以降は表立って出て来ない形になり、Windowsでカスタムコントロールを作ったりしない限り、言葉としてもほぼほぼ失われたものだと思ってるw
693 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:47:15.28 ID:JVs5nwp2.net] > COMが他のプラットフォームで使われてんの見たことない つ OpenVMS
694 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:55:15.79 ID:1Vr2GJ3G.net] VAXは流石に名前しか知らんw マニアックすぎるだろw Openになってからも興味ないし、Alphaチップマシンは使ったことあるけど、普通にWindows動いてたよw
695 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 08:11:46.86 ID:s6VdVAhb.net] APIの提供形態ってだけ APIで発行された要求を処理している何者かがどこにあろうがそういう問題じゃないし 他の類似するものと比べるのもナンセンス VirualAllocとGETMAINを比べるような不毛な話だ
696 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 08:34:27.56 ID:1Vr2GJ3G.net] そこでIBMとか・・・時代遅れにもほどがあるでしょ なんでそんなどんどん話を逸していくの? 俺はDCOM的意味合いでしかCOMという用語を使ってないし、文脈的にはプラットフォーム非依存な話だと思ってたんだがw
697 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 09:33:43.04 ID:JVs5nwp2.net] C++はオブジェクト思考言語で、COMやCORBAはオブジェクト間通信の技術で、 ネットワーク越し、異処理系間通信もできるからといってそれのみと限定するほうが謎。 しかもコケたCORBAはともかくCOMが普及せず失敗したとかMS-OfficeやWindowsは普及してないと言ってるようなもの。 OLEの成れの果てと言うが木を見て森を見ずというか、むしろ草を見て地球を見ずレベル。
698 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 13:52:17.42 ID:TSqeyWkd.net] 氷河期世代特有のMSアンチおっさんは放置しておけ
699 名前:デフォルトの名無しさん mailto:age [2022/03/24(木) 16:22:26.20 ID:M4wmYApX.net] template引数によって関数の定義有無を変えたいのですが、そのようなことは可能でしょうか? template<typename T> class Test { public : FuncA(){ ・・・ } FuncB(){ ・・・ } ←Tがfloat型以外のときに定義するようにしたい }
700 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 16:50:06.09 ID:6Nkoi7KJ.net] >>687 Linuxとかに手を出して、ちょっとPCに詳しくなった気になってMSアンチになるやつはどの世代にもいるから安心しろw
701 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:02:11.79 ID:RVLAMmSf.net] >>688 C++20の<concept>使えるなら void FuncB()requires(!std::same_as<T,float>){...}
702 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:11:46.20 ID:s6VdVAhb.net] conceptは要するにSFINAEだから C++17ならこういけばいい auto FuncB() -> std::enable_if_t<!std::is_same_v<T, float>, void> {}
703 名前:688 mailto:sage [2022/03/24(木) 17:32:02.64 ID:M4wmYApX.net] >>690-691 最近のC++ではそんなことが可能なんですね・・・!! ありがとうございました!!
704 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:57:10.73 ID:OAaMfHu2.net] あとは特化テンプレートとか
705 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 18:00:33.75 ID:s6VdVAhb.net] 最近のっつーかenable_ifはC++11から使えるぞ
706 名前:688 mailto:sage [2022/03/24(木) 18:09:06.73 ID:M4wmYApX.net] >>693-694 ありがとうございます!
707 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 18:09:14.56 ID:RVLAMmSf.net] >>691 そのSFINAEはまずい class Test<float>が実体化された時点でfuncBが実体化される (funcBはtemplateではない) 実体化した時点でfuncBの返り値型がtemplate依存のenable_ifではなくなるためコンパイルエラーになる
708 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 19:35:07.28 ID:1Vr2GJ3G.net] MSアンチはどの世代でも世界的に多いし、WindowsありきのOLEのような技術だけを指してCOMと言ってたら、Windowsの普及=MS Officeの普及=COMの普及になってしまうからなw C++=OOP言語=RPCはCOM/CORBAというのは普通に自然w Windowsだけで普及を語るのは正に草を見て地球を見ずレベルw OSSなモノだと逆にWindowsだけ動かないという現象も日常茶飯事w それくらい嫌われているw また部分だけで動かない例挙げて、メチャクチャになってるなw ちゃんと動く例を挙げて、条件を明確にしとけw _tとか_vとかもあれだしw Windows坊やたちはこれだから・・・w // C++11〜 #include <type_traits> template<typename T> auto FuncB() -> typename std::enable_if<!std::is_same<T, float>::value, void>::type {} int main() { // FuncB(); // error: no matching function for call to ‘FuncB()’ // FuncB<float>(); // error: no matching function for call to ‘FuncB()’ FuncB<int>(); return 0; }
709 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:24:41.52 ID:eqpcVqC2.net] MSアンチというよりもMSの囲い込みが強引すぎて、他の環境を知ってしまうとMSから離れたくなるだけでは?
710 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:30:06.36 ID:bdM8JANZ.net] どうしてもC++17以前でSFINAEでやんなきゃいけないなら無理矢理template依存にするしかない ようこそ黒魔術の世界へ... #include<type_traits> template<class T> class Test{ public: template<int...dummy, typename std::enable_if<sizeof...(dummy)==sizeof...(dummy)&&!std::is_same<T,float>::value, int>::type = 0> void funcB(){} }; int main(){ Test<int> t1; Test<float> t2; t1.funcB(); //t2.funcB(); }
711 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:04:17.88 ID:MDLggK/J.net] MSよりマックの囲い込みのほうが鼻につくと思うのは自分だけだろうか
712 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:13:46.53 ID:1Vr2GJ3G.net] apple>>>MS>>>
713 名前:>>それ以外って感じの強さw [] [ここ壊れてます]
714 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:16:10.29 ID:y95b8UUh.net] 囲い込みの点ではハードから開発環境からストアに至るまでアップルは異常な囲い込み。 社外に対しては会社も各社員も殆ど貢献しねぇし。 アップルのためだけに請け負い会社潰しながら株価あげるため活動しとる。
715 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:27:03.23 ID:k3BsWDgY.net] MSの囲い込みとか言ってるのは爺だけだろ OSSにどんだけ貢献してると思ってるんだよ
716 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:44:46.04 ID:1Vr2GJ3G.net] いやいやなんかWeb系のTypeScriptとかvscodeとかazureとかそういうのはいいんだよw 問題はWindows本体w まともに動かないレベルのハードに未対応というのは分かるけど、どう見ても性能的に問題ないハードを対象外にしちゃうWindows11はどう考えてもやり過ぎw
717 名前:デフォルトの名無しさん [2022/03/24(木) 23:45:11.78 ID:rNy1eSrz.net] 悪のゲイシ帝国。
718 名前:デフォルトの名無しさん [2022/03/24(木) 23:46:28.20 ID:rNy1eSrz.net] UEFIとチンポ2.0はセキュリティでは?
719 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 00:01:19.19 ID:m/iwpp86.net] >>703 VSCodeが囲い込みツールだもん、使えねぇって
720 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 01:09:44.76 ID:XVe+E9v/.net] Mac は、Homebrew, Fastlane とか、Rubyist が作らないと滅ぶw CircleCI の料金表のmedium のクレジットは、 Docker 10, Windows 40, Mac 50 囲い込みとは思えないほど、高い
721 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 02:12:51.70 ID:72EwLK9c.net] >>704 Windows11のハード対象外は囲い込みとは言わないのでは?
722 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 03:06:03.91 ID:5+dT7ErM.net] >>704 アップルなんて自社製のマシンでしか動かないんだけど アプリも自社製のマシンでしか開発できないし ストアも自社製しか認めない 自社製のアプリの邪魔になるものは開発を認めなかったり審査で落す こういうのを囲いこみっていうんだけど・・
723 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 03:15:43.43 ID:MgzERarD.net] Appleは開き直ってとことん囲い込みを追求してるからこそ逆に認められてるところがある 開発言語からしてObjective-CとSwiftっていう独自言語で徹底してる MSは中途半端にC++標準に擦り寄ってるのがよくないね
724 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 05:45:38.18 ID:rvvBDzFl.net] VSCodeが囲い込みツール? Linuxでも動くしそもそもOSSなんだけど… Visual Studioと言うならまだわかるけどw
725 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 06:08:26.54 ID:6oNwnU1m.net] iTunesが おきあがり なかまに なりたそうに こちらをみている! なかまに してあげますか? ┌───┐ │⇒はい│ │いいえ│ └───┘ iTunesが なかまに くわわった! QuickTimeが なかまに くわわった! Bonjour for Windowsが なかまに くわわった! Apple Mobile Device Supportが なかまに くわわった! Apple Software Updateが なかまに くわわった! MobileMeが なかまに くわわった! Apple Application Supportが なかまに くわわった! Apple Software Updateが Safariを よびよせた! Apple Software Updateが iPhoneソフトウェアを よびよせた! :::::::::::.: .:. . ∧_∧ . . . .: :::::::: :::::::: :.: . . /彡ミ゛ヽ;)ヽ、. ::: : :: ::::::: :.: . . / :::/:: ヽ、ヽ、i . .:: :.: :::  ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄ QuickTime をアンインストールしますか? >はい なんとiTunes はしんでしまった! QTTASKはぶきみにほえている!
726 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 07:22:48.15 ID:Sf6AbPmi.net] 「資源を独占的に確保すること」の意味での囲い込みw Windowsで市場を独占し、離れる場合のリスクとコストを高めてから、高コストを強いるw appleがやってるのは独占ではないけど、購入後に高コストを強いる同じ仕組みw
727 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:04:40.58 ID:KarnMDBa.net] macbookで動くwindows見かけると思わず笑みがこぼれるわ
728 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:06:57.63 ID:PW5qBu6I.net] MSが資源を独占的に確保したわけじゃなくて 作りやすいWindows、使いやすいWindowsとユーザが選んだ結果だからね 相乗効果で結果的に市場を埋め尽くしているに過ぎず独占しているわけじゃないけどね Macが誰にでも開発しやすい環境だったり linux等が誰にでも使いやすい環境だったならMS市場にはならなかったかもしれない でもまあMacもWindowsと同じ道を進んでいたら生き残っていなかったかもしれないけど
729 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:13:25.03 ID:bHihdD5b.net] 互換性重視で昔はシェア伸ばしたMSも なぜかAppleのマネして切り捨てするようになってシェア落としてる。
730 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:32:50.33 ID:Sf6AbPmi.net] ほんと頭悪いな・・・OS資源を独占的に確保してるでしょw
731 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:03:46.71 ID:bHihdD5b.net] マカーはほんと馬鹿だからな
732 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:09:22.13 ID:PW5qBu6I.net] >>718 OS資源って何?
733 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:12:25.62 ID:rQC9vpY7.net] 嫌ならLinuxでも使えば?w
734 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:15:06.51 ID:6oNwnU1m.net] >>717 MCAの件で愛想尽かしたのに 結局ミイラ取りがミイラってやつだね
735 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:16:17.27 ID:haNY4PtR.net] 最近はGPUパススルー備えたKVMでLinuxでもほぼパフォーマンスペナ無しでWindows用ゲームできるらしいけどほんまなん?
736 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:20:09.35 ID:KE5lJ15x.net] >>723 嘘やろ ハイパーバイザーとゲストosの間を遷移するのにオーバーヘッドかかるやろ いくらCPU支援機能があるからって無視はできない
737 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 10:53:37.87 ID:6oNwnU1m.net] 同じソフトをホストとゲストで使い比べるとやっぱ体感速度違うからな
738 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:39:31.11 ID:Sf6AbPmi.net] apple製品は買ってないし、Native LinuxもWindowsも使ってるが、WindowsのVC++使いはスレ違いの話題をいつまで続ける気なんだ?
739 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 18:58:24.97 ID:NAR86/dh.net] >>726 OS資源って何?
740 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:10:47.53 ID:3+VV5Xxj.net] 50代になると30代の2割以下の量になるらしいから大事にしろよ
741 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:30:24.85 ID:5XdEy59o.net] ぐり@関賢太郎 航空軍事記者 https://twitter.com/gripen_ng/status/1507210000024104972 何年か前、日本から韓国へのフッ化水素輸出に制限をかける外交摩擦あったよね。 あれで韓国製のガリウム砒素半導体を輸入していたロシアへ供給が止まり、ロシアの軍用AESAレーダーの生産が遅れ、戦闘機への搭載もできなくなるドミノ倒しになっていたことに気付いてしまった。 国際社会から孤立ってこわい (deleted an unsolicited ad)
742 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 02:00:27.84 ID:w1Z+3JKm.net] >>726 OS資源って何?
743 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:01:10.04 ID:+PRSGS1Y.net] 整数で添え字アクセス可能なコンテナの要素を自身の添え字0〜n-1で初期化したい場合どう書くのがスマート? <algorithm>の他の手段と同様の記述スタイルで書けるならそれに統一したいのでつが、、、 やっぱ std::vector<int> arr((size_t)n); for (int i = 0; i < n; i++) { arr[i] = i; } というふうにチョー具体的にfor文とループ変数iを手で書くのに勝る妙案無し?
744 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:09:33.63 ID:RpKSs2nj.net] >>731 https://cpprefjp.github.io/reference/numeric/iota.html ?
745 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:15:39.57 ID:O3+9n+yo.net] イオタ\(^o^)/
746 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:31:07.82 ID:+PRSGS1Y.net] >>732 なるほど<numeric>とかヘッダファイル自体使ってなかったわチョーdクス、
747 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:42:20.07 ID:QEpYloYB.net] イオタ\(^o^)/は草
748 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:51:45.23 ID:vQB7bLSM.net] >>726 OS資源って何?
749 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:43:36.18 ID:9q2PYIcF.net] また自演してるしwwwww ようやくiotaを知ったのねw
750 名前:デフォルトの名無しさん [2022/03/27(日) 18:49:59.41 ID:lspELT3N.net] 初歩的な質問すみません、2,3時間かかってもわからなかったのでここで質問させてください。 独学で3か月くらいの初心者です。 int iResult=1; wchar_t* ShowStr = new wchar_t; wsprintf(ShowStr, L"socket failed with error: %d", iResult); delete ShowStr; ShowStrはポインタで確保したのでdeleteしないと溜まってしまいますよね? ShowStrは配列なのかなと思ったのですがdelete[]だとVS先生に怒られてしまいます。 配列の先頭だけ消してしまって残りの部分が参照できない形で残ってるとかそういうことなのかなと思った のですが、だとすればどうすれば良いかもわからない次第です。 deleteの使い方一応は調べてみたつもりなのですが、 どなたか教えていただけませんでしょうか。
751 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:54:07.95 ID:uW5IEa4H.net] #include <string> std::wstring mojimoji = L"モジモジ ///";
752 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:56:35.96 ID:7vIiVU2b.net] >>738 単純に配列じゃなくて wchar_t一個だけのメモリを確保してるからdelete
753 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:58:29.72 ID:7vIiVU2b.net] >>738 あと、一個分のメモリしか確保できてないから、そこに socketなんちゃらって文字列入れようとするとエラーになると思われる だから wchar_t* ShowStr = new wchar_t[200]; みたいにするのが正解か
754 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:59:23.81 ID:7vIiVU2b.net] で、>>741 の変更をした場合は delete[] ShowStr; になるはず
755 名前:デフォルトの名無しさん [2022/03/27(日) 19:31:30.48 ID:lspELT3N.net] >>742 ありがとうございます。 おかげさまで解決できました。 コンパイル時にどれだけのメモリを確保するのかは明確に分かっていたほうがよいのですね 今日は初めてダイアログからソケットをつなげることが出来たし、やっとエラーが出なくなって 何とか枕を高くして眠れそうです。ありがとうございます。
756 名前:デフォルトの名無しさん [2022/03/27(日) 19:33:51.31 ID:lspELT3N.net] >>739 wstringというものを初めて知りました。 今回はLPWSTRの必要があったので使わなかったのですが、 ワイド文字を使う上で必要な知識が増えました。 ありがとうございます。 ・・・手帳持ちなんだけど就職できるといいなぁ、未経験で
757 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:45:45.04 ID:uW5IEa4H.net] >>744 うまくいきますよーに☆
758 名前:デフォルトの名無しさん [2022/03/27(日) 19:52:33.76 ID:lspELT3N.net] >>745 ありがとうございます(≧∀≦๑)ゞ
759 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:24:01.35 ID:nbMAc3Vl.net] pythonのプラグイン作成ライブラリpybind11は今やwstringが標準 さもないとWindows対応できない
760 名前:688 mailto:sage [2022/03/27(日) 21:15:33.59 ID:Fwb/ewtW.net] >>699 ありがとうございます! C++14までの設定でそれでいけました! マジ黒魔術w そしてC++20なら>>690 がいけて感動w concept神すぎる…!!
761 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:21:28.16 ID:PoGWmBV8.net] wstringしか使えないゴミライブラリなんて使わないでいいよw いつもの自演君w
762 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:35:17.61 ID:VLMZp/O7.net] wstring なんかいらない…普通に std:::basic_string<char16_t> とかで十分 https://ideone.com/uQKe4J というか、wstring なんかさっさと obsolete/deprecated にすればいいのに、ほんと馬鹿ですね
763 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:00:38.95 ID:rG9TE9zE.net] std::basic_string<TCHAR>とかはまれによくやる…… が操作や表示に_tで始まる関数を使わなければならないから 移植性とともに魂を損なわれていく気がするので 特段の理由が無い限りWin32APIの方を末尾Aので呼ぶことにしてstd::stringで通すようになった今日このごろ…… >>749 残念、自演君は私だ
764 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:07:12.24 ID:nbMAc3Vl.net] > まれによくやる どっちなの
765 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:08:19.23 ID:PoGWmBV8.net] 2垢でIDがうまく操作できてない感出まくってるw
766 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:10:49.45 ID:rG9TE9zE.net] >>753 の書くコードはことごとく根拠が欠けているのであろうことは想像に難くない 検証とかどこ世界の話?、レヴェルかと、
767 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:33:58.84 ID:nbMAc3Vl.net] 確かに反ワクチンとかウクライナはネオナチとかこじらせてそう
768 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:59:19.24 ID:K7MWSPEs.net] >>751 WindowsというOSはwchar_tが標準装備であってcharを受け付ける***A はWin9xのレガシーなのだよ... Win32API向けの文字列操作はwchar_t系に統一するべきなのだが... 大体のC/C++コードは(ファイルIOですら)charがベースなので、Win32APIとの相互運用で***Wを使うことが苦痛になる
769 名前:デフォルトの名無しさん [2022/03/27(日) 23:25:52.46 ID:QKAmAp06.net] Microsoftは馬鹿かと思う。 勝手にBitlockerがかかって、「この箱には鍵がかかっています。その鍵をあける番号は 箱の中にあります。」の連続。
770 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:36:32.07 ID:PoGWmBV8.net] そんなことみんな知ってて言ってるだろw 何を今更w 通常C/C++だと低レベルな処理はプラットフォームでAPI分けるから、Windowsでは仕方なく(可能な範囲で)ワイド文字を使用する仕様にしたりすることもある、というくらいw でもターゲットがWindowsだけだと逆に癖で文字にtypedef切ったり_T使ったりする不思議w
771 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:49:21.31 ID:nbMAc3Vl.net] Pythonの内部コードはUTF-16らしいよ
772 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 02:22:28.60 ID:51Y1Thh9.net] それも違うw https://peps.python.org/pep-0393/
773 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:08:46.35 ID:DkKihmtS.net] ボクが考えるWindowsスレですか、ここは。
774 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:45:03.78 ID:zvnGSWPp.net] どうでもいいけど、黒魔術とかコンセプト神とかなんとか大袈裟な言い回し、ブログとかでよく見るんだろうけど あまり真似しない方がいい気はする
775 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:56:12.53 ID:HSBaMW3J.net] やたら絵文字を使いまくる頭悪そうなメールとノリが似てるね
776 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:30:00.76 ID:npKEPSZJ.net] >>759 Pythonじゃなくてジャバスクのstringの内部表現やろ UTF16って意外と標準採用されてるからな 至極単純にUTF8と比べてCPUパフォーマンスは良いし
777 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:35:09.55 ID:4U9zlcIi.net] 鼻から悪魔とか自分を足を撃つとか そういう言い回し好きなアマチュアが吸い寄せられるのがC++って感じする もちろん、仕事で嫌々使わされてる連中は除く
778 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:37:17.98 ID:npKEPSZJ.net] >>756 標準装備っていうかカーネルがUNICODE_STRINGっていう非null terminatedな明示長stringしか扱わないからな つまりA版APIは変換コストがかかる
779 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 13:30:08.02 ID:HSBaMW3J.net] fjによく出没していた河野ってやつが言ってた 「C++はちょっと気が狂ったようなところがある言語」 あんまりあいつに同調したくないがこれは言い得て妙だ これは何から何までキチガイ仕様ばっかりという意味ではない たまに首をかしげる変なところがあるってことだ
780 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 13:39:02.76 ID:yqBWM3bb.net] 難しいコード書けても設計出来ないとなんの意味もないしな
781 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 15:23:35.37 ID:DkKihmtS.net] 他人が読めないコード書いてマウンティングする文化があるからな。
782 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 16:26:35.03 ID:R1D4p1O0.net] >>765 それはどちらもCだろ C++の黒魔術とかの表現は気持ち悪いと思う
783 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:04:31.59 ID:f80bfIyg.net] >>765 それは C だ…
784 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:31:46.30 ID:Uu0YihOb.net] 色々すっきりわかりやすくなってプログラミング効率の良いRustと比べればC/C++どちらも
785 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:04:21.14 ID:mWQ/GdlN.net] >>772 学習曲線をなだらかにしてから言いな。とりあえずNGにしとくわ。
786 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:09:47.04 ID:LEuYcsU9.net] > 学習曲線をなだらか C++が言うな
787 名前:デフォルトの名無しさん [2022/03/29(火) 09:12:38.67 ID:V3Kl11Pp.net] 学習曲線をなだらかって何
788 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 09:40:35.27 ID:FuLLa2J8.net] >>765 最近買ったRust本の帯に、もう二度と自分の足を撃ちたくないならって書いてあった。何なのこれ?
789 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 09:40:51.62 ID:UOqSecAo.net] 学習曲線なだらかだったらいつまでたっても習熟が進まないんだよなあ
790 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:05:42.16 ID:WvuxHdPq.net] 舌触りなめらか
791 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:21:02.72 ID:HFhqj5qW.net] ちんちんシュッシュッシュッ!
792 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:46:35.81 ID:MRVYy131.net] >>776 何なのってFPSゲームでしょ
793 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 11:27:10.53 ID:l/5rTAs8.net] >>777 絶壁だったら学習できないよ。 第一、プログラミング言語を学習したいなんて奇人は少ないだろ。普通はプログラムを作りたいだけだし。 昔Accelerated C++みたいなC++を使うための入門書があったけど、ああいうのを整備する団体とか無いんかな。
794 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:24:22.14 ID:oJxqSb9h.net] >>776 https://qiita.com/evid/items/adfa237f4dc6b73a2b5d#fnref5 要するに自分で自分を壊すような話
795 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:36:11.92 ID:owrRZ3L6.net] 設計ヘタクソなヤツは致命的、いや、池沼的なの居るからな Rust養成ギブスで勉強してこいカスって感じ
796 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:03:31.53 ID:ijYpt7F/.net] >>783 Rustやったところで、Pythonのインデントスタイルの勉強と一緒でRustスタイルのコーディングしかできなくなるだけだよ。 C++のプログラム技術向上のためにRustを勉強するとか、まったく意味無い。
797 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:26:21.04 ID:6kEE5hUV.net] >>784 その通り しかしRustの方がプログラミング効率が良くて書きやすくて保守性も良いから 普通はC++使わなくなるよな
798 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:32:53
] [ここ壊れてます]
799 名前:.51 ID:owrRZ3L6.net mailto: グローバル変数でi宣言してるヤツとか 理由聞くと書くの面倒くさいからとか 池沼にも程がある [] [ここ壊れてます]
800 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:18:21.80 ID:ijYpt7F/.net] >>785 スレ違い。ここに書き込むの禁止な。 下のスレに行け。 C vs C++ vs Rust Part.3 ttps://mevius.5ch.net/test/read.cgi/tech/1643289587/
801 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:46:14.12 ID:LEuYcsU9.net] 面倒だからメンバは全部public
802 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 20:17:40.82 ID:rprUptDm.net] structって書けよ
803 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:21:49.66 ID:JBheGd8b.net] structなんぞ頼らずnamespaceに全部書けよ
804 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:27:01.22 ID:pxj3Uqek.net] structはデフォルトがprivateでclassはデフォルトがpublicなことを考えるといっそclassを消してしまった方が愚かな設計がなくなるのでは?
805 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:40:45.57 ID:q6aCWf20.net] >>791 それってRustじゃん
806 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:45:51.77 ID:42Nx7yvC.net] RustRustうるせーっつーの 巣に帰れ
807 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 23:12:23.14 ID:LEuYcsU9.net] キチガイrust厨しね
808 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 06:33:06.22 ID:8NFBSa0P.net] >>781 学習曲線は横軸時間で縦軸習熟度の曲線やから絶壁が効率よくて、水平やったら誰も理解できん、という曲線やで
809 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 07:12:05.54 ID:7Zu/8ZF2.net] >>791 おいおい逆だろw 禿もアクセス種別の省略時の解釈は十中八九誤りだったと言ってるね
810 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:22:59.56 ID:WX1Rp50C.net] >>796 本当だ逆だった…お恥ずかしい
811 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 12:47:10.06 ID:mFVNBRSc.net] しばらくpythonとか触ってたけど今更C++の隠蔽設計とかバカらしく思えてきた
812 名前:776 mailto:sage [2022/03/30(水) 17:13:54.11 ID:+a7BCMWw.net] >>782 ありがとう
813 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:26:05.50 ID:xRfGRGrW.net] オープンな性格なのです
814 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:38:58.59 ID:rveKwnBH.net] >>767 河野@琉球大学?(記憶モード
815 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:47:02.15 ID:rveKwnBH.net] しばらくgoとか触ってたけど今更C++のクラスベースのオブジェクト指向とかバカらしく思えてきた
816 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:49:39.17 ID:rveKwnBH.net] ていうかプログラミング言語とか人間の愚かさに対する対策なので 特にシンタックスシュガー的な言語要素は突き詰めれば突き詰めるほど頭おかしい言語になっていくのは必定
817 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:52:55.50 ID:eQfKD0DM.net] >>802 GoもRustもclassなんてなくてstructしかないが困らないもんな
818 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 01:51:31.09 ID:nXMYhSR8.net] >>802 ,804 チンチャそれな!
819 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 02:10:02.10 ID:lTtwcp13.net] C++とオブジェクト指向を関連付けて考えるからおかしくなる C++の内包する多様なパラダイムの中にオブジェクト指向が含まれてるだけ C++の良いところは何でもありなところ
820 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 02:53:58.08 ID:lTtwcp13.net] C++のclassもオブジェクト指向のための文法として捉えるべきではない
821 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 03:00:57.77 ID:3NXOGCnE.net] C++のclassにpolymorphicというキーワードがあればclassとして理解しやすかっただろうに C++自体が古いから仕方ない面もあるのだが
822 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 05:37:45.41 ID:ZLovgCJ7.net] >>804 C++ も struct だけでもたいして困らんけどな
823 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 06:50:05.99 ID:yEOSoCRj.net] SmalltalkやEiffielみたいにOOPとしての完璧さを目指した言語ではないからなC++は PascalへのアンチテーゼがCであったように、完璧さを目指すことへのアンチテーゼでもある そこを批判するやつとは根本的に相容れない
824 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 06:54:16.14 ID:ivAOVlIc.net] CからC++へ行かずに CからGoとRustへ行けば十分に問題ない
825 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 08:09:28.04 ID:il5bYK9P.net] >>811 >>787
826 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:34:12.61 ID:4cSTCvUa.net] >>767 言い回しがそいつのtwitterに出てくる感じと同じすぎる ワイ大学生なんだけどその人20年以上前からそんな口調なのか
827 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:45:20.70 ID:R4GrqV7T.net] 河野氏になんか恨みあんの? 俺知り合いだから代わりに言っとくよ
828 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 19:53:32.15 ID:mHRscCZz.net] if (xmm0 == xmm1)って下のやり方しかない? _mm_movemask_epi8(_mm_cmpeq_epi...) == 0xFFFF
829 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 21:25:00.23 ID:SxSNo1AU.net] >>814 嫌な知り合いすぎる 無自覚?
830 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 01:39:47.02 ID:/eP2awHk.net] PTESTがあるぞ
831 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 20:07:44.20 ID:kF+DLIFz.net] >>817 _mm_testc_si1281命令でできるのか サンクス
832 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 03:00:41.15 ID:JI80ciY+.net] ハンガリアン記法、いまだ健在なり
833 名前:デフォルトの名無しさん [2022/04/02(土) 05:57:08.65 ID:iaVgC0+D.net] プログラムほぼ未経験だけどこれから始めます 今は坊主頭の人の本を読み始めたところです IDEのCLionを考えています 他におすすめあったら教えてください
834 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 08:28:40.83 ID:KzPuamrt.net] Visual studioオススメ。VSCode+CMakeでもいいぞ
835 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:16:55.77 ID:roqf8g4r.net] bitsetで実装し終わった後にvector<bool>がconstexpr対応してる事知ったんだが? はー先に教えてくれよ(クソデカため息)
836 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:49:25.68 ID:/j0/DBCU.net] vector<bool>なんか使っちゃいけません
837 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:22:05.97 ID:YBLKDYh3.net] bitsetを実現するのならvector<bool>は妥当 だと思う派
838 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:30:40.42 ID:YBLKDYh3.net] しかしvectorKbool>様のブツ(一般に数千ビットとかのデカくて比較的疎なやつ)がconstexpr対応している と特段のありがたみと かあるん??
839 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:35:10.49 ID:X+p83iug.net] 二進法で書いちまった方が…
840 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:36:56.48 ID:T5fexWVc.net] vector<bool> 駄目って言ってる奴らって思考停止のバカでしょ 「特殊化されてるのである時は注意が必要」というのを理解できず思考停止でとりあえず禁止と見なしてるバカ
841 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:38:37.01 ID:YBLKDYh3.net] これか https://cpprefjp.github.io/lang/cpp20/more_constexpr_containers.html やっぱ内部でループのみならず、new / deleteするような関数までconstexprであってほしいと願うマニアが一定数居るんやな……
842 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:40:50.98 ID:CNYN+CEs.net] キューとかスタック的な使い方なら自然だと思うね
843 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:44:28.98 ID:p6D1htC0.net] 一度作ってみたけどconstexpr関数内でnewしたらその関数内でdeleteまでしなきゃいけないのは使いづらい気がする
844 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:53:16.59 ID:ARI85DWJ.net] まずはvector<bool>で実装してみて問題あるなら考える派
845 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:53:28.58 ID:YBLKDYh3.net] だがちょっとまって欲しい毎秒1億も2億も回るようなループの中でこそ高速化が必須だが そんなループ内でnew /deleteしようとする発想が最初からなんかおかしいのではないか
846 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 18:44:27.58 ID:NmP3n2Yz.net] struct Hoge { std::vector<Hoge> hoges_; }; ってなんでコンパイル通るの? hoges_の定義時点ではまだ、Hogeの定義は完了していないのに。
847 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:05:25.24 ID:Yvr+7/y4.net] struct Hoge { Hoge* ptr; }; が通るのと同じ理屈なんじゃない?
848 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:25:23.89 ID:7tOdFV5I.net] ソースコード次第やな allocatorでサイズ使いそうなもんだけど
849 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:33:06.66 ID:5C/3HoVM.net] 宣言の時点では別に適当
850 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:35:01.81 ID:BfkCmsi5.net] 宣言? どこにも宣言のみの記述はありませんけど?
851 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:48:52.09 ID:CJTxuxUG.net] 半角全角使うな厨が絶滅しますように (AA略
852 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:07:54.56 ID:Mnzv/avn.net] 定義自体は再帰してても大丈夫じゃない?
853 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:32:55.79 ID:sNbs7j4z.net] >>839 あそう、だったら struct Hoge { Hoge hoger; }; これもOKだろw
854 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:58:54.41 ID:NWvQ4doQ.net] 参照だったらサイズが一意になるから問題なく処理できる 実態だったら無間地獄に落とされるからNG
855 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 21:17:02.42 ID:sNbs7j4z.net] >>841 839は参照じゃないじゃん 話し通じないな
856 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:20:50.07 ID:wOH19oBO.net] えっstd::vector<T> hoge_; とやった場合Tが何であってもその場でhoge_のサイズは決まるから struct Hogeのメモリレイアウトは鎧袖一触で決まるか ら何の問題も無い 決まらないのはhoge_のインスタンスがポインタで保持することになるヒープ上の領域のサイズであって struct Hogeのサイズは上述の通りstruct Hogeの定義を一通り見たとき鎧袖一触で決まっているから Hoge::hoge_をインスタンス化するタイミングで問題無くインスタンス化されるという印象のような希ガス いや知らんけど ※ 個人の感想です
857 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:33:18.09 ID:wOH19oBO.net] とオモタがなんかVS2019(C++14)で試したら以下のコードのビルドが通る怪現象やな…… template<class T, int N> class VarArr { int T[N]; }; struct Hoge { VarArr<Hoge, 3> m_arr; int m_x; }; Hoge x; 多分環境に拠るんだと思う
858 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:35:40.26 ID:wOH19oBO.net] VarArr<T, N>の定義をまつがえたサーセン……orz 以下のコードなら正しくビルドエラーになる template<class T, int N> class VarArr { T m_arr0[N]; }; struct Hoge { VarArr<Hoge, 3> m_arr; int m_x; }; Hoge x; ワイの答えはこれや!
859 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:14:48.08 ID:Mnzv/avn.net] >>839 で適当に回答したけどメンバとしてを実体で持つかポインタで持つかで通るかが決まるな
860 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:38:16.75 ID:sNbs7j4z.net] struct Hoge { int a[sizeof(Hoge)]; }; はHogeがまだ定義されていないから、コンパイルできない だったら、なぜ std::vector<Hoge> hoges_; は許可できるんだ
861 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:53:21.86 ID:dOp+WKyA.net] >>847 規格的に問題ないからだが、まあポインタなんでサイズ知らんでもええからだな
862 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 00:18:36.05 ID:F+M9/rKi.net] >>847 std::vector<Hoge> hoges_; はクラスないしstructのサイズには影響しないからじゃないの? そのクラスないしstructはstd::vector<Hoge> hoges_へのアドレスを保持するだけでしょ? クラスないしstructの中でのhoges_のサイズはすでに決まっている
863 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 00:23:58.82 ID:NuCanqg0.net] >>847 >>843 に書いたが struct Hoge { std::vector<Hoge> hoge_; }; の実質は struct Hoge { struct { (&(hoge_[0])を指すポインタ); (管理用のいくつかのメンバ) } hoge_; }; とゆーことなのでstruct Hogeの中にhoge_[0..]の実体が埋め込まれるわけでは無いから、 hoge_[0..]の型が決まっていなくともstruct Hogeのサイズは問題無く決まるというしくみ 一方hoge_[0]の実体がstruct Hogeに埋め込まれる>>845 のケースは気体どおりエラーになる というワケ
864 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:09:53.47 ID:14cK0a9Z.net] >>843 鎧袖一触の使い方間違いで草w
865 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:12:20.74 ID:JNKuDAOB.net] 4、5年c++やってるけどまともなものを作れない どれくらいで、ネットで有名なソフトって作れるものなの? 例えばvscodeみたいな便利なアプリ
866 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:46:47.47 ID:9GHqD2yn.net] >>852 VScodeはElectronつまりJavaScriptで書かれてるよね
867 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 00:26:55.67 ID:btSnYNGS.net] >>852 C++Builderが楽だよ
868 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 01:43:21.89 ID:QuV3GhxG.net] windowsは触ったことがない
869 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 02:00:35.56 ID:QYslDBWm.net] ならばElectronかTauriがオススメ WindowsだけでなくMacでもLinuxでも動くマルチプラットフォーム
870 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 06:11:04.09 ID:PM3+0qST.net] >>852 言語だけ触ってても無理 自分は◯◯を作るんだという 一途な意思がいる ネットでウケるかどうかは通常どうにもできない もし市場の需要を読んで開拓ができるなら もうそのままプロになれる
871 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 10:33:40.77 ID:FcLzG6G8.net] >>852 まともって言うか一定規模以上のソフトを作ろうと思ったらオブジェクト指向デザインパターンを網羅していく事の方が大事 難しいハッキングをやるよりも設計の方がなんだかんだで難易度高いからな
872 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 17:09:26.03 ID:PM3+0qST.net] 「成功者」の法則をなぞるだけでは成果は出せない そんなの誰でもできるから 形振り構うことより興味の向くまま突っ走るほうが肝心 そうして何かを成し遂げると自分なりの法則ができている それまで周りは散々バカにしてくれるが そんなのに折られないメンタルも大事だ
873 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 17:46:09.74 ID:YcgsN5By.net] メモリマップドファイルのライブラリが標準入りするのってまだまだ先ですか?? 標準ライブラリとするのに何か問題でもあるの?
874 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 19:10:03.35 ID:Ssg9XCyk.net] <filesystem>ですら入ったの最近だしあんまり期待してない socketとかのネットワークライブラリも標準にはないんだぜ?
875 名前:はちみつ餃子 mailto:sage [2022/04/05(火) 19:53:34.34 ID:AUzgrMft.net] >>852 個人でなんらかのソフトを作る場合には「動くプログラム」を意識するといいよ。 構想通りに設計しようとするよりは機能を極小に絞ってでも動く状態のプログラムを作ってみて、 それを拡張していくという形にすれば行き詰まったところが学ぶべきことが潜んでいるところだとわかる。 ある程度までいったら最初から作り直したくなるときがくる。 学びながら作ったものなんてろくでもないんだから作り直すはめになるもんなんだよ。 どうせ作り直すと割り切って色々やってみればいい。
876 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 20:56:02.32 ID:6DtMUNMI.net] Googleの人もイテレーティブな開発が良いって言ってたなあ
877 名前:デフォルトの名無しさん [2022/04/05(火) 21:08:43.94 ID:79YAP4SX.net] あーすべき、こーすべきと雁字搦めにPGを縛る硬直的で強迫的な教条主義が 投げやりなやっつけ仕事を大量生産するという
878 名前:ウ訓から色々な提案が出てるのに 教わったことにしがみつく後ろ向きな人が悪しき循環を継続させちまう [] [ここ壊れてます]
879 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 21:15:39.04 ID:YcgsN5By.net] C++って他の言語と違って何でも出来るから情報収集に時間使いすぎるんだよな プランAからZまであらゆる手法を検討して最善手を打たなければどこかで詰む事になる
880 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 21:15:57.95 ID:rM7yNqDT.net] 大昔の記憶だけどメモリマップというかネットワーク系のライブラリはC++に追加されないのかって聞いたときに OS依存の仕様は実装されないって聞いた記憶あるけど最近のC++は方針変わったのか?
881 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 22:34:00.51 ID:QFtrY3nt.net] C++とSTLは別だよ
882 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 22:39:47.79 ID:vLZKRt0y.net] threadみたいにするならかまわんのだろ
883 名前:デフォルトの名無しさん [2022/04/05(火) 22:54:42.49 ID:79YAP4SX.net] プロセスがサポートされないアレでか
884 名前:はちみつ餃子 mailto:sage [2022/04/05(火) 23:18:25.53 ID:AUzgrMft.net] スレッドは OS が提供するスレッドと一対一で対応することを意図しているという記述がある。 https://timsong-cpp.github.io/cppwp/n3337/thread.threads#1 スレッドを持たないシステムに対応付けるならスレッドの生成に常に失敗するような実装になってても仕様には反しないんじゃない? noexcept は例外を送出しないことを保証するけど実行時エラーがないことを保証するわけではない。
885 名前:デフォルトの名無しさん [2022/04/05(火) 23:23:24.49 ID:79YAP4SX.net] 今さらDOSでC++11か いや否定はできんけど・・・
886 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:31:23.00 ID:EtikemGC.net] プロセスを持ち出す意味がわからん スレッドがあればいいんじゃ?
887 名前:デフォルトの名無しさん [2022/04/05(火) 23:37:46.31 ID:79YAP4SX.net] なんで? アドレス空間の多重化とプロセス間通信はOSが違ったら移植性なしで割り切るの?
888 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:42:47.00 ID:EtikemGC.net] それがないとスレッドも許されんという理屈がわからない
889 名前:デフォルトの名無しさん [2022/04/05(火) 23:52:53.92 ID:79YAP4SX.net] スレッドも許されないなんて主張してないが
890 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 07:13:16.72 ID:e/YNs2XJ.net] 質問ですがイテレータ間の距離はstd::distance<T>(first, last)で求められるそうなんですが 求めた距離を再びイテレータに戻す場合はどうすれば良いですのん?firstとlastがラ ンダムアクセスイテレータならfirst + std::distance(last, first) == lastが成立するという具合に 足せば良いけどランダムアクセスイテレータか否かによらず共通に使えるテンプレートは?
891 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 08:10:41.61 ID:tJlAug24.net] >>876 std::next() https://cpprefjp.github.io/reference/iterator/next.html
892 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 08:51:32.67 ID:hbDmvmaG.net] >>876 std::advance(イテレタ,求めた距離)
893 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 14:47:30.60 ID:/VxyOfiN.net] technical default とかいう新技が出てきたね
894 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:03:31.71 ID:OIlaSdNT.net] みなさん多次元配列ってどうやって持ってますか? ・blas, lapack等fortranの資源を使いたいからローメジャー、カラムメジャーは宣言時に決めたい ・添字アクセスがネイティブの多次元配列並みに早い ・STLコンテナみたいに使える 等の条件を満たす良いライブラリありますかね 本当はSTLに入ってほしいんですが、なぜ未だにないんですかね?
895 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:15:07.58 ID:Iu/ahyl1.net] ネイティブの多次元配列とは
896 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:18:59.68 ID:OIlaSdNT.net] >>881 ああすみません私めは言語障害者だから変な言葉使ってるかもしれません Cの多次元配列のことを変な呼び方をしてしまいました すみません
897 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:30:19.00 ID:aY4pnG+o.net] eigen gmtlとか?
898 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 19:07:48.95 ID:ofj8wLUE.net] 1つめがよーわからんけど ・次元数はコンパイル時決定 ・要素数もコンパイル時決定 ・子要素のサイズは全て同じ(arr[0].size()==arr[1].size() が常に成り立つ) ってことでええの? それなら単純にstd::array<std::array<T, 4>,5>でいいとは思うが
899 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 19:36:43.45 ID:vJ8PYFJ1.net] 全部arrayだとスタックに配置される事あるからvector<array>でやってるな
900 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 21:17:51.29 ID:tUlkAQY7.net] >>880 std::mdspanというのが提案中だがまだ時間かかりそう
901 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 23:18:21.83 ID:NvxWnsbd.net] >>877 >>878 レスdクス やっぱいろいろ一般化されたテンプレートがいっぱいあったら テンプレートを特殊化せずに済む幅がひろがりんぐ、
902 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:17:05.89 ID:yw7pyl+g.net] >>883 eigenは遅い gmtlはメンテナンスされてない >>884-885 一次元配列にマップしたときの並び方が柔軟であってほしいって書いてるでしょ 外部ライブラリ必須じゃないかな現状 >>886 mdspanは実体を持たなくてmdarrayは実態を持つんだっけ C++23に入るって話じゃなかったっけ? 俺C++の新機能はそんなに熱心に追ってないけどこれだけは待望してる >>880 ということで、現状はboostじゃないかな これもメンテナンスされてないようだが、マシだと思う 良いライブラリがあったら俺も知りたい
903 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:34:21.33 ID:zyrTrwHF.net] 柔軟な多重配列なんて自分ですぐ作っておしまいな話なのに なぜ標準にないとかライブラリがないと言い出したり将来の仕様に期待するとか意味不明
904 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:49:06.16 ID:g2f/LEmv.net] numpyを使う。もちろん他にpython併用する理由があればだけど。 ローメジャーなのでメモリ上での向きは個別にやってる。
905 名前:デフォルトの名無しさん [2022/04/07(木) 05:59:06.00 ID:kMhdBz2h.net] >>880 blas使いたいんならstd::sliceがモロそのものだよ
906 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:13:35.95 ID:yw7pyl+g.net] >>889 やってから言えや 例えば、高速なランダムアクセスとか添字の組と要素番号の間の高速なマッピングとか、どう実装するつもりでいるの?
907 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:17:36.20 ID:OOyqDhdW.net] あるクラスのコンストラクタがvector<int>をとるんだけど、たまにvector<size_t>を渡したいときがあるからオーバーロードするようにしたらambiguousだとエラーが出た 1) ambiguous にならない方法はありますか 2) vector<size_t>の各要素がintの範囲に収まるくらい小さいとき、これをvector<int>にキャストするナイスな書き方はありますか
908 名前:デフォルトの名無しさん [2022/04/07(木) 06:40:42.70 ID:kMhdBz2h.net] ambigousにはならんようだが https://ideone.com/YrFYsI
909 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:18:15.48 ID:3YRGB6r4.net] >>892 自作すれば自分の使う方法に合わせてカスタマイズできるから圧倒的に有利 インデックシングも汎用だと毎回多段計算になるが自作なら用途に合わせて最適化できる
910 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 08:17:57.53 ID:CaxjwvsJ.net] ファイルならまだしもオンメモリーで高速なランダムアクセスとか言語の範囲では工夫しようがなくね?
911 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 08:32:07.21 ID:Ym/mh0iz.net] 近傍のアクセスが速いというのは言語関係ないしな
912 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:27:53.88 ID:2nzlX6cZ.net] そういえばSTLのコンテナに[]で範囲外アクセスしたとき、デバッグモードだとちゃんとアサート出してくれるけど あれってSTL実装した人がそう書いたから出るの?それともOSの機能か何か?
913 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:32:39.68 ID:2HgVVA+6.net] 全てそう書いたから出るんだよ OSはレイヤが違う話
914 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:39:14.99 ID:2nzlX6cZ.net] へえ、じゃやっぱマクロ使ってガシガシ書いてるんだろうね 自分じゃ絶対やりたくないなw
915 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 17:34:09.66 ID:mHsgrYEE.net] ifdefで括るだけだろ
916 名前:デフォルトの名無しさん [2022/04/07(木) 18:22:02.97 ID:kMhdBz2h.net] >>898 ルール上、保証がないことでも やってくれてることって、どこにでもあるだろ operator[](size_t)で範囲外アクセスした場合の動作は未定義なので どんな扱いをされても合法なんだよ # 一時期流行った気持ち悪い喩えはもうしない
917 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 21:49:18.59 ID:6+zrl0OG.net] SNSの気持ち悪いノリ持ち込むなよ
918 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 01:44:38.29 ID:jwLlCRWe.net] >>900 お客様根性丸出しのプログラマとか・・・
919 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:06:11.18 ID:NDf9sYGT.net] メモリが足らないから64ビットにするとかいうやつがいて ソース見たら double hoge[300][300][300]; って笑った
920 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:37:31.78 ID:gSPSOhuN.net] 64bit化だけじゃ無理でしょ スタックサイズを512MBぐらいにしなきゃ
921 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:47:10.70 ID:a9m8EYfT.net] ツッコミどころが違う… 32bitのままヒープに確保で十分だから
922 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:49:15.33 ID:jXZanj6A.net] ヒープを使って良いのはアマチュアまでだからな
923 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:53:57.22 ID:qQptZxW8.net] 世の中マシン性能で解決おじさんみたいなのばっかり
924 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 14:20:15.81 ID:erlZKZM8.net] >>907 それを言うなら32bitのままスタックサイズを増やすだけで充分だろ ソース変更要らんし
925 名前:はちみつ餃子 mailto:sage [2022/04/09(土) 15:54:11.32 ID:LbeQCC1G.net] デフォルトでのスタックサイズ上限がだいぶん小さめ (数メガバイト程度) になってるのは 基本的にそれで足りる、 なるべくそれで足りるように書けという暗黙の圧力だと思う。 必要に応じて柔軟に対処すりゃいいけど、最初からあえて逆らうべきでもないだろ。 なんでもかんでもスタックを使ってるとデバッガで追いづらいし、 流れを制御するための変数と処理する対象になるデータ (大抵はある程度に大きい) は分けたい。 回路設計に喩えると制御線と動力線を分けるみたいな感じ。 (わかりにくい比喩ですまんがあくまで感覚なのでこういう形でしか表現できない。)
926 名前:ハノン mailto:sage [2022/04/09(土) 16:35:28.22 ID:50hSXO1R.net] >>911 >回路設計に喩えると制御線と動力線を分けるみたいな感じ。 昔、試作基盤として、天地にべったり Vcc とアースを上辺と下辺に貼り付けて、間に島(ランド)をたくさん並べるっていうのを聞いたことがあります どういう名称だったか忘れちゃいましたが…
927 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 16:45:04.63 ID:erlZKZM8.net] おれおれコーディングルールを開陳されても困る
928 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 18:42:32.24 ID:njPxFZn6.net] >>906 笑ったって書いてあんじゃん また、笑った
929 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 19:24:26.54 ID:mI1Pq9ZL.net] 300が何の数字か知らんけど、それが変更や拡張で800くらいになったら溢れるんだから 64bitが必要って判断はなくはないでしょ 何の数字か知らんけど
930 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 19:56:02.24 ID:NDf9sYGT.net] >>915 君は本物のバカだな
931 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 21:01:35.50 ID:/RZJpXw8.net] 規格にスタックって出てくる?
932 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 22:53:29.39 ID:NDf9sYGT.net] 出てくるわけねーじゃん バカですか?
933 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 23:32:57.29 ID:lfgNvR7s.net] std::threadで作ったスレッドのスタックサイズは1 MBで 変更はできないら しい 今日日は仮想メモリがあるからなリ ッチなマシンなら……
934 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:07:52.01 ID:OW76vhVn.net] 標準ライブラリなんて普通使わないだろ 汎用的にしすぎてて、いらない機能が多いからやたらと遅いし
935 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:48:34.97 ID:vpYyJyBE.net] 標準以外なにをつかうんだ
936 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 04:47:34.93 ID:Fso6oKAR.net] _beginthreadex()
937 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 05:15:04.39 ID:RmTwSS8K.net] pthread
938 名前:デフォルトの名無しさん [2022/04/10(日) 05:58:59.81 ID:xcZwEbFY.net] <thread>で抽象化されていないOS特有の機能を使いたきゃAPI使うってだけ
939 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:29:27.51 ID:lpHEMRFm.net] >>921 大抵は自社でフレームワーク構築してるよ iostreamですら、includeしたプルリク蹴らられるし
940 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:37:41.44 ID:vpYyJyBE.net] >>925 被せるだけじゃなくて自作すんの?
941 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:57:59.43 ID:Np98oj9K.net] ちんちんシュッ!シュッ!シュッ!
942 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 13:14:21.25 ID:wqaUV7TG.net] >>921 OSのAPI直で叩けってことやろ 例えばCreateThreadならスタックサイズ指定できるし
943 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 16:50:49.57 ID:8UzTPUX4.net] >>925 うちもstringとかコンテナクラスは全部自作してる 昔はプラットフォームがUNIXもあったりして、環境によってはSTL使うと コンパイルエラーになってたからな
944 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 06:43:40.41 ID:x3kzaSAd.net] 関数群をまとめたいときってクラスで切るべき? 名前空間で切るべき? 例えば sub1、 sub2 というサブルーチンがあって、これらが func1、func2 から呼ばれるときに、これらをまとめたいと思うんです
945 名前:デフォルトの名無しさん [2022/04/11(月) 06:51:36.36 ID:r64ZejsB.net] べきという言い方はあまり好まんが 関数間で連携させるならクラス 連携しない単なるグループなら名前空間 というのが俺がよく使う手だ
946 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 06:54:00.91 ID:sjzgKw67.net] > これらをまとめたいと思うんです どうまとめたいんだよ…
947 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 12:12:27.70 ID:sxIacEU4.net] mc++d読んだけど、これが20年前以上に書かれたってことがすごいな 今となっては、当たり前のことをばっかだけど 当時は革新的だったんじゃないかな
948 名前:はちみつ餃子 mailto:sage [2022/04/11(月) 13:01:51.57 ID:7nQKgh0L.net] >>930 特定の範囲でしか使わない関数があるという意味? それだけの理由なら名前空間でもクラスでも分ける必要はない。 その翻訳単位で内部リンケージにしておけば十分だよ。 名前空間やクラスは外部に対してどう見せるかの問題なんだから 機能単位の中で階層を分ける必要はあんまりない。
949 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 15:33:36.87 ID:gXppguDy.net] そういや翻訳単位の管理として新しくモジュールがc++20から導入されたけど、使い心地どうかしらん? 既存コードもモジュール化した方がいいくらい便利だったりするのかしらん?
950 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 16:44:48 ID:bKclHLZw.net] >>930 >>934 staticおにいさん「class外、*.cppにstatic修飾して書く」
951 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 19:36:19.35 ID:KtON6/oU.net] >>935 昨年末あたりにvisual studioで試したらどうやってもビルド通らなくて諦めたけど今もう使えるようになってるんかな
952 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 01:31:53 ID:EgjH8LRN.net] 実験した程度でしかないけど使えてたよ。
953 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 10:13:21.46 ID:5vVn8Fqf.net] >>934 その翻訳単位がグローバル領域だったら? って意味でしょ
954 名前:はちみつ餃子 mailto:sage [2022/04/12(火) 11:04:00.65 ID:5njWaFr4.net] >>939 言いたいことがわからない。
955 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 16:43:20.82 ID:qoqTD/fb.net] dfs とか bfs みたいな名前の関数はそれを呼ぶ関数とまとめたくなるよね分かる 関数内関数にすると他の関数から呼べなくなるしな 名前を変えよってのはナシなw
956 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:25:13.49 ID:nzV1CUkS.net] モジュール……
957 名前:デフォルトの名無しさん [2022/04/12(火) 17:51:32.45 ID:RKLCiqJK.net] アホな質問かもしれないのですが…… 今までユニークポインタで実体領域確保していたクラスを、どうせ一つしかnewしないからと、クラス内部に自身型の静的変数を保持して使用する方法へと変更しました。 所謂シングルトンに似た感じのものだと思うのですが。 std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>(); ↓ static Hoge& GetInstance(){static Hoge temp;return temp;} 使用する分には問題ないのですが、実体化させたいクラス数が多く、結果的には静的変数のガズが増え、実体がグローバルに多数存在する状態になってしまっていると思います。 この場合、名前衝突以外に何か想定される不具合はありますか? データを保持させるクラス以外は全てこれに置き換えようと思っているのですが、今までnewして使っていたため何か罠があると思えてなりません。 この方法はクラス名から実態を呼び出せて私に大変便利です。
958 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 18:22:24.95 ID:fdFUG1QI.net] >>943 ないです
959 名前:蟻人間 mailto:sage [2022/04/12(火) 18:27:41.73 ID:Dt0TGPDO.net] >>943 マルチスレッドじゃないよな
960 名前:デフォルトの名無しさん [2022/04/12(火) 18:29:33.15 ID:RKLCiqJK.net] >>944 ありがとうございます! >>945 違います! 無さそうで安心でした
961 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 18:39:03.10 ID:FTlcB8DO.net] クラス外側でtemplate実装にしろよとは思うが template<class T> inline T Instance; int main(){ Instance<Hoge>.Execute(); }
962 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:21:11.76 ID:72/2frZ9.net] static ローカル変数が定石じゃないの?
963 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 20:27:31.77 ID:vgUv52EM.net] は?
964 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 20:30:19.09 ID:X1V1J1VK.net] 経験的にはどうせ静的なら変に隠さずグローバル変数の方が使いやすいです
965 名前:デフォルトの名無しさん [2022/04/12(火) 21:36:16.25 ID:RKLCiqJK.net] ちょっと皆さんの言ってることがよくわからないのですが…… テンプレートにして有効範囲で使用する、グローバルでいつでも呼び出せるようにする ということでしょうか? 使用を想定しているのは膨大なデータのコンプレックスではなく、外部データ加工用に少量のローカル変数を持たせたクラスなので、実体はひつとで大丈夫だと思います。 その際には、衝突を考えないならば、グローバウに無造作に置いた方が使いやすいよ、ということでしょうか?
966 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 22:13:59.90 ID:oNokQpOT.net] 左再帰が無限ループになる理由を教えて
967 名前:蟻人間 mailto:sage [2022/04/12(火) 23:03:12.33 ID:Dt0TGPDO.net] >>952 実引数と戻り先アドレスをスタックに繰り返し積むから。
968 名前:蟻人間 mailto:sage [2022/04/12(火) 23:31
] [ここ壊れてます]
969 名前::14.39 ID:Dt0TGPDO.net mailto: 積んで解放しないから。 [] [ここ壊れてます]
970 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 23:39:21.85 ID:EarvAF13.net] 停止しないから無限ループする …って酷い理由だな
971 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 00:21:12.99 ID:bubjF7cO.net] じゃあ停止するかどうかを判定する汎用ルーチンHを作ればいいんだよ。
972 名前:947 mailto:sage [2022/04/13(水) 01:25:51.41 ID:qfz8Xp88.net] >>951 シングルトンを確保しておくためだけにstatic関数が10も20も並ぶのがアホくさいじゃん? template 1つだけ書いておこうよって意図で書いた。 が、>>951 のように一時変数として使うならローカル変数にして使い捨てるべき。 グローバル変数(>>943 もやってることは同じ)を使うデメリットは調べればすぐ出てくる
973 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 05:51:58.22 ID:8pcHyiAe.net] staticにインスタンス入れるやり方だとマルチスレッドマルチプロセスにした時すぐ破綻するから大き目の定数入れる以外には使ってないな
974 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 08:11:33 ID:ZQqXT36F.net] グローバル変数は初期化順序が環境依存になる問題があるから、 呼び出し順序で初期化するインライン関数のstaticローカル変数の方が扱いやすい という話があったかと思うけど、最近は回避するテクニックできたの?
975 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 09:44:11 ID:abmOAw0D.net] >>959 それでも競合は起きうるよね 排他制御は必須
976 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:25:01.35 ID:2DJG1h+b.net] 相談 抽象的なノードクラスがあり、上流ノードから下流ノードが接続され情報を取り出したいとする この時、接続時に上流ノードの出力タイプと、下流ノードの入力タイプが符合するかどうかを調べたい 今考えている実装方法としてenum型でタイプを列挙しておき、ノードの出力属性としてもたせ 入力に必要な属性を接続時に調べておく方法 シンプルでベストかなとは思うが、タイプが増えていくとその管理がやや大変かと思う 文字列で符合させるやり方も考えたが、例えば"int"と"integer"とかでごちゃごちゃしそう なにか妙案があればお聞かせ願いたい
977 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:28:21.90 ID:CyvaZh5F.net] 抽象的でわからん
978 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:36:53.86 ID:2DJG1h+b.net] すいません、もうちょっと自分で考えて相談点まとめます
979 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:44:17.47 ID:zii+x7Ds.net] それぞれのスレッドでは個別だけど スレッド内では唯一のインスタンス スレッドをまたいでも共通で唯一のインスタンス あたまがこんらんする
980 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 12:06:05.65 ID:IuPW2iUE.net] >>961 どのみち符号の管理・徹底は必須だから、文字列で符号化し、表とかにまとめてバージョン管理・周知徹底する。 protocol bufferとかでインターフェイス管理すれば少しは楽かね。 protocol buffer以外だとなにがいいかしらん?
981 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 12:12:18.93 ID:5KnL277L.net] // A と Bのところだけが異なるfとf2 // うまくこの関数をまとめれませんか? #include <iostream> #include <vector> #include <algorithm> struct Foo { void Func() const {} }; void f(const std::vector<Foo>& vf) { std::for_each(vf.begin(),vf.end(), [](auto&& f) { f.Func();//A } ); } void f2(const std::vector<Foo*>& vf) { std::for_each(vf.begin(),vf.end(), [](auto&& f) { f->Func();//B } ); } int main( int argc, char *argv[] ) { std::vector<Foo> vf; std::vector<Foo*> vfp; f(vf); f2(vfp); }
982 名前:蟻人間 mailto:sage [2022/04/13(水) 12:20:05.74 ID:+YltrYoo.net] std::vector<Foo*> std::vector<Foo> のインターフェイスに共通部分がない。アキラメロン。
983 名前:947 mailto:sage [2022/04/13(水) 13:02:01 ID:sgl3F80B.net] type_traitsで殴ればいけそう template<class T> auto& to_reference_if_pointer(T&t){ if constexpr(std::is_pointer_v<T>){ return *t; }else{ return t; } } to_reference_if_pointer(f).Func();
984 名前:はちみつ餃子 mailto:sage [2022/04/13(水) 13:12:01.75 ID:qCcEdGhE.net] >>965 https://kaitai.io/
985 名前:デフォルトの名無しさん [2022/04/13(水) 18:00:26 ID:m7JtDTD6.net] >>957 今実機で確認して、インライン化したテンプレートをヘッダーに咥える方法が自分にとって良い事を確認しました! ありがとうございます。 いちいちスタティック咥えるより良いと思います。 マルチスレッドは使用したことがないのでわかりませんが、なるべき勉強してみたいと思います。 皆さんありがとうございます!
986 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 18:15:56.73 ID:I4ieD//T.net] >>966 std::for_each(vf.begin(),vf.end(),std::mem_fn(&Foo::Func)); または for (auto &&x : vf) { std::invoke(&Foo::Func, x); }
987 名前:デフォルトの名無しさん [2022/04/13(水) 18:28:24 ID:U0E88zpG.net] オマンコハンター チンポマン! 股間の銃を携えて今日もおまんこ狙い撃ち
988 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 23:40:49.30 ID:grUsXYkY.net] >>971 ラムダが消されてて笑った
989 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 23:53:02.59 ID:nvVh9cdQ.net] >>967 ↑ スキル低っ
990 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 07:29:49.75 ID:Qd4x1CZh.net] シングルトンは要らない子、とヴァカにしていたが グローバルなオブジェクトのコンストラの呼び出し順序が翻訳単位を超えた呼び出し順序がまるきり不 定になるというC/C++の仕様を回避するのには有効おと1 mgぐらい考えを新ためた OSのwrapperを書いて、main()でそれを初期化することにして グローバルなオブジェクトのコンストラから思わずOSのwrapper経由でログを吐かせようとしたらクラッシュして気づいたから 最初のOSのwrapperの最初の呼び出しでまだ未呼び出しなら初期化したら良い(ビコーン ← まんまシングルトン main()で初期化することが保証しているから、グローバルなコンストラの中でいきなりスレッドを起こしてそこから OSのwrapperを呼ぶ、みたいなktgi行為が無い限りこのシングルトンはマルチスレッドの対策が不要
991 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 07:33:43.77 ID:Qd4x1CZh.net] 訂正orz、 誤: 最初のOSのwrapperの最初の呼び出しでまだ未呼び出しなら初期化したら良い(ビコーン ← まんまシングルトン 正: 最初のOSのwrapperの最初の呼び出しでまだ未初期化なら初期化したら良い(ビコーン ← まんまシングルトン
992 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 08:28:49 ID:79II+WyL.net] 別にシングルトンじゃなくても単に起動時に初期化して渡せばええやん
993 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 09:59:18.13 ID:wwxSZsaE.net] いや要るでしょシングルトン 何らかのリソースマネージャ作るときとか避けて通れないし
994 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:35:30.42 ID:dlHUY+WK.net] >>977 初期化順序の問題って回避できたっけ?
995 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:40:07.14 ID:79II+WyL.net] mainでリソース用意しろという話よ ライブラリだったら初期化用になんか叩いてもらえ
996 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:47:06 ID:rsrkTEkU.net] グローバル変数をポインタにしておいてmainでnewとか friend int main(int, char**); とか?
997 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:56:36 ID:79II+WyL.net] なんでグローバル変数にこだわるんだよ
998 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:58:53 ID:dlHUY+WK.net] >>980 シングルトンより制限多くてメリット感じないなぁ。 マキャベリスト対策は難しいかもしれないけど、マーフィーに呪われないように運用で回避するのは最後の手段にすべき。
999 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 15:09:30.09 ID:4tVKG4Xu.net] 1個でもグローバルなりがあると エントリポイントの main よりも前に走るコンストラクタ内部であれこれされる可能性を想定する必要に迫られる と
1000 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:01:53.91 ID:he9C7sX7.net] >>981 > グローバル変数をポインタにしておいてmainでnewとか > friend int main(int, char**); とか? それは最初にやったがブ
1001 名前:ツがOSのwrapperなのでカッコワルダサいと思い考え直した 結果がマルチスレッド対応を含まないライトなシングルトンの適用 >>980 main()に入ってから初期化するというだけでは初期化が間に合わないケースがあるから何とかしたいという話 [] [ここ壊れてます]
1002 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:06:58.93 ID:xDiQzMrD.net] mainの実行より前に意味があることしようと思ったらコンパイル時しかなかろうよ
1003 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:13:00.39 ID:he9C7sX7.net] >>986 の主観の話をしているのではない件について:
1004 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:22:10.66 ID:xDiQzMrD.net] >>987 お前のグローバル変数愛は主観じゃないんかいな もっと崇高な何かがあるのか
1005 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 04:08:04.71 ID:sm6VHVYM.net] 静的ストレージは実装と心中するプログラム以外マジでやめといたほうがいい 移植性が大幅に低下する
1006 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 04:23:41.78 ID:1Y3hD0GJ.net] グローバルやstaticな変数を使用する時は排他制御を必ず行なう これを厳守していれば使っても大丈夫です もちろん使わずに済む別の方法がある時は別の方法を取るべきです
1007 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 06:36:24.15 ID:he9C7sX7.net] >>988 ・任意のユーザーが任意のクラスをグローバル変数として使うことをOSが禁止するわけにはいかない ・クラスのコンストラクタでOS資源を確保することは普通(イベントオブジェクトを確保する等、ハンドルのメンバを有効な値で初期化しようとする ・誰かがグローバル変数のコンストラクタでOSの資源を確保しようとしたら、この場合初期化前のOSのwrapperが呼ばれる ここまで書かないと>>986 がいかにたわごとを言っているかわからないわけ?! >>990 >グローバルやstaticな変数を使用する時は排他制御を必ず行なう まあそれはそう。今回排他制御を避けられるのは >main()で初期化することが保証しているから、グローバルなコンストラの中でいきなりスレッドを起こしてそこから >OSのwrapperを呼ぶ、みたいなktgi行為が無い限りこのシングルトンはマルチスレッドの対策が不要 というktgi行為が無いことの条件付き。
1008 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 07:35:15 ID:xDiQzMrD.net] >>991 えっと、つまり、使えるものは使わずにはおれない一族に生まれたということですか?
1009 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:15:20.73 ID:xhqbcuaF.net] >>991 c++11から静的ローカル変数の初期化は自動的に排他制御され、スレッドセーフとなる[10]。 だって。 シングルトンパターンの何を問題視しているんだっけ?
1010 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:29:52.88 ID:y04/Kx9U.net] 自分で記述するだけならどうとでもなるけど 他人に使ってもらう前提だと 限度はあるにしても色々防護策を講じたくなるのもわかる
1011 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:31:14.00 ID:xDiQzMrD.net] モジュールの結合度を評価するのにまず排他がどうとか気にするもんかね?
1012 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:40:46.42 ID:WMzvufu2.net] C++相談室 part160 https://mevius.5ch.net/test/read.cgi/tech/1649979572/
1013 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:43:44.23 ID:ZcCJtqdn.net] >>995 それとは独立の問題 並行&並列でも動くことが現代では求められているため 一般的にグローバルやstatic変数の読み書きには排他制御が必ず必要となる 厳密な意味で変数ではなく一度限り初期化される定数のようなものの場合はその初期化が排他制御される保証のみでも大丈夫なだけ
1014 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:44:18.42 ID:wykOop5a.net] >>994 シングルトンパターンならコンストラクタをプライベートにするんだから、そもそもグローバル変数として初期化できないんじゃない?
1015 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:44:58.60 ID:wykOop5a.net] >>997 >>993
1016 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:49:06.65 ID:xDiQzMrD.net] >>997 グローバル変数批判でまずそれが問題だと思うのはどうかしてるよ
1017 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 54日 20時間 52分 24秒
1018 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています