1 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:56:53.03 ID:uFDqtnkl.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part146 https://mevius.5ch.net/test/read.cgi/tech/1573094136/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 ↑え?だってお前、普通ダイナミックリンクするだろ? "ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
166 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 22:53:50.64 ID:LbxbUX1g.net] 俺はアニメのほう思い出すよ。見たことないけど。
167 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 23:23:24.45 ID:vIdqLkFw.net] >>146 ReadかWriteのどちらかを抜けてからgetlineで読み込みますね。 デバッグで確認しています。 >>147 ビルドの段階で全くエラーが出ません。 警告にもなっていません。>>149 >>149 グローバルスコープと言うより全体が__declspec(dllexport)で 出力された関数です。
168 名前:デフォルトの名無しさん mailto:sage [2020/01/02(木) 23:46:28.42 ID:HVAsQwCl.net] >>162 VS使ってんでしょ? > while (getline(ifs, str)) このifsを右クリックして定義がどこか探しなはれ
169 名前:デフォルトの名無しさん [2020/01/03(金) 12:08:13.91 ID:lHIykz7y.net] >>162 ここまで頓珍漢なレスは久々に観た 釣りなら大したもんだ
170 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 13:55:16.44 ID:fIUwKVUy.net] 初心者なんてそんなもんだろ >>145 if/else文の中で宣言されたifsはブロック{}で囲まれてしまっているから、ブロックの外からアクセスできない。 だからgetlineに渡してるifsはどこか別の場所にあるifsを参照してしまっている。 std::fstream fs; //< 読み書き両用にするなら"fstream"にすること if (mode == "Read") { . fs.open("xxxx.txt", std::ios::in); . ques = text; } else if (mode == "Write") { . fs.open("xxxx.txt"); . ques = split(text, ":")[0]; } ... getline(fs, str)
171 名前:デフォルトの名無しさん mailto:sage [2020/01/03(金) 17:20:32.66 ID:f1l2rf84.net] >>165 おっしゃる通りです。お恥ずかしい。 for文とかにだけ当てはまると思っていました。 後はローカルかグローバル変数かぐらいしか。 ありがとうございました。
172 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 07:56:51.57 ID:L9bP3bPr.net] >>166 いえいえ
173 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:04:42 ID:5cG1OuZI.net] vector<vector<vector<char>>> data(10, vector<vector<char>>(3, vector<char>(3))); だと,、char[10][3][3]になると思うのですが [10]の部分だけ動的にするにはどうすればいいのでしょうか。
174 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:09:21 ID:tEaTJVpu.net] [3][3]を固定にしたいってことか?
175 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:09:38 ID:5cG1OuZI.net] そうです。
176 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:16:31.83 ID:qsayucr9.net] class/structの勉強をしましょう
177 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:22:22.12 ID:tEaTJVpu.net] >>168 vector<array<array<char, 3>, 3>> data(10);
178 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 11:23:40.31 ID:5cG1OuZI.net] 構造体もvectorに入れられるのですね。 ありがとうございます。
179 名前:デフォルトの名無しさん mailto:sage [2020/01/08(水) 21:49:44.02 ID:PRP72WQ5.net] ちなみに class と struct はデフォルトが public か private か、という違いしかない 事実上同じもの
180 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 00:07:44.02 ID:KXHiDU3s.net] >>173 いえいえ
181 名前:デフォルトの名無しさん mailto:sage [2020/01/09(Thu) 10:15:27 ID:LsvkYb1v.net] C++のclassとstructはデフォのアクセス指定以外全く同じものだとちゃんと教えない教材がちらほらあるのが悪い そもそもclassより先にstructをCの構造体の感覚で教えるやつは教える側がちゃんと理解してない可能性すらある
182 名前:デフォルトの名無しさん [2020/01/09(木) 10:55:03.06 ID:0RBXSUPh.net] そこまで言うなら struct の方をさっさと deprecated - obsoleted すれば良かったんよ 20年位前にやっとけば良かった
183 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 11:59:01.69 ID:+yE1fb2H.net] というかclassが要らん private: 一行書けばいいだけだろ まあ最近ではGoやRustによってstructが復権してるけど、 当時はオブジェクト指向の用語に対して変なコンプレックスがあったんだろうな
184 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 12:47:07.90 ID:zQlYINS8.net] >>178 そうそう | | 彡⌒ミ \ (´・ω・`)デフォルトのアクセス指定子を定義したことは,十中八九,間違いであった. (| |):::: (γ /::::::: し \::: \
185 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 12:52:15.14 ID:LsvkYb1v.net] 指定子書き忘れにデフォがprivateならコンパイルエラーでわかるがpublicならわからん デフォはprivateの方がいい
186 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 12:55:55.27 ID:zQlYINS8.net] 禁止がデフォで許可が明示な constも本当はそうなっていて欲しい ラムダ式の[=]だけデフォconstになっててmutableで外すんだけどね
187 名前:デフォルトの名無しさん [2020/01/09(木) 18:49:23.86 ID:vYl+3riX.net] 全部コンパイルオプションで対応できそうなのに っていうかRustいらなくならなくね
188 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 20:02:43.03 ID:dcOC3Udy.net] >>181 最適化禁止のvolatileがデフォはウザすぎる
189 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 20:46:00.27 ID:jeGBkGmG.net] volatileってC++20で死ぬんでしょ?
190 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 20:53:16.18 ID:dcOC3Udy.net] まじか SFRとかどうすんだよ
191 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 21:18:47.87 ID:VFRbhrWi.net] volatileの有用な機能のみを残し、効果が疑わしい、または壊れている機能を非推奨化する 完全に消える分けでは無いらしい 詳細は知らん
192 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 21:55:38.56 ID:SnSt17is.net] >>176 まじですか、C++のstructも構造体だと思っていたけど。 知らなかった。 プロパティだけならstructの中の変数とclassの中の変数 って、あまり変わらない気がするけど、classの方はメンバ とか言われる実質は関数を含むことができるじゃない。 あと、親から継承したりとか。 なんとなく同じものという感じがしない。
193 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 22:06:14.43 ID:LsvkYb1v.net] structもメンバ関数を持つし、継承もするし、classをstructが継承することもその逆もできる デフォがpublicかprivateかの違いだけで機能はclassと全く同じ
194 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 22:23:38.89 ID:SnSt17is.net] >>188 知らなかった。長い間,、Cの構造体と同じことしか できないと思ってた。
195 名前:デフォルトの名無しさん mailto:sage [2020/01/09(木) 23:18:29.42 ID:3XE25/Yj.net] なんかboostスレ死んでるからここで教えてください。 boost使ってクラサバ作ってて、クライアントが接続されるたびに、サーバ側で比較的重い処理があり、 処理止めたく無いからio_serviceに溜まったキューの数見てスレッドを動的に調整したい。 けど、自分の拙い検索能力ではio_serviceに溜まってるキューの数を調べる方法が無さそうなんですが、取得することは可能ですか? よろしくお願いします。
196 名前:デフォルトの名無しさん mailto:sage [2020/01/10(金) 08:52:59.23 ID:cqQYZnld.net] 許容されるスレッド数で常にフルスロットルじゃいかんのけ? 処理がないスレッドは勝手に止まってるし、なんならセマフォで動作数も調節もできるだろうし
197 名前:デフォルトの名無しさん mailto:sage [2020/01/10(金) 20:10:30.90 ID:gdjTauNe.net] スレッド増やしたところで本質的な解決にならん問題な気がする。
198 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 00:59:53 ID:NtF2wljx.net] キューの前にガバナー、調速機を付ければいい キューに入れた個数と出てきた個数をカウントすりゃいいんだろ スプールでも作ればいいんじゃないの
199 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 01:12:20 ID:mrkcLLQe.net] 質問ですがstd::function<T>型のオブジェクトにNULLって代入していいの?
200 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 01:15:06 ID:GiJYoHUo.net] >>194 大丈夫 nullptrの代入は何も関数を保持していない状態にする
201 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 01:43:57 ID:mrkcLLQe.net] なるほど! ?クス、
202 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 15:19:42.16 ID:hPLqZ0ty.net] C++11の知識でC++書いてるけど、特に不便ないな 最新のC++だと何ができるの?
203 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 15:29:42.91 ID:pEBt3sLq.net] なら知らなくていいんじゃない?
204 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 15:47:51.76 ID:9vrnWCM9.net] お前がC++11で十分と思っていても他人はお前に遠慮なんかせずC++20の記法で書く お前がヘッダーをよこせと言ってもモジュールしか提供されない
205 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 17:14:40.32 ID:hPLqZ0ty.net] なにを怒ってるんだよ イージーになろうぜ、イージー
206 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 17:26:39.19
] [ここ壊れてます]
207 名前: ID:hPLqZ0ty.net mailto: 俺は久しぶりにC++を書いて機嫌がいいんだ あまり怒らせるなよ [] [ここ壊れてます]
208 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 17:33:49.75 ID:7JWsqvWB.net] 標準ライブラリにはまだモジュール使われないんだろ? 20の次あたりでモジュール版も出てくるかどうかだろ
209 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 17:48:06.88 ID:XaO4QoYK.net] >>202 シルカばーーーか
210 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 17:53:38.30 ID:hPLqZ0ty.net] モジュールって何?
211 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 18:22:48.55 ID:G3Wgm73J.net] モジュールってテンプレート持てるの?
212 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 18:28:46.90 ID:AvFBkNTe.net] またテンプレートの分割コンパイルを誰かが1年ぐらいかけて実装して、 できたころには陳腐化しているという歴史の繰り返し 永遠に枯れない
213 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 19:01:55.71 ID:hPLqZ0ty.net] gcc10入れた! -std=c++2aでモジュールって使えるの?
214 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 19:15:28.94 ID:hPLqZ0ty.net] なんだ-std=c++2aでは使えないみたいだな 概念的にはGoのpackageに近いのかな?
215 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 19:29:30.73 ID:OEMCT43T.net] 多分もう相手されないから引っ込んだ方がいいよ
216 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 19:30:41.47 ID:hPLqZ0ty.net] なんでだよー>< 相手してくれよー>< うわわわわん
217 名前:デフォルトの名無しさん mailto:sage [2020/01/11(土) 22:12:41.17 ID:o20hTksc.net] まだ実装してるコンパイラが無いっぽいから誰も使い勝手なんかわからんわな >>205 持てる
218 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 05:48:12 ID:LolRUOoj.net] 1) mkl_blas.h がシステムに存在したらそれをインクルードし、行列行列積ルーチンとして (C++で実装された) dgemmを使う。 2) mkl_blas.hが存在しなければFortranルーチンのdgemm_を使う。 というのを実現したいとします。 mkl_blas.h もないし Fortranルーチンもないという状況は考えません。 関数名の末尾のアンダースコアの有無がややこしくて困っています。 #if __has_include(<mkl_blas.h>) #include<mkl_blas.h> #define dgemm_ dgemm #else extern "C" void dgemm_(省略); #endif としておいて、プログラム中の行列行列積ルーチンは全てdgemm_と書くことでお茶を濁しているのですが、もっとスマートな方法はありますか。 #define dgemm_ dgemm という部分がいかにも場当たり的で気に入らないです。
219 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 09:50:22.73 ID:GTFqFgmO.net] usingで別名にしてしまうとか?
220 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 09:59:58.48 ID:g8OSapKt.net] 俺ならソースにdgemm_みたいなのがあるのは嫌だから #if __has_include(<mkl_blas.h>) #include<mkl_blas.h> #else #define dgemm dgemm_ extern "C" void dgemm_(省略); #endif ってやると思う
221 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 12:48:26.98 ID:JaW6uvCT.net] マクロが嫌ならinline関数にすればいいんじゃね
222 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 20:04:38.92 ID:2yY0psIJ.net] C++で次々に追加される無駄機能は Cをしっかり理解していれば同等の機能を実装するのは造作もないものが多い
223 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 20:05:36.02 ID:Age3j7t+.net] では具体例お願いします
224 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 20:35:35.36 ID:+J7i572i.net] void*が出てくる時点で論外なのでよろしく
225 名前:蟻人間 mailto:sage [2020/01/12(日) 20:41:55.23 ID:26db5mti.net] #define my_static_assert(cond, msg) typedef char my_static_assert_failed[(cond) ? 1 : -1]
226 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 20:59:55.77 ID:Svv4a/Ag.net] Cはマクロの使い方次第で出来ることが深まるんだよな ただC++はマクロ使わない方向で進化してるからな
227 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 21:09:19.71 ID:gA+rg5vj.net] >>212 下手なことするよりその書き方のが良い。個人的には214の方のが好きだが大して変わらん。
228 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 21:35:06.84 ID:TRbEu5Zq.net] いざというときも最悪Cならコンパイラを自作できるが
229 名前:C++はちょっと… [] [ここ壊れてます]
230 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 21:56:32.12 ID:Svv4a/Ag.net] いやいや gccとかC++だし
231 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 22:39:39.23 ID:MD4l5gjt.net] うちの会社C++03なんだけど・・・
232 名前:デフォルトの名無しさん mailto:sage [2020/01/12(日) 22:51:11.80 ID:Age3j7t+.net] それが妥当かどうかは業務による
233 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 01:41:11 ID:rQk6tfo+.net] おとなしく頭の良い奴に従っとけ 自分が優秀だと思い込んでいる精神異常者の諸君
234 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 01:58:06 ID:xcD2sz0v.net] 頭のいい奴は総じてc++はカスだと言っとるぞ。
235 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 02:05:13 ID:Px4xDI4Q.net] 増えていく機能が軒並み プログラミング始めたてのやつが持つ不満を具現化したようなものばかりだ 慣れていくとCがそうである理由がわかってきて、いらなくなっていく おおかた頭のいい奴が新規で入ってきて、慣れてないくせに良かれと思って追加してるんだろう
236 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 02:15:09 ID:8CXSeWtZ.net] 例を教えてくれ。
237 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 03:56:13.32 ID:rQk6tfo+.net] 頭の悪い奴向けの機能なんだが
238 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 06:52:04.51 ID:zZXHCgLl.net] >>216 >>228 具体例早くしてくれ 抽象論では話にならん
239 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 09:16:12.93 ID:j6Sgy/j5.net] C++コンパイラとC++のライブラリはC言語でも書けるから 当たらずしも遠からずだと思う
240 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 09:25:57.13 ID:a0NWv3WS.net] 全くCで書かれてないコンパイラってあるの?
241 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 10:25:34.29 ID:pIGOCTOQ.net] Cでテンプレート対応できるの?
242 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 10:30:00.85 ID:+nJPsH/6.net] >>228 C++は大人数で開発するための言語なんだからてめー個人がいるかいらないかなんて関係ねーんだわ
243 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 10:36:38.68 ID:+nJPsH/6.net] チームでの開発を安全に進めるための機能なんて熟練者が書く分にはそりゃいらんだろ で?
244 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 12:52:54.65 ID:A/MByXKy.net] まあアセンブラさえあれば他に必要ないし でもそこそこ規模大きいプロジェクトはc++多いよね 反例にlinuxはあるけど
245 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 13:04:44.90 ID:xcD2sz0v.net] windowsでさえc++なんか使わなけりゃよかったいうとるぞ。 つまり低レイヤー触るのに向いてるようでそうでもないってのがc++なんだよ。
246 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 13:20:13.66 ID:j6Sgy/j5.net] リーナスは低レベルな人やからな
247 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 13:20:44.02 ID:FqpttVgU.net] だから?
248 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 22:54:55.25 ID:/BeY0uog.net] >>233 Sun/OracleのJavaのコンパイラ javac は Java 自身で書かれている。 IBM製のJavaコンパイラ ecj も同じく。
249 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 23:00:48.10 ID:FqpttVgU.net] JVMもJavaで書いてみせろ
250 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 23:44:05.72 ID:vq82NN4B.net] 皆さんが使用されているエディタを教えてください....🙇♀
251 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 23:45:43.26 ID:jU0I703o.net] 自作
252 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 23:45:56.78 ID:5GjUS2iX.net] メモ帳
253 名前:デフォルトの名無しさん mailto:sage [2020/01/13(月) 23:46:58.98 ID:vq82NN4B.net] あ、すみません僕は今はatomを使っています 自作のエディタを使ってらっしゃる方なんているんですね。。。
254 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 06:11:49.55 ID:J0UMnVjO.net] emacs
255 名前:デフォルトの名無しさん [2020/01/14(火) 13:29:05.29 ID:PBX58Pvh.net] 某板金社製
256 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 16:11:50.76 ID:gkNCY9ap.net] ↓のコードはコンパイルが通るのですが、func(1)ではなく、func<int32_t>(1)のようにしなければいけないと思っていたんですが、そうではないんですか? これはコンパイラが勝手にTの型を推測してくれているのでしょうか? #include <iostream> template<class T> void func(T value) { std::cout << value << std::endl; } int main() { func(1); return 0; }
257 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 16:13:46.64 ID:MAaOflfD.net] 俺は自ら望んでなったC++使いだが リーナスの主張には何ら文句はない 俺も好かんところがいくつかあって我慢しているが 他の人がキレるのを否定はしない
258 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 19:00:56.35 ID:jdAaUvyI.net] >>249 intに推論されてるね。 関数は推論してくれる。
259 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 19:47:23.47 ID:gkNCY9ap.net] >>251 そうなんですか ありがとうございました
260 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 19:55:58.10 ID:MAaOflfD.net] C++17からはクラスも推定するようになったから気をつけろな
261 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 20:10:13.46 ID:3eaorBLU.net] 地獄になるのが目に見えるわ。
262 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 20:20:51.77 ID:J0UMnVjO.net] >>249 >>251 もう少し正確に言うと関数の引数の型については推論してくれる。 戻り値については推論してくれないから<>で型を指定する必要がある。 template<typename T> T func(double v){ return static_cast<T>(v); } int main(){ // int pi = func(3.14); // エラー int pi = func<int>(3.14); return 0; }
263 名前:デフォルトの名無しさん mailto:sage [2020/01/14(火) 23:30:18 ID:gkNCY9ap.net] >>253,255 なるほど! ありがとうございます
264 名前:デフォルトの名無しさん mailto:sage [2020/01/15(水) 00:35:48 ID:7a3J15MS.net] >>256 いえいえ
265 名前:デフォルトの名無しさん mailto:sage [2020/01/15(水) 08:07:26.85 ID:Af26ZTs6.net] >>257 楽しい?
266 名前:デフォルトの名無しさん mailto:sage [2020/01/16(木) 01:26:49.29 ID:Ue561N6A.net] C#使ってきたわい、C++入門するにあたって何から手を付けたらいいか分からない 江添の入門本読んだらええの?
267 名前:デフォルトの名無しさん mailto:sage [2020/01/16(Thu) 04:14:44 ID:SACm472n.net] +を重ね合わせないでずらして書くと#じゃなくて++になるやろ つまりそういうことや
268 名前:デフォルトの名無しさん mailto:sage [2020/01/16(木) 06:13:59.73 ID:iXD/XJ1o.net] あんなカス本読むならビャーネの本とeffective系統を何冊か読んだ方がよっぽど為になる。
269 名前:デフォルトの名無しさん mailto:sage [2020/01/16(木) 08:12:06.71 ID:+e0TuAjq.net] 俺も自分の経験からは禿の本をオススメすることになる
270 名前:デフォルトの名無しさん mailto:sage [2020/01/16(Thu) 18:58:35 ID:aiRikJgB.net] C++においてハゲとは神を意味するからな
271 名前:デフォルトの名無しさん mailto:sage [2020/01/16(Thu) 20:10:19 ID:5A9213qe.net] また髪の話ししてる
272 名前:デフォルトの名無しさん [2020/01/17(金) 02:03:14 ID:nV1+qdjp.net] C++でウィンドウ関係の処理を組もうと思っているのですが、 最近だとMFCではなく.Net Framework を利用するのでしょうか?
273 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 02:20:28 ID:oPB0sz0H.net] いいえ
274 名前:デフォルトの名無しさん [2020/01/17(金) 02:26:05 ID:gAZZjojh.net] WebGL
275 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 06:22:56.76 ID:BtsrcJh0.net] Win32APIが主流ですよ
276 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 07:24:00.72 ID:sP/gsAG3.net] >>265 MFC抜きでWin32APIだけでコード書くことがあるけど正直無駄な苦痛を感じるよ MFCもダサいとこあるけどMFCでできることと同じ内容のコードを書いてると泣けてくる
277 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:02:37.47 ID:6PrSA6bz.net] WTLってどうなの?
278 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:03:39.75 ID:+NTDhbdd.net] 純粋仮想関数の=0の右辺って定数式なんでしたっけ
279 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 08:55:06 ID:9u9GYVKv.net] 0じゃないか?
280 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 09:17:21 ID:r0ibn4Bf.net] オブジェクトを明示的に破棄する方法ってある? 自分で new したなら delete すれば良いと思うが、STL コンテナ等の場合はどうすれば良いかという質問です。 例えば巨大な vector を作って何らかの作業をした後、もうその vector は用無しでメモリがもったいないからスコープを抜けるのを待たずに破棄したいみたいな状況を想定してます。
281 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 09:19:05 ID:oRcV/dFn.net] >>271 純粋仮想関数であることを示すための専用の構文らしい。pure-specifierという。
282 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 09:22:16 ID:8wRp1qeu.net] >>273 空とswap
283 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 09:26:42 ID:r0ibn4Bf.net] >>275 場当たり的な対処に思えますが、そういうのが嫌ならマメにスコープを切れということでしょうか。
284 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 10:03:31 ID:jP7OzWuZ.net] >>276 じゃあvectorをnewしたらいいじゃん 頭使えよ
285 名前:デフォルトの名無しさん [2020/01/17(金) 11:18:09 ID:fMuYUnvE.net] >>265 tcl/tk wxWidgets Qt
286 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 12:09:31 ID:FiFP8PG3.net] Qtはメジャーな製品でよく使われてる印象がありゅ
287 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 12:12:10.21 ID:oPB0sz0H.net] MS製にこだわって頑なにMFCみたいな化石使ってる奴いるけど普通にサードパーティのツールキット使うのが主流
288 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 12:58:41.79 ID:sP/gsAG3.net] 他人のところの事情も知らんくせにシッタカこくと 聞こえたやつ全員からそれぞれ色んな理由でアホにされるぞ
289 名前:デフォルトの名無しさん [2020/01/17(金) 13:10:35.05 ID:fMuYUnvE.net] GTKは糞
290 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 13:38:21.01 ID:oPB0sz0H.net] >>281 選択肢に.NETが出てくるあたり何の制約もない状況でサードパーティが使えない理由とは?
291 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 14:31:40 ID:sP/gsAG3.net] 身バレするから書かない
292 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 14:39:28 ID:8NRoOtOw.net] スレ違いでしょ。続きはWin32APIスレに移動してどうぞ。
293 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 15:05:49 ID:r0ibn4Bf.net] vectorをnewする? ゴミみたいなこと言うな
294 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 15:19:25 ID:yexmiyzj.net] 質問する側の態度とは思えん
295 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 15:28:54 ID:WQqGcJSL.net] > 自分で new したなら delete すれば良いと思うが 良いと思ってるならvectorもnew/deleteで良いでしょ
296 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 15:35:23 ID:NjgiFnOV.net] vector newでいけない理由を先に説明してくれないと
297 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 17:45:27.47 ID:xt9i4Zu8.net] > スコープを抜けるのを待たずに > 破棄したいみたいな状況を想定してます。 破棄するタイミングはコンパイラには分からんのだろ 人が判断するしかないなら「場当たり的」にやるしか無いのでは
298 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 17:56:19.89 ID:8NRoOtOw.net] vector::clear()、vector::shrink_to_fit() の連続実行で十分なのでは?
299 名前:デフォルトの名無しさん mailto:sage [2020/01/17(金) 18:12:09.22 ID:2FWha3Nl.net] shrink_to_fit capacity()をsize()に縮小させるというリクエストを行う。 実装依存の最適化を許可するために、縮小するという動作は仕様上強制されない。 縮小されないかもしれない、らしい
300 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 11:20:53 ID:Iw/95SDF.net] たいていは逆にスコープを破棄のタイミングに合わせるような書き方すればいいだろ。 分岐の激しい破棄条件書くくらいならそっちのが楽なことは多い。
301 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 11:59:37 ID:timcC3h8.net] while {
302 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 12:04:39 ID:timcC3h8.net] 途中で投稿してしまい失礼。 do { } while(0); で括って、処理が続行できない場合はbreakして、doループを抜けたすぐ下でで資源解放する古典的な記述でいいのでは。
303 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 12:12:16 ID:LluV6Hhd.net] 糞野郎にみんな親切だな
304 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 14:36:14.37 ID:cLOUBKze.net] gotoを避けるためにgotoよりクソなコードを書くのがいいわけねえだろ
305 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 14:54:44.30 ID:timcC3h8.net] ま、資源解放のコーディングが楽になるなら正義でしょ。
306 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 16:33:12 ID:cLOUBKze.net] >>298 確認するが、ここがC++スレということは忘れてないよな?
307 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 16:37:31 ID:sDwxplmd.net] メモリがもったいない言うけど、ホントにカツカツなのだろうか 環境的に余裕であれば妙なコーディングする意味がない
308 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:06:16 ID:6Wtj4R8r.net] どんくらいスキマと余裕があるのかを常時監視するソフトウェアはかんたんに作れる なんせわたくしはC++を極めましたからな
309 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:37:07 ID:0qsbj5e6.net] >>297 gotoより糞な訳無いだろ こんな単純で頻出する制御構造が文法上ループにせざるを得ないのが悪いだけ まあtry catchと同型だが、これだと遅くなるしね
310 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:39:57 ID:cLOUBKze.net] >>302 doでない単純な複合文とgotoで済む話だ アホwバカwww
311 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:44:02 ID:0qsbj5e6.net] gotoだとRAII対応できないじゃん
312 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:44:36 ID:7kb+tsdB.net] すまねーよ。他の例外で飛ばされたらどうすんだ馬鹿。
313 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:46:21 ID:cLOUBKze.net] >>304 do(0) なんて持ち出すアホが RAII かよw
314 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:47:02 ID:0qsbj5e6.net] まあ最近は [&]{ ... }(); で書くことが多いが
315 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:48:42 ID:0qsbj5e6.net] do{}while(0);の問題は知らない奴が混乱するって一点のみだろ
316 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 20:59:02 ID:cLOUBKze.net] 「知ってるやつ」の言い訳を、ここで開陳してもらおうか 最近、笑う健康法ができてないんで、よろしく頼むわ芸人さん
317 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:04:02 ID:0qsbj5e6.net] その前にgotoより糞ってのが既に成立してないじゃん どこが糞なのか具体的に
318 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:10:26 ID:cLOUBKze.net] ははは、話を逸らすしかねえよな 「do{}while(0);の問題」てのが他の問題によって 成り立つのか成り立たねえのか影響されると 自ら自白してやがる(核爆 助けてやらねえよ、自分でなんとかしなアホwバカwww
319 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:15:23 ID:0qsbj5e6.net] 意味がわからないよ 煙に巻いて逃げる気かなw
320 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:19:10 ID:cLOUBKze.net] >>312 逃がさねえぞ 「知ってるやつ」の言い訳を、ここで開陳してもらおうか 最近、笑う健康法ができてないんで、よろしく頼むわ芸人さん
321 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:19:14 ID:65HS6FKB.net] やりたいことはスタックにあるvectorの早期解放なんだから gotoもdo{}while(0)もラムダ式もいらない 単に{}で囲うだけでいい
322 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:20:27 ID:cLOUBKze.net] だよなwwwwwwwwwwww
323 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:23:34 ID:Upzp+V6z.net] ↓do { } while(0)でこれできたっけ? if (cond) { goto label1; } do { 処理A label1: 処理B } while (0); YES! gotoならできる!! if (cond) { goto label1; } label2: 処理A label1: 処理B goto label2;
324 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:28:09 ID:Upzp+V6z.net] つか do { 処理A; if (cond) { break; } 処理B; std::unique_ptr p(new Foo()); 処理C; // pを使用 } while (0); みたいな腐り切った腐敗臭しかしないコードを書くぐらいなら std::unique_ptr p; { 処理A; if (cond) { goto last; } 処理B; p = std::unique_ptr(new Foo()); 処理C; // pを使用 } last: ; と書くわ Perl風に
325 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:30:23 ID:v/DZPeDP.net] >>314 そんなことはお前ともう1名ほど除いて皆わかってる そうじゃなくて特定の条件で早期に開放したい場合にどうするかだよ >>315 味方が現れてウレションかよw
326 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:30:23 ID:cLOUBKze.net] ID:0qsbj5e出てこいオラ
327 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:34:58 ID:cLOUBKze.net] ID:0qsbj5e6 出てこい
328 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:42:46 ID:65HS6FKB.net] >>318 auto v = std::make_unique<std::vector<Hoge>>(...); ... if(特定条件){ v.reset(); } これだけの話では?
329 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:45:43.25 ID:cLOUBKze.net] そうそう 兆くだらねえ話だ(わざと誤字
330 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:47:11.24 ID:cLOUBKze.net] goto過敏症のアホどもが少しでも目を醒ましてくれるといいな
331 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:49:54.58 ID:v/DZPeDP.net] >>273 から読み直して 空moveが確実だけど質問者がそれを場当たり的と生意気言ったことから話が盛り上がるw
332 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:51:28.17 ID:v/DZPeDP.net] >>323 この場合gotoは何の解にもなっていないことにそろそろ気づいた方がいいよ
333 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:53:26.94 ID:v/DZPeDP.net] >>321 >>324 を読んでね
334 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 21:59:36.19 ID:0qsbj5e6.net] RAII対応してないから無理矢理goto出来るようにした糞コード上げられてもああ糞ですねと言うしかないんだが。 内部が複雑になってきたらその度にブロック外に変数追加して、変数の内容の初期化は必要に応じてって書き方を続けるつもりなんかね
335 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 22:27:52 ID:cLOUBKze.net] >>325 gotoが何かの解になったらいいの?wwwwwwww
336 名前:デフォルトの名無しさん mailto:sage [2020/01/18(土) 22:28:06 ID:4nVoSga0.net] >>304 そうなんだっけ?
337 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 00:26:12.30 ID:M/ehGL7C.net] やっぱこういうコードは一度書いてみたいよな try { label: 何かの処理; } catch (Exception ex) { goto label; }
338 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 00:32:09.37 ID:M/ehGL7C.net] gotoを使うと糞、と言う香具師は多いが goto以外の構文も大概なことがある ↓これとか EnterCriticalSection(&csec); { if (エラー条件成立) { LeaveCriticalSection(&csec); throw "*** ERR ***"; } 何かの処理; } LeaveCriticalSection(&csec); 一体どうすれば…orz
339 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 00:36:14.30 ID:M/ehGL7C.net] いやまあテストラクトされるときにLeaveCriticalSection()するような AutoLockオブジェクトを使えば済むっていやー済むが 裏返せばgoto以外の構文も糞製造機であることにはかわりわない!
340 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 00:38:55.96 ID:ocqIlbpk.net] それは構文が糞なんじゃなくてリソース管理が糞なだけ
341 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 01:24:22.15 ID:PgEzQeWd.net] auto lockなんてむしろ使ってなかったらPRでリジェクトされる
342 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 06:28:34 ID:6oeBvQPN.net] gotoの何が悪いのかを端的に表すたった一言が出てこない教条主義は物笑いの種
343 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 07:19:17.26 ID:M/ehGL7C.net] 誰にも迷惑がかからないgotoの例: for (a = 0; a < 2; a++) { for (b = 0; b < 2; b++) { for (c = 0; c < 2; c++) { .... for (zaaa = 0; zaaa < 2; zaaa++) { 処理A if (何かの条件) { goto last; } 処理B } ... } } } last: ;
344 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 07:24:20.07 ID:M/ehGL7C.net] >>334 たまたまLeaveCriticalSection()はエラーを返さないが エラーを生じるブツだったらどうすんじゃ まあエラー通知先があれば良いのでやりようはあるが 加速度的に手が込んだコードが必要になって全体が糞化していくんじゃ!
345 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 07:35:30.18 ID:ilIPQsua.net] そもそもそのgotoを書きたくなるくらい深くネストしている時点でよくない説
346 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 08:03:07 ID:Wel1D6/w.net] >>338 対象とするデータによっては単純に多重ループで処理するのがもっとも自然でシンプルなケースもあるだろう。 無条件に「ネストしたループ(・A・)イクナイ!!」と言うのも教条主義じゃね?
347 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 08:05:11 ID:6oeBvQPN.net] 教条主義というよりただのバカ
348 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 08:08:17 ID:D5W6f6uH.net] gotoの使い方くらい知っておいた方が良いかと
349 名前:デフォルトの名無しさん [2020/01/19(日) 08:51:50 ID:2MN/c8bt.net] gotoにせよthrowにせよ、goto/throwの発生元が分からないのが受身になる側として辛い。 この点は、スタック情報へのアクセスが言語仕様として認められているJava/C#/Perl/Pythonに優位がある。
350 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 08:54:43 ID:M/ehGL7C.net] throwの発生元は例外オブジェクトに情報を持たせれば良いじゃん? gotoのジャンプ元は変数に情報を持たせれば良いじゃん??
351 名前:デフォルトの名無しさん [2020/01/19(日) 09:02:38 ID:2MN/c8bt.net] >>343 goto/throw発生元がバイナリで配布されている場合は、コードを書き換えられない。 クラス設計でやたらとメンバ変数をprivateにされると、クラスを利用する側はメンバ変数を古典的プリントデバッグできなくて難儀する。
352 名前:デフォルトの名無しさん [2020/01/19(日) 09:04:12 ID:2MN/c8bt.net] C++のprivate属性は厳しすぎ。readonlyアクセスできる属性があってもいいと思うんだ。
353 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 09:11:24 ID:M/ehGL7C.net] >>344 バイナリ配布のブツの例外発生元を何でコードで知りたいのかがわからん… アドレスがわかったところでソースが無いわけやし…… 何事かを言わんとするための想定に無理が有るのでは…
354 名前:デフォルトの名無しさん [2020/01/19(日) 09:12:59 ID:2MN/c8bt.net] タイミング依存の不具合を追跡する必要に迫られると、当然ながら対話デバッグはできない。 C++のprivate変数が不具合に関与しているとわかってもランタイムで値を見れないのは辛い。 他人様の作ったC++クラスヘッダーを一時的に書き換えてコンパイルする羽目に。
355 名前:デフォルトの名無しさん [2020/01/19(日) 09:17:35 ID:2MN/c8bt.net] >>346 例外が吐かれた後にできることなんてほとんどなくてもスタックをダンプできるだけでかなり助かる。 特に自分が作ったわけではないレイヤーでthrowされた時には、スタック情報が役立つ。
356 名前:デフォルトの名無しさん [2020/01/19(日) 09:20:25 ID:2MN/c8bt.net] 公式がデバッグシンボルを配布するご時世なのに、C++のスタック仕様はそれについていけていない。 デバッガを介することなくスタックをダンプできる手段が制約されすぎ。
357 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 10:49:09 ID:CSTVsvTH.net] gotoはRAIIと相性が悪いってのが端的だろ これはgotoが悪いと言うよりc++の言語仕様上のgotoの扱いが悪いって話 constexprで使えないとか規格が新しくなる度に不都合が増えていくよ
358 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 10:57:40 ID:RfLx+x9F.net] gotoの使い方くらい知っておいた方が良いかと
359 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:07:08.87 ID:fzpRtoDi.net] >>350 相性悪い?
360 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:07:41.05 ID:CSTVsvTH.net] 文字列パーサー内とかでの状態遷移に使うは推奨する その他でのgotoは代替手段があるし、そっちの方が言語サポート良いからgoto使うのはバカのやること
361 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:12:09.60 ID:CSTVsvTH.net] まあ不遇な原因はgotoが自由すぎて前にも後ろにも飛べるせいだろうね 変数のデストラクタを呼ぶべきかどうかフラグ管理でもしないとコンパイラが判断できなくなる。 goto使うならその自由さが必要な場面でこそ使うべきなんだよ
362 名前:デフォルトの名無しさん [2020/01/19(日) 11:18:58.21 ID:2MN/c8bt.net] >>354 プログラミング言語の世界では、前や後ろという表現は直観的にわかりにくい。 前や後ろは相対的なものであり、バックしているイテレータにとっては前はバックなのだ。 上と下なら直観的にわかるだろう。
363 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:21:16.66 ID:CSTVsvTH.net] 用語としては前後で統一されているような
364 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:22:22.50 ID:RfLx+x9F.net] gotoの使い方を知らない初心者がこのスレにいるってのが不思議
365 名前:デフォルトの名無しさん [2020/01/19(日) 11:27:05.68 ID:2MN/c8bt.net] [コラム] 正規表現の先読み/後読みは、どう考えても名前が悪いので、呼称禁止令を出してルックと気軽に呼んでみませんか。 - Qiita https://qiita.com/mochizukikotaro/items/84f3ab2740b8efbe0dc6
366 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:29:47.11 ID:6oeBvQPN.net] >>357 誤魔化さない説明が
367 名前:ちゃんとできるやつがずいぶん少ないという、残念な状況が今の日本だ [] [ここ壊れてます]
368 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:38:04.97 ID:RfLx+x9F.net] わざわざ複雑にしてまでgotoを避ける って宗教だよな 使いどころで使う それだけ
369 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 11:42:59.02 ID:ZzFAG3/g.net] いうて必要になったことないや
370 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 12:30:11.44 ID:L2mlhsAt.net] 別にgoto使っても使わなくても馬鹿が書けば複雑なコードになるだろ。 そういう問題じゃない。 そもそもc++の標準ライブラリが例外投げる時点でgotoとの相性は最悪だよ。 一番末端の関数で、副作用もないようなもの以外使えんわ。
371 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 12:36:07.26 ID:PgEzQeWd.net] gotoおじさんはたぶん例外安全性という概念をわかってない
372 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 14:43:36 ID:6jfPBIzz.net] >>363 例外安全の定義が難しいのですが、gotoを使っても例外安全を保障することはできると思うのですが、いかがでしょうか。
373 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:06:56.67 ID:PgEzQeWd.net] >>364 c++の標準ライブラリに関して例外安全とは何かは定義されてる できるできないで言えばgotoかつ例外安全はそりゃできるでしょうよ まずgoto関係なしに例外安全が相当大変であることを理解してから出直してくれ そうじゃなきゃRAII、autoなんとかmakeなんとかの有難みも理解できてないのよ
374 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:08:40.81 ID:RfLx+x9F.net] 話題のすり替え
375 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:16:49.04 ID:PgEzQeWd.net] >>366 話題を勘違いしてるのはお前だよ お前は単にbreakでスコープの脱出することに対してgotoの方が簡潔と言ってるんだろう そういう場合があるのは同意するけど今回の話題はそれじゃない スコープの脱出になってるのはRAIIでリソースを安全に開放する前提だからだ だからお前が言うべきはスコープをなくしてgotoを使うというなら 合わせてリソースをどのように安全に開放するかを説明しないといけない 場当たり的でない方法でね そこをまったく説明できない以上お前はgotoおじさんと呼ばれ続ける
376 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:20:52.99 ID:fzpRtoDi.net] >スコープをなくしてgotoを使う なんか言ってることが変だと思ったらこんな条件付けてたのか。ブロックスコープ使えばいいじゃん。
377 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:26:55.90 ID:RfLx+x9F.net] スコープを無くしてgotoで解放? なんじゃそりゃ? スコープを抜けないと解放されないぞ
378 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:27:43.53 ID:PgEzQeWd.net] 断わっておくけど >>295 に対してgotoおじさんが >>297 と言ったのが発端 後出しはしていない ちなみに295を書いたのはおれではない
379 名前:295 [2020/01/19(日) 15:31:10.41 ID:2MN/c8bt.net] どんな劣悪な環境でも動く do{ } while(0); こそ絶対正義。
380 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:33:51.15 ID:RfLx+x9F.net] >>295 は do ループを抜けたすぐ下で資源を解放 って書いてあるように見えるけど
381 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:34:25.99 ID:RfLx+x9F.net] >>370 の勘違いってことでいいのかな?
382 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 15:42:01 ID:PgEzQeWd.net] >>372 ああ確かに >>295 に対してってのは語弊があったかな ID:cLOUBKze の発言を追ってみて >>303 とかね gotoおじさんかと思ったら別人なのね
383 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:03:31 ID:6jfPBIzz.net] >>365 本来の「例外安全」の定義はもっと広い意味なのですが、あなたは、throwやcatchなどの「例外」が起きたときでもnewされたオブジェクトの削除などを行うという定義を採用されているようです。 break文を用いずにgoto文でブロックを脱出した場合でもオブジェクトは自動解放されるのをご存知ですか?
384 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:07:28 ID:PgEzQeWd.net] >>375 自分は理解しているって言いたいわけね じゃあさ >>273 のお題に対してgotoを使ったエレガントな方法を書いて おれは思いつかないね よろしく
385 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:11:06.93 ID:4SQs66uE.net] そもそも一番のカスはこいつ >>276 >>286
386 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 17:42:21 ID:fzpRtoDi.net] >>370 >>295に対して>>303が {
387 名前: goto label; } label: でいいんじゃないかってことかと。 逆にどう解釈してRAIIとか例外安全とか持ち出したのか気になる。 [] [ここ壊れてます]
388 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:24:30 ID:6oeBvQPN.net] 論点を増やそうとするのは苦しいやつの習性だね
389 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:46:40 ID:PgEzQeWd.net] >>378 それだとdo-whileと変わんないだろ gotoおじさんの論点てそれか? 人の事クソバカ言ってるわりに何の優位性があるのかわからんな
390 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:52:29 ID:6oeBvQPN.net] そうだよ、変わんないよ 複合文だけでできることになんでわざわざdoなんて面倒くせえもん使わなきゃいけねえんだよ
391 名前:デフォルトの名無しさん [2020/01/19(日) 18:52:32 ID:PM2cmccN.net] Rust使えばすべて解決。
392 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:53:23 ID:6oeBvQPN.net] まさかとは思うがブレースを開くのにdoだかforだか何らかのキーワードが必要とでも思ってたか?
393 名前:デフォルトの名無しさん [2020/01/19(日) 18:56:46 ID:PM2cmccN.net] 俺は何の実績もないおまえの言うことより、あわしろいくや氏を信じるけどな。
394 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:57:26 ID:yjllCGTd.net] >>378 噂のgotoおじさまもさすがにこのコードがいいなんて言わないでしょ
395 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 18:59:17 ID:6oeBvQPN.net] >>384 ブレースを開くのにキーワードが必要か否かに実績は関係ない 他人のネームバリューにすがるしかなくなったか?
396 名前:デフォルトの名無しさん [2020/01/19(日) 19:00:40 ID:PM2cmccN.net] >>386 ネームバリューは関係ないんだよ。 あわしろいくや氏は信用できる。 おまえは信用できない。
397 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:01:36 ID:4SQs66uE.net] >>387 俺はお前のあわしろいくや氏は信用できるという言葉が信用できない
398 名前:デフォルトの名無しさん [2020/01/19(日) 19:02:52 ID:PM2cmccN.net] >>388 俺のことは信用しなくていい。 あわしろいくや氏を信じろ。
399 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:15:30 ID:ocqIlbpk.net] 売名乙
400 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:29:04.71 ID:yQO+Nq01.net] まさか do while 構文が論点だと思ってたんかな? まあ本当はgotoを推す正当性が全くなくてごまかしてるんだろうけれど。 てかgotoと例外安全性はかなり綿密に絡んだ話だろ。誤魔化しすぎだわ。
401 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:45:18 ID:6oeBvQPN.net] >>387 ヒゲ生やした教祖様のために死刑になった信者と同じだなw
402 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:46:34 ID:fzpRtoDi.net] >>380 そのくらいしか思いつかなかったが、>>297はその程度の主張だったんじゃないの? じゃあどういう主張しているとID:PgEzQeWdは解釈していたのかな。そっちが気になる。
403 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:46:39 ID:6oeBvQPN.net] > かなり綿密に絡んだ話だろ 誤魔化しすぎというブーメランが脳天に突き刺さってるぞw
404 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 19:54:00 ID:yQO+Nq01.net] なるほど。。こりゃ話しても無駄だな。
405 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 20:25:44 ID:M/ehGL7C.net] gotoと例外安全性がどう絡むのかわからんボスケテ;
406 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:06:11 ID:fzpRtoDi.net] 話しても無駄以前に、結局gotoと例外安全がどう関係するのか一言も出てこなかったな。
407 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:10:50 ID:CSTVsvTH.net] RAIIとgotoは混ぜられないだろ
408 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:13:01 ID:AinWVopR.net] そらgotoでリソース開放ルーチンに飛ぶようなCスタイルのプログラム書くと 例外飛んできたときに死ぬって話でしょ (いくらC++にfinallyが無いからってgotoでリソース開放ルーチンに飛ぶのはダメ) ただし元々の質問には関係ない話なんだがな ところでC++にfinallyが無いのはちょっと良くないよね 今となってはラムダで自作できるようになったからいいけど
409 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:16:51 ID:fzpRtoDi.net] >>398 その「混ぜる」って具体的にはどういうことを言ってるんだろう。
410 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:24:53 ID:AinWVopR.net] 基本的に break や return も生き先の決まった goto なので 余ほど変な使い方をしない限りRAIIと goto を混ぜれないって事はないよなぁ むしろ RAII を使わないで goto でC系のリソース開放をしていた場合にハマるって話では まぁでもこれは do{ if( error ) break; }while(0); //開放処理 return; でも同じことだし、元の質問には関係ないんだが
411 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:34:33 ID:RfLx+x9F.net] まだやってんのか >>377 それ
412 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:40:42 ID:RfLx+x9F.net] do { if(...) break; } while (0); よりは { if (...) goto label; } label: の方が良い という
413 名前:モ見に賛成 >>303ではないけど [] [ここ壊れてます]
414 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:44:50 ID:RfLx+x9F.net] まあどっちでも大差ないけど
415 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:47:25.68 ID:RfLx+x9F.net] { { if (...) goto label; } } label: これはbreakじゃ無理
416 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 21:57:15 ID:RfLx+x9F.net] { switch (...) { case ...: goto label; } } label: これも無理
417 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:11:05 ID:ByUy1Erg.net] while(0)とか意味不明なコードよりgotoでスコープ抜ける方がはるかにシンプルだわな
418 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:15:20 ID:RfLx+x9F.net] 一応 do while(0) の使い方も覚えておいた方が良い 他人のコードを見たりマクロで使ったり する事もあるだろうから
419 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:17:28 ID:JMAoH3/H.net] 普段のdo whileもwhile(0)って書くなど弊害が出るのでやめた方がいい
420 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:19:27 ID:ByUy1Erg.net] ループするつもりもないのにループの構文使うのは悪手だと思う
421 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:27:26 ID:RfLx+x9F.net] >>409 日本語で
422 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:33:02 ID:fzpRtoDi.net] そこはまぁ、ループではあるけれども同時にbreakが使えるブロックでもあるわけで、 実際do-whileなんてほとんどがそういう使い方しかされていないわけだし。 ループできる構文でループしないのはbreakできる構文でbreakを使わないのと 同じようなものかと。
423 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:36:02 ID:JMAoH3/H.net] >>411 do whileしてるのになぜか1回しか実行してないのに気付くのに時間がかかる 習慣で書くのでwhile(0)に気づけない
424 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:48:25 ID:PgEzQeWd.net] こんなささいな違いは個人の好みでいいと思う派 do-while使わない派の言い分もわからなくもないが、 ソースを読む場合gotoだってgoto先を確認しないと意図が理解できないだろ label名を考える必要があるのもちょっとめんどい なのでこんなのどっちでもいい ちなみにrust方式もブロックの先頭にラベル付いてるのは若干違和感覚える
425 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 22:50:45 ID:RfLx+x9F.net] >>413 誰か解説よろしく!
426 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:07:09 ID:Wel1D6/w.net] どっちのやり方でも構わないけど、リソース◯◯を自動解放するためのブロックだとか意図を示すコメントを付けておいてくれればそれでいい。
427 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:13:56.14 ID:AinWVopR.net] ↑だからその方法だと例外安全が・・・ C++だとリソース開放は RAII か finally かしか幸せになれない
428 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:17:22.36 ID:RfLx+x9F.net] その方法 ってどの方法?
429 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:23:50.28 ID:Wel1D6/w.net] >>417 誤解させたかもしれないから補足すると、どっちのやり方もと言ったのはただのブロックかdo whileかという話のことで、どちらにせよスコープを抜けて破棄されることを想定していた。 解放ルーチンにとばすことは端から考えてなかったよ。
430 名前:デフォルトの名無しさん mailto:sage [2020/01/19(日) 23:47:54 ID:L2mlhsAt.net] 解放ルーチンにとばすくらいしかgotoの有用な使い方なんてねーだろ。 だからRAII、例外安全の話になってるわけだが もう意地になって意味もわからずgotoにこだわってる馬鹿がいる。
431 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 00:05:06 ID:ThUag/92.net] finally相当のデストラクタをラムダ式で渡すクラスのインスタンスを作ればいいじゃない、 で済まされてしまいそうだがやはりfinallyはあったほうがいい。
432 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 01:01:38.84 ID:KvAer05C.net] 「解放ルーチンにとばすくらいしかgotoの有用な使い方なんてねーだろ。」 って思えるぐらい、Cではこの技法が多用された なぜなら真実は逆で 「gotoでとばすぐらいしか開放ルーチンをまとめる方法なんてねーだろ」 だったから多用された A→Bでなくて、実はB→Aだったって話 なんだけど、あまりにもB→Aが多用されたから 数の暴力で逆のA→Bも成り立つと感覚的に思ってしまう だが本当にそうだろうか、gotoに開放ルーチンに飛ばす以外の利用法は無いのだろうか 模索してみよう、というのがスレの流れ スレがその流れになるのは自明で 何故ならC++においては「gotoで開放ルーチン」は例外安全の意味で完全な悪手になったから 初めから勘定に入らないし、考える意味もないし、議論の余地もない 他の利用方法を前提に話すのは当たり前で既定路線
433 名前: [] [ここ壊れてます]
434 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 01:58:07 ID:wNCym70P.net] スレの流れはvectorの動的な解放手段についてです
435 名前:デフォルトの名無しさん [2020/01/20(月) 05:25:12.27 ID:KSbNzMqr.net] Javaはgotoを無くした先進設計だからな。
436 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 07:11:09 ID:SZK6NMcF.net] >>410 ほんこれ メインフレーム時代から「なぜ0を足すんだろう」なんてあったけど そういう謎コード書いて俺スゲーってやる厨二病は痛いよな
437 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 07:59:32 ID:hWOi4sNW.net] つまりgotoと例外安全がどうとか言っていた人はこんなC時代の技法を念頭に置いていたわけか。 if (fail) goto FINAL; FINAL: 後始末 gotoとRAIIの相性が悪い、混ぜられないという話はまた別なのだろうか。
438 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 08:30:41 ID:ItoFGwWk.net] >>426が例外安全かどうかとgotoは関係ないんじゃない? >>273と>>426のコードも関係ない ただ例外安全て言いたかっただけと思う
439 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 09:55:56 ID:SZK6NMcF.net] >>273 vector<usigned char> huge; //do something huge.clear(); gotoは全く関係ない
440 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:09:57 ID:rZl1icD3.net] >>428 vector自体が確保したメモリが解放される保証がないのでNG とっくに答えは書かれているのだから今からどやるのやめろ
441 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:14:06 ID:SZK6NMcF.net] 保証しないってどこに書いてあったっけ?
442 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:15:25 ID:JGG/x92o.net] >>275 これで解決済みだよなぁ std::vector<...>{}.swap(v)
443 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:15:47 ID:N9WxJN6X.net] >>428 >>291,292辺りを見てこい
444 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:17:29 ID:N9WxJN6X.net] もちろんclear()の仕様も確認しとけ
445 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:18:17 ID:ThUag/92.net] >>292 で実装依存の最適化について言及がある。 あるサイズを超えるまではヒープではなくスタックを使うことで高速実行を期待する実装はあり得ると思う。 vectorの具体例は知らないが、EASTL::basic_stringはそうやってる。
446 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 10:40:56 ID:SZK6NMcF.net] >>433 だから、どこに書いてあったのかと聞いているんだが
447 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:04:21 ID:wNCym70P.net] >>431の言う空の一時オブジェクトとswapという常套手段で解決するのに質問者のクズは場当たり的などと難癖をつけ、 さらにじゃあnew/deleteしろよというまっとうな意見にバカを言うななどとほざいた結果がこのくだらねえ流れだよ
448 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:09:12 ID:rZl1icD3.net] >>435 c++の規格書は有料だけど持ってんの? ぐぐればstack overflowとかいくらでもひっかかるけど調べた? これは割りと知られた仕様だと思うけどね 実際g++とかでやってみればわかるけどclearしてもcapacity変わんないから
449 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:14:14 ID:wNCym70P.net] 少なくともVC2019はclearでデストラクタが呼ばれてる
450 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:20:47 ID:N9WxJN6X.net] >>438 それはvectorに格納した要素ごとのデストラクタの話であって、それらを格納するためにvector自身が確保した領域が解放されるわけではないだろ
451 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:29:18.51 ID:SZK6NMcF.net] >>437 情報持ってるのに出してくれないのはわかったよ、無理にとは言わん g++の挙動については情報ありがとう
452 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 11:53:45 ID:JGG/x92o.net] むしろclearで解放せず、capacityが減らないことを保証してほしいよね capacity減らす手段は用意されているのだから
453 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:32:03.74 ID:xWGHAxxP.net] 結局何を保証して欲しがってるのかさっぱりわからんが 言語仕様はvectorの何やらはもちろん、deleteだってfreeだって、OSにメモリ領域を確実にお返しになる事なんか保証してない事は覚えておこうな
454 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:33:54.17 ID:RAANiraF.net] >>441 > capacity減らす手段は用意されているのだから いや>>432 はそれが確実じゃないって話だろ まあそんな実装は
455 名前:見たことないけど [] [ここ壊れてます]
456 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 12:52:13 ID:JGG/x92o.net] >>443 いや空とswapすれば減るじゃん
457 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 13:22:01 ID:hv8WW6TF.net] >>444 空とswapは場当たり的に見えて却下と質問者様がおっしゃったからこの論争になったんだぞ
458 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 13:22:46 ID:SZK6NMcF.net] >>442 OSに返すかどうかの問題じゃねえだろ allocatorが管理するサブプールに還元でもいいわけで
459 名前:デフォルトの名無しさん [2020/01/20(月) 14:27:22 ID:0GX6odYx.net] 概出鴨試練蛾 do{...}while(0); と {...} の違いって決定的なのは何かって break; を入れられるかどうかだと思うんだけど ループじゃないものに do{...}while(0); を使うのは可笑しいって派の人らは 後者に break; 入れられるようにしておけば良かっただけなんだよな
460 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 14:50:16 ID:hv8WW6TF.net] ループする気もないのにループ構文を使うのは誤解の元 同様のことは他にもいくつも手段はあるのにループを使う必要がない モダンな書き方だと[&](){...}();
461 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 15:02:12 ID:KVDidwnp.net] 違うだろ while使わないよ派はgotoで充分だろ ブロックを抜けるbreakが欲しいのは現状while使うよ派だろ
462 名前:デフォルトの名無しさん [2020/01/20(月) 15:15:43 ID:0GX6odYx.net] once{}; みたいな構文で良いんじゃね マクロとか書けば
463 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 15:21:36 ID:hv8WW6TF.net] マクロ() ベターCとか03で脳みそ止まってんだろうなw
464 名前:デフォルトの名無しさん [2020/01/20(月) 15:26:55.87 ID:0GX6odYx.net] C++スレだからlambdaでも許されるけどCだと使えないやん?
465 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 15:29:38.41 ID:hv8WW6TF.net] ほぉ、じゃあお前はCで使える文法のみでC++を書いてんだな ボケてんのか?
466 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 17:52:26.33 ID:SZK6NMcF.net] >>447 GOTO文有害説で言われる無条件分岐のスペルがbreakであろうとgotoであろうと同じことだ 同じ意味合いのことを書くために、ループでないものをループという嘘をつくことに俺は反対だ
467 名前:デフォルトの名無しさん [2020/01/20(月) 20:28:01.32 ID:KSbNzMqr.net] 結局、gotoは使わないほうが良いのですか?
468 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 20:51:28.03 ID:SZK6NMcF.net] { から } までを1命令と読めるようにするのにgotoは無用と言っているに過ぎない そのようにまとめようとしていないときやgotoを使っても1命令と読める場合にまで GOTO有害説に囚われ強弁するのは何も分かってないやつのすることということだ
469 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 20:56:48.81 ID:rZl1icD3.net] つまんないことに拘りすぎ どっちでもええがな
470 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 21:36:31 ID:hWOi4sNW.net] >>448 今だとdo-whileでループする方が誤解の元になりそうな。
471 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 21:38:12 ID:jzGRQ/VP.net] #define BLOCK(stmt) do { stmt; } while(0); BLOCK( if (error) break; );
472 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 21:53:50 ID:IuISEeYy.net] do{}while(0)とか初めて見たけど ダサすぎてそりゃ思いつかねーわwww
473 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 21:55:40 ID:dqQuCzGx.net] 結局goto有害説に流されないオレカッケーが言いたいだけだろ? それでもgotoが有効な場面なんかないけどな。禁止にしても問題なんかない。
474 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 22:00:17.76 ID:SZK6NMcF.net] GOTO有害説に流されるのがオレカッケーと思っているようだな アホwバカwww 禁止にしたら問題あるからlongjmpやthrowができてきたんだよ
475 名前:デフォルトの名無しさん [2020/01/20(月) 22:11:05 ID:KSbNzMqr.net] つまり、使わないほうが良いのですね。 なんとなくですがわかりました。
476 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 22:12:08 ID:SZK6NMcF.net] Javaから帰ってこなくていいからな 永久にバイバイ
477 名前:デフォルトの名無しさん mailto:sage [2020/01/20(月) 22:30:44 ID:dqQuCzGx.net] >>462 今時、例外の問題も把握してないでlongjumpとかthrowとか言ってんのか。。 馬鹿にもほどがあるわ。 負け確定だから泥仕合にしようってのはわかるがそろそろ引っ込めよ。
478 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 05:17:13 ID:AnB6dumh.net] >>459 while(0)の後ろにセミコロン付けちゃダメ
479 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 07:25:59 ID:XinnYwlJ.net] >>465 GOTO有害説に流されているという指摘は否定しないんだな?w
480 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 08:47:12 ID:pAPT/+0o.net] >>459 定義部 { stmt; } のセミコロンも不要かな。 プリプロセッサを通した変換結果を見て気付いた。 って言うか、関数形式マクロの実引数に 空白とかカッコとかを含めることができるのね。
481 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 08:50:21 ID:liyEgHWj.net] >>468 確かカンマも使えないはずだし、>>459のマクロは使い勝手は悪く制御構造も隠蔽する有害な使い方だろう。
482 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 09:35:24 ID:ecU7KawI.net] gotoを使わないことが目的になって 余計分かりにくくしてるアホな例
483 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 09:49:43 ID:Hkcle0K4.net] goto論争はくだらない 一方でラムダ使ったループ脱出は議論の余地がある これがエレガントに見えるのか パズルに見えるのか 自分の場合どちらかといえば後者 ラムダ自体は多用するけど
484 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 11:17:56 ID:Sppu2iw7.net] 盲目的にgoto=悪と信じて、かえって読みずらいコード書く奴ってほんとアホだよなあ
485 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 13:51:41 ID:XinnYwlJ.net] >>470 ほんこれ
486 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 13:54:41 ID:XinnYwlJ.net] gotoの何が悪いのかわかってないやつをもう少しいたぶってやろうと思ってたけど 途中で可哀想になってきて答え書いてやってるのになあ。。。
487 名前:デフォルトの名無しさん [2020/01/21(火) 18:52:44 ID:xueGtX5x.net] >>460 do { } while(0) は自分は見たことがある。 忘れてしまったが、確か、#define マクロの定義部分で使われていて、目的は、 マクロ全体が一つの分の用に実行されて欲しいことであったようだった。 #define マクロ名() do {\ ・・・\ ・・・\ } while(0) のような感じだったと思う。 これなしで裸で書くより安全になる場合があった気がする。
488 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 18:57:29 ID:fxsKQzaN.net] if (...) マクロ(); else ...
489 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 18:57:46 ID:xueGtX5x.net] >>475 忘れてしまったが、おぼろげながら何か以下の様なことに関連していたような記憶がある。 C/C++では、if 文の直後は {}がなくても書くことが出来てしまう。 それで、 if (条件式) マクロ関数名(); のように書いた場合、マクロの定義部を単なる {} で書くより安全な場合があったような 気がする。 忘れた。
490 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:00:56 ID:xueGtX5x.net] >>476 あ、その場合だね、多分。 #define aaa() {・・・} と定義してしまった場合、 if (...) aaa(); else ... と書くと、 if (...) {}; else ... と展開されてしまい、else の部分がエラーになってしまう。ところが、 #define aaa() do {・・・} while(0) と定義していると、 if (...) do {} while(0); else ... と定義されて、正しく動作する。
491 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:03:11 ID:xueGtX5x.net] https://stackoverflow.com/questions/257418/do-while-0-what-is-it-good-for ↑に書いてあった。
492 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:11:44 ID:jtyzl32v.net] それは11年前のネタだからそうなってるけど現代C++ならラムダ式で書くべき内容
493 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:19:17 ID:fxsKQzaN.net] マクロでしか書けない物もあるんだよ
494 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:19:18 ID:jXO8TLK9.net] 大昔の工芸品みたいやな
495 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:24:51 ID:fxsKQzaN.net] ていうかなぜラムダ式? 考える順は以下じゃない? 関数 インライン関数 テンプレート関数 マクロ
496 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 19:35:47 ID:jtyzl32v.net] >>483 そこで回答されている #define FOO(x) do { foo(x); bar(x); } while (0) は #define FOO(x) [&] { foo(x); bar(x); } () と簡潔に書ける そのQAの内容は今のC++におけるdo-while(0)の有用性を示す内容ではない
497 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 20:01:36.85 ID:fxsKQzaN.net] ああ、そういうことか do while に対するメリットがないと 互換性から do while を選ぶことになりそう
498 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 20:17:22 ID:V9u70PsA.net] ラムダ式はc++11からか 使えない環境は結構あるんだろうな 近付きたくない
499 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 20:20:59 ID:m86EWX9f.net] >>484 最適化前提にしないと代替とは言えない
500 名前:ヒ [] [ここ壊れてます]
501 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 20:21:55 ID:OieZoAm+.net] そんな用途でマクロなんか使わねーわ。ばかか。
502 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 21:35:08.93 ID:XinnYwlJ.net] スコープが効かねえ毒だかんな
503 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 22:01:33.56 ID:fxsKQzaN.net] >>481
504 名前:デフォルトの名無しさん mailto:sage [2020/01/21(火) 22:03:37.86 ID:XinnYwlJ.net] __LINE__がいるのとかな
505 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 00:05:18 ID:LIwEls05.net] >>484 JavaScriptだとそうかいても速度差がないかもしれないけど、C++だと、 そう書いた場合は、関数を定義してから、マシン語の call 文でその関数が 呼び出されるので結構なオーバーヘッドとなる。 JavaScriptの場合は、どう書いてもオーバーヘッドがあるからそのくらいの オーバーヘッドは体感速度に登ってこないのでどっちでも良いだけ。
506 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 00:20:06 ID:2biZgMt+.net] >>492 ラムダ式はインライン展開されるからオーバーヘッドにはならない
507 名前:デフォルトの名無しさん [2020/01/22(水) 01:14:20 ID:eHIdhO0H.net] error: no member named 'emplace_back' in 'std::__1::vector<int, std::__1::allocator<int> >'; did you mean '__emplace_back'? v.emplace_back(d); ^~~~~~~~~~~~ __emplace_back /Library/Developer/CommandLineTools/usr/include/c++/v1/vector:696:10: note: '__emplace_back' declared here void __emplace_back(const value_type& __x) { push_back(__x); } ^ 1 error generated. push_backは普通に使えるんですけどemplace_backは何故か上記のようなエラーが出てしまいます 一応コンパイラに言われた通りに__emplace_backに変えれば動きはするんですが、普通にアンダーバーなしで 動かすにはどうしたらいいんでしょうか。環境はmacの10.14です。
508 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 01:26:38 ID:2biZgMt+.net] >>494 OSだけ書かれても環境がわからんけどこれに見える https://cpprefjp.github.io/implementation.html#clang
509 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 09:21:16 ID:RBeGE/46.net] >>493 それ保証されてる? 最適化オフでは関数オブジェクトのままじゃないの? 最近のc++はデバッグビルドが使い物にならないことが多くてマジ困る
510 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 09:24:55 ID:dJnLloAw.net] >>496 最適化するかしないか自分で選べるんだから、言語のせいじゃないと思うんだ。
511 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 09:47:45 ID:s6VTVCIo.net] 最近というか昔からだなデバッグまわりがクソなのは ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ デバッグをないがしろにするなと >>497 端的にテンプレートが原因だから言語のせい というか誰のせいかどうでもいいから解を提供しろと
512 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:28:10 ID:dJnLloAw.net] >>498 最適化設定を変えることが解になると思って言ったんだけど、そうはいかないことがあるの? デバッグまわりがクソだと言うなら、相手はまずコンパイラ&デバッガのベンダであって、言語の標準化は あんまり関係なくね?
513 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:34:22 ID:Oj6zQLXh.net] インライン展開するかどうか含めて 最適化はコンパイラ依存 パフォーマンス測定やチューニングは 実際の環境でやらないと 可能性で言えばマクロが一番インライン展開の可能性が高い (コンパイラが賢すぎて同一コードを共有するとかない限り)
514 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 10:50:51 ID:kHABv+Er.net] マクロはソースの字面を読み替えるだけ 機械語の命令シーケンスを開いたサブルーチンにするインライン展開とは全く別な話
515 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:06:37.54 ID:OzkwmLpy.net] >>500 マクロは、C
516 名前:言語の時代から「前処理(preprocess)」として処理され、 コンパイル作業が入る前にその場にトークンとして展開されるだけと 仕様で決まっています。勝手に関数になる可能性はほぼ0です。 [] [ここ壊れてます]
517 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:28:55 ID:S75Q14iC.net] 挙動が仕様通りになるならコンパイラは何やってもいいんだよ(と仕様で決まってる) マクロだったものに関数呼び出しを仕込むのもコンパイラの自由だ 実際同じ処理の塊があっちこっちに出てきたらまとめて関数(みたいなもの)にするコードサイズ最適化は普通にやる可能性がある
518 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 12:40:53 ID:Oj6zQLXh.net] >>501 オーバーヘッドを語ってるんだから どういう手順でバイナリになるかは関係ない バイナリになった状態が全て >>502 >>500にそう書いてるけど
519 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:12:02.54 ID:kHABv+Er.net] >>504 マクロ展開は最適化が始まる前の話だつってんだよ、わかんねーやつだな #define a(b,c) b * 2 + c * 2 a(x, y) //これは x * 2 + y * 2 //こうしろというだけの指示で (x + y) * 2 //このような変形は意味していないし してはならない a(x, y) * z //こういうとき困るだろうが
520 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:18:49.85 ID:kHABv+Er.net] インライン展開されるかどうかは、そのコード片がマクロの展開結果かどうかには関係ないってことだぞ こんなこと、いちいち言わなきゃわからんようだから付け足しておく
521 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:34:41.13 ID:S75Q14iC.net] >>505 最適化をいつ始めるかなんてそれこそコンパイラ次第なんだけど
522 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:41:29 ID:yb939hMs.net] つまりマクロはインライン展開されやすいという主張は引っ込めるわけだな
523 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 13:43:39 ID:yb939hMs.net] 都合悪くなると どうせいつもの手で逃げるだろうけどな 尻尾巻いたやり取りは残るぜ
524 名前:デフォルトの名無しさん [2020/01/22(水) 14:44:17 ID:54HMiZ6v.net] >>505 #define a(B,C) ((B) * 2 + (C) * 2) >>498 >ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ ほんそれ
525 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 14:49:21 ID:kHABv+Er.net] >>510 それはおまえさんの勝手な思い込みだよ x * 2 + y * 2 * z という結果を意図して使うこともできるのは マクロに特有の機能で今さら変更できなくなっている
526 名前:デフォルトの名無しさん [2020/01/22(水) 14:51:21 ID:54HMiZ6v.net] 意図して出来るのは知ってるが 敢えてやらないんだよ
527 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:11:37.83 ID:s6VTVCIo.net] >>499 デバッグのために最適化切ると激遅になる問題が散見されるという問題にたいして 最適化設定を変えるという解がナンセンス そりゃpragma駆使して手で細かく切り替えりゃ可能だろうがそんなことやってられない
528 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:11:48.33 ID:kHABv+Er.net] オマエガナー(aary
529 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:13:12.36 ID:kHABv+Er.net] >>512 おまえが510で持ち出したような括弧が自動的に付くような規格改定が行われない理由を考えたことがあるか?
530 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:13:39.10 ID:Oj6zQLXh.net] >>505 多分比較してる内容が噛み合ってない マクロを展開した結果と直接記述と が同じなのは当然 プリプロセッサなわけだから そうじゃなくて マクロ、インライン関数、通常の関数の比較の話 当然最適化の期待度は マクロ(直接記述)>インライン関数>通常の関数
531 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:18:02.26 ID:Oj6zQLXh.net] >>505 そもそも最適化ですらない話を持ち出してるのか 話の流れと全く関係ないですね
532 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:32:14.07 ID:s6VTVCIo.net] >>499 ベンダの責任っていうのは一見もっともでそれがまさにc++標準化メンバーのスタンスだ でも例えばお前はSFINAE関連のデバッグどうやってるよ? いくつかツールはあるが導入が難しいか頼りないものばかりだ そんな状況がずっと続いている このあたりが改善するには言語コアを設計する時点からどんなデバッグ機能が必要か考えるべきってのがおれ
533 名前:フ主張 作業フローを理解しない人が無邪気にこれが入ればさらにソースコード短く書けまっせレベルの議論で機能追加を考えるべきでない [] [ここ壊れてます]
534 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:34:50.28 ID:2biZgMt+.net] 機能を使うかどうかはお前の判断でお前の責任 勝手に機能使っておいて八つ当たりすんな
535 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:50:53.24 ID:LkBGzo9o.net] >ほんと標準化プロセスは現実のプロダクト開発に関わったことのない言語オタクの遊び場に見えるわ +1
536 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:53:26.36 ID:2biZgMt+.net] 江添みたいなのしかいない日本と違って、普通の国の委員は企業の代表として参加しているのでその指摘は的外れ
537 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:57:43.58 ID:OzkwmLpy.net] >>503 関数になっているものを inline 展開する処理系は多数ありますが、 プログラマがせっかく展開して書いてあるものをわざわざ関数に戻す処理系 はめったにないのです。 また、そのような最適化は人間には簡単に思えるものですが、機械にやらせようと するととても大変です。マクロ展開される前のマクロ関数の状態ならまだ できるのですが、コンパイラの中で最適化層と前処理層がかけ離れた位置に あるので、もしやりたければ最適化層だけでそれをやることになり処理がとても重くなります。 まず、コンパイル後に出来上がった中間コードのなかから同一のパターンを見出すのが ものすごく時間が掛かります。それから全く同じではない場合への対処が機会は苦手です。
538 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:57:58.58 ID:kHABv+Er.net] >>516 最後の2行とそれ以前が論理的に繋がってないぞ
539 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 15:58:35.89 ID:kHABv+Er.net] >>517 506で牽制しておいたはずなんだが 言わなきゃわからんのではなく、 言ってもわからんやつのようだな
540 名前:はちみつ餃子 mailto:sage [2020/01/22(水) 18:28:00.61 ID:lnnB9FBg.net] >>516 > 当然最適化の期待度は > マクロ(直接記述)>インライン関数>通常の関数 現代のコンパイラの最適化機構はかなり複雑で、どのように最適化が効くか予想するのは無理。 素朴な処理系ならなんらかの傾向がある場合もあると思うけど、一般化できるような話ではないよ。 普通の関数はインライン関数より呼び出しのコストは確かに大きいけど、 全体のコードサイズが大きくなるとキャッシュメモリからあふれやすいといった話もあって、 トレードオフになってる要素がある。 それに、主要なコンパイラは inline キーワードで修飾してもしなくてもインライン化が効果的ならインライン化するし、 効果的でないならしないよ。 inline 関数として定義すれば各コンパイル単位の中に必ず定義もあるわけだから、 LTO が有効ではない状況では結果的にインライン化しやすい条件がととのっているとは言えるんだけど、 逆に言えば LTO を有効に出来るならどうでもよくなるわけだし。 いずれにしても、そんな微々たる速度が気になるような場合ってそんなにあるか? 速度が問題になってから実測しろよ。 状況によってどうとでもなるんだから、具体的な状況を示さずにどれが速いとか言ったってかみ合うわけないだろ。
541 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 18:44:11.63 ID:0ayd3B3Q.net] >>525 一般的な期待度の話 当然例外はある コンパイル単位が別で 関数を定数パラメーターでコールした場合 なんかが差が大きくなる レジスタ退避やスタックポインタのアラインメント調整、スタック拡張、AVXの準備関数コール もそれなりにオーバーヘッドとなる 同じコンパイル単位であれば 今のコンパイラではそれほど差は出ないが 組み込みのチープなコンパイラもまだまだ使われている
542 名前: mailto:sage [2020/01/22(水) 19:06:41.58 ID:RZgzSQWe.net] >>501 お前さんは LISP のマクロを知らないのか?
543 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 19:17:53.96 ID:2biZgMt+.net]
544 名前:LISPの仕様がC++と何か関係ある? [] [ここ壊れてます]
545 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 20:23:02 ID:OSofFadI.net] 関数とマクロの違いがlispだとわかりやすいから。 わかってないやつをあぶりだすのにはちょうどいい。
546 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 20:38:48 ID:F1N+c+gr.net] マクロアセンブラのマクロは強力
547 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 21:16:42.45 ID:kHABv+Er.net] >>527 で?
548 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 22:55:42 ID:PNeen3jP.net] LISPじゃー LISPの場合はー www
549 名前:デフォルトの名無しさん mailto:sage [2020/01/22(水) 23:00:35 ID:Ab6Q02+v.net] QZが現れると大抵話が脱線するから放置しとこう。
550 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 02:42:18 ID:96Ez/jHv.net] >>518 よくわかんないので、SFINAEなりConceptなりconstexprなりをデバッグに配慮して設計していたら どう問題を改善できていたと思うのか、教えて。
551 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 05:39:34 ID:ZM0XhcNb.net] (CMakeスレがないっぽいので) target_link_libraries(a.exe PRIVATE ${MPI_CXX_LIBRARIES}) ↑${MPI_CXX_LIBRARIES}が定義されていなくても合法で、その場合何ともリンクしないということを期待してもOK? それとも if(MPI_FOUND) target_link_libraries(...) endif() とすべき? 公式を見てもよく分からない
552 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 07:08:06 ID:Y+bt1zIi.net] >>535 こちらでどうぞ https://mevius.5ch.net/test/read.cgi/tech/1573214616/
553 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 09:24:40 ID:cHzm9I9L.net] >>534 デバッグに配慮してたらそんな糞機能入れないだろうね。
554 名前:デフォルトの名無しさん [2020/01/23(Thu) 10:15:54 ID:77XEoAHk.net] 今日もgotoを使ってしまった・・・
555 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 10:22:15.42 ID:KV664nBl.net] >>534 まず現在の問題の構造を考えて欲しい c++はtemplateを使ってメタプログラミングを行うのはご存知の通り でtemplateはチューリング完全だ それだけの複雑さを持っている それに対して一般人がやるデバッグはコンパイルが通って期待通り動くかエラーメッセージを見るかぐらいだろ? これは原始的なprintfデバッグを行っているのと同じレベル なのでまずストレートに考えると メタプログラミングの結果が取得できること コンパイラにデバッガ接続可能にしてメタプログラミングの実行がトレースできること が必要 これがベストなのかはさておき、メタでないプログラミングでは当たり前なんだから SFINAEをどうするかみたいな話の前にまずこういうところを整備すべきだった ハードウェア依存じゃないのだから標準モデルを定めるのは可能だ
556 名前:デフォルトの名無しさん [2020/01/23(Thu) 10:45:58 ID:77XEoAHk.net] gotoを受け入れるとクリーンでわかりやすい実装が開ける。 ・・・かもしれない。
557 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 10:47:36 ID:96Ez/jHv.net] >>539 > メタプログラミングの結果が取得できること > コンパイラにデバッガ接続可能にしてメタプログラミングの実行がトレースできること > が必要 あったらいいなとは思うけど、必要(=可能になるまで機能を使わせるべきではない)とは思わないなぁ。 実行時プログラムについて言語規格側でデバッグのための特別な「標準モデル」が定められたりいてないけど、 現状でわりと使えるデバッガができてるし、コンパイラはあるけどデバッガは無いという環境や時代はあったし。 メタプログラミングだからといって機能追加に先立って特別な定めが要るという理屈はよくわからない。
558 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:24:46 ID:Y+bt1zIi.net] >>540 470, 472も言っているが gotoを使わないこと自体が目的化してはいけない そういうアホがbreakは平気で使ったりする
559 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:27:54 ID:y5HKK+ir.net] constexpr関数内でgoto使えないのだから、gotoを避けることを目的とせざるを得ない場面はある。
560 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:28:08 ID:77XEoAHk.net] breakとgotoを同一視するのも問題なのでは。
561 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:28:57 ID:Y+bt1zIi.net] >>544 同一視ってGOTO有害説の中では完全に同じだよ
562 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:31:15 ID:y5HKK+ir.net] goto有害説ではbreakとgotoは違うもの扱いしているよ breakで出来ないことがgotoで出来ること自体を問題視しているのだから
563 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:31:46 ID:77XEoAHk.net] 誰かそんな説を唱えたのでしょうか。
564 名前:デフォルトの名無しさん [2020/01/23(Thu) 11:32:55 ID:77XEoAHk.net] 責任者出て来ーーい!!!
565 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:33:01 ID:Y+bt1zIi.net] >>546 ほう、どう違う扱いをしているんだ?
566 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 11:34:43 ID:y5HKK+ir.net] gotoは使わないけどbreakは使うってのがgoto有害説じゃないの? 完全に別の扱いしているってことだろ
567 名前:デフォルトの名無しさん [2020/01/23(木) 11:35:44.43 ID:77XEoAHk.net] ぐ、ぐ、ぐぅの音も出ない。
568 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 11:42:15.74 ID:Y+bt1zIi.net] >>550 全然違う まだ答えは書いてやらんぞ
569 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 12:29:41 ID:nmx8CMX3.net] >>546 も >>539 も同じタイプの馬鹿 選択の幅は広い方がいい 機能の存在を否定するのではなく、単にお前が使わなければいいだけ
570 名前:デフォルトの名無しさん [2020/01/23(Thu) 13:56:33 ID:VWfJLmDE.net] >>533 +1 ほんそれ
571 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/23(Thu) 14:47:05 ID:QRqIx1i6.net] break でも goto でもそれを使わなかったときにもっと複雑になるのなら使っていいよ。 クソみてぇなフラグを立ててループから抜けるよりは break の方がマシだろ? 使わなくても十分に良いなら使わない方がいいに決まってるけど、要るときに使わないのは馬鹿げた話。 現実にはクソな道具が役に立つクソな状況があるんだよ。
572 名前:デフォルトの名無しさん [2020/01/23(Thu) 15:47:36 ID:tCbubFOj.net] do{...}while(0); とかにしたくないとき while(1){ ...; ...; break; } もたまに意図的に使う
573 名前:デフォルトの名無しさん [2020/01/23(Thu) 16:22:12 ID:77XEoAHk.net] なにこれ悪行自慢。
574 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 16:34:07 ID:Y+bt1zIi.net] >>556 breakしなかった場合の動作が違うじゃねえかよ
575 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 16:47:49 ID:nmx8CMX3.net] >>556 switch(1){ default: }
576 名前:デフォルトの名無しさん [2020/01/23(Thu) 16:49:27 ID:77XEoAHk.net] 通報しました。
577 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:36:57 ID:y5HKK+ir.net] forやwhileもgotoのシンタックスシュガーだから使うなみたいな
578 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:43:18 ID:y5HKK+ir.net] gotoって自由すぎて対応するlabelの場所によって意味が変わるから、自由に飛びたいとき以外に使うと分かりづらくなる。 breakやcontinueなら一連の処理の一部を飛ばすって意図がそれだけでわかるのだから、do{}while(0)だとgoto使うのと何を分かりやすくするかでトレードオフになる
579 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 17:47:15.54 ID:Y+bt1zIi.net] do{} から以後が、それまでの話と繋がってねえぞ それから break と continue のGOTO有害説における違いもわかってねえな
580 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:51:51 ID:y5HKK+ir.net] do while(0)+breakを使う->loopだと誤解する可能性がある gotoを使う->labelの飛び先見ないと意図がわからない ってどちらの分かりづらさを大きな問題とするかで、どちらが良いかの好みが別れる これがトレードオフ
581 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 17:53:42 ID:y5HKK+ir.net] まあdo while(0)と組み合わせるならcontinueの方が良い気もする やっぱりretryしようと思ったときのために
582 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 18:00:56 ID:AdSJ3UeH.net] >>562 C++自体自由過ぎるから使わない方が良いぞ
583 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 18:04:36 ID:y5HKK+ir.net] 自由だから使い所はその自由度が必要なときってだけなのだが。 forのかわりにgotoでループさせる奴は正気じゃない
584 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 18:12:02.33 ID:AdSJ3UeH.net] 関数もどこに飛ぶかわからないから 使いどころは必要な時だけだな ポインタも同じ
585 名前:デフォルトの名無しさん [2020/01/23(木) 18:52:22.63 ID:77XEoAHk.net] 関数はgotoと同じ。
586 名前:デフォルトの名無しさん [2020/01/23(木) 19:01:50.07 ID:77XEoAHk.net] >>566 やはりこれからはRustですか。
587 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:09:24.45 ID:nmx8CMX3.net] >>570 そうだよ さようなら
588 名前:デフォルトの名無しさん [2020/01/23(木) 19:19:26.28 ID:5iKgMbK4.net] >>588 後者のbreakはifが付いてないので絶対breakするというなら一緒だが しかし途中のどこかでcontinueが掛かれていると動作が変わる
589 名前:デフォルトの名無しさん [2020/01/23(木) 19:21:21.59 ID:5iKgMbK4.net] なぜか変なところへ安価が・・・ >>558 後者のbreakはifが付いてないので絶対breakするというなら一緒だが しかし途中のどこかでcontinueが掛かれていると動作が変わる
590 名前:デフォルトの名無しさん [2020/01/23(木) 19:22:06.67 ID:77XEoAHk.net] goto駆使してcoroutineというパターンは。
591 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:22:49.44 ID:nmx8CMX3.net] ループする気がないのにcontinueが入る可能性があるのか? やっぱループ構文をループ以外の目的で使う奴はアホだわ
592 名前:デフォルトの名無しさん [2020/01/23(木) 19:23:30.77 ID:5iKgMbK4.net] >>564 どうでもいいが do{}while(0);+continue;でもっと難読化するかも知れない
593 名前:デフォルトの名無しさん [2020/01/23(木) 19:27:33.29 ID:77XEoAHk.net] >>552 が答えを書かないのだが。 もしかして答えなんて持っていないのでは。
594 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 19:32:56.95 ID:rYLpH2kU.net] function(); 何をするかわからないから関数は使うべきじゃない pointer; 何を指し示すかわからないからポインタは使うべきじゃない
595 名前:デフォルトの名無しさん [2020/01/23(木) 19:36:22.66 ID:5iKgMbK4.net] >>565 に聴いてくれ
596 名前:デフォルトの名無しさん mailto:sage [2020/01/23(Thu) 20:36:00 ID:Y+bt1zIi.net] >>577 あとで、しまったと思ったんだが もう答えを書いてしまっていた 今んとこ、まだ伏せておきたいので どこなのかは書かないから 自分で探せ
597 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:32:03.65 ID:bkVRGJlU.net] >>553 とかいいつつ古い仕様の範囲で実用してる人をバカにして マウント取って憂さ晴らしするんですねわかります
598 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:33:01.52 ID:glYn/cGw.net] つまりCPUはgotoの嵐だからクソと
599 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 22:54:05.78 ID:nX/KPrtD.net] >>564 どうせdo-whileなんて本来のループとして使うことはまずないんだから、あとは ローカルルールとしてwhile(0)以外禁止とかにすれば十分かと。
600 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:13:19.41 ID:HgduJel4.net] gotoは高級の中にいきなり低級なことぶちこむから違和感あるんだろ 場当たり的で美しくないね
601 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:28:17.91 ID:2vcw1hg/.net] まえにSQLパーサを書いたときはgotoがすごく便利だった。 文法をそのままソースに反映できる感じ。 goto嫌いな人たちはどうやって書くのか見てみたい。
602 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:35:42.82 ID:M8BvdbFC.net] そういえば、まだ構造化されてない昔のBASICは、構造化された今のBASICより人気があったのではないかと思うけど、行番号と goto 文の組み合わせはラベル名を考えなくて済むので便利であった。 そして、BASIC言語は分かり易くて易しい言語と言われていたのだから、goto文自体はそんなに理解や扱いが難しいものではない。 ただし、フローチャートを書いてから組まないと分かりにくいことがあったかも知れない。 逆に、今フローチャートを書く必要がある場面は少なくなったのはgoto分を使わずに書けるようになったからかも知れない。
603 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:41:23.96 ID:cHzm9I9L.net] ここまで無理やりな擁護してまで使うほどの機能じゃねーだろバカか。
604 名前:デフォルトの名無しさん mailto:sage [2020/01/23(木) 23:43:47.47 ID:LWLbtpQ/.net] gotoとかマクロとか話題に加齢臭漂ってるぞ もうちょっと食いつく話題選べよ
605 名前:デフォルトの名無しさん [2020/01/24(金) 00:03:07.60 ID:M35o3kEk.net] >>585 普通にテーブル駆動では。
606 名前:デフォルトの名無しさん [2020/01/24(金) 01:08:48.99 ID:nZbbrzXe.net] ma
607 名前:in関数が呼び出される前にグローバル変数が初期化されますが、 これの初期化順を変更することは可能なのでしょうか? [] [ここ壊れてます]
608 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:09:21.02 ID:/4mdgZLq.net] A、B、Cと言う順序で実行されるべき処理が A、B、Cと言う順序で実行されれば良いのであって それが上からA、B、Cの順で書いてあろうが B, A, Cと書いてあるのをgotoでA、B、Cの実行順にしようが スレッド1、2、3が同期をとりあってそれぞれA、B、Cの順で実行しようが 相違なるコールバック1、2、3がこの順で呼ばれるように仕組まれた上でそれぞれA、B、Cを実行しようが B、Cの実行がラムダ式で書かれていてその定義がAより上にあってAの実行後に呼び出されようが ぜんぜん問題ではない
609 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:10:48.48 ID:/4mdgZLq.net] 一方gotoなど使わなくとももっと酷い糞はいくらでも作れるのだから gotoが駄目だと言い張る奴は精神が弱って いるな!
610 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:12:30.02 ID:f1L6KzBl.net] いや普通にA,B,Cの順で書けよ。
611 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 01:15:32.35 ID:eYFKJ4zI.net] >>590 同じ翻訳単位にあれば上から 異なる翻訳単位のグローバル変数の初期化順序は未定義
612 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 06:17:01 ID:z1Jr3gge.net] >>590 やり方としては >>594 のとおり。 「同じ翻訳単位」とは要するに1個のソースファイルってことね。 でも一般的には「グローバル変数の初期化順序に依存すべきではない」 はずだけど、初期化順序を制御したい事情に興味があるわ。 もっと一般的には「グローバル変数を使うべきでない」だけど、それは別のお話。
613 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 06:24:04 ID:3pA3r7pN.net] 初期化順序を制御したい事情なんていくらでもあるだろ そういう事情があるにも関わらず 明示的な初期化処理で初期化しないのが問題なのであって
614 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 07:10:40 ID:O5UIpEDM.net] >>585 SQLってBNFで書けるから普通にswitchで書けると思うけど
615 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 07:19:43 ID:3pA3r7pN.net] 書ける書けないと 適する適さない は別
616 名前:585 mailto:sage [2020/01/24(金) 07:49:27 ID:1D9sTu/S.net] >>589 ツール使ってテーブルを生成させるならありだと思う。 そうでないなら、文法拡張のためにテーブルに手を入れるとか考えるだけでも嫌にならない? あと、メンテナ交代のためにつくるドキュメントとかも。 >>598 それな
617 名前:デフォルトの名無しさん [2020/01/24(金) 10:04:25 ID:M35o3kEk.net] コンパイル時生成では普通。
618 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:24:16 ID:O5UIpEDM.net] >>598 いや、わざわざgotoなんて使う必要ないって話な C言語の時はエラー処理でgoto使う機会もあったけどC++なら例外で対処できるし パーサーとか書いたことないとわからんかも知れんが
619 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:25:13 ID:O5UIpEDM.net] >>599 ツール使うならコードまで生成させるだろ
620 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:33:56 ID:pOzkcTtY.net] breakやらgotoやら、普通に関数作ってreturnすらば済む話なのになんでここまで盛り上がるかねぇ
621 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:38:12 ID:nymKNYgW.net] >>601 わざわざgotoってのが意味不明 使用リソースや所要時間は非常に少ない ただのジャンプ命令だから 少なくとも わざわざ関数に分けるとか わざわざ変数を使うとか に比べればはるかに軽い breakに比べれば 記述量が多いので 「わざわざ」という表現を使うことはあるだろう
622 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:42:44 ID:pOzkcTtY.net] >>604 そんなエラーをgoto文で書いてる様なc++ソース読むのやだわw
623 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:47:41 ID:nymKNYgW.net] 無能自慢か
624 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 12:48:34 ID:j8mERSyw.net] throwと同様の構文でgotoと同じコード生成する機能があれば良いのに
625 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 13:03:30 ID:O5UIpEDM.net] >>604 タイプ量が少ないソースがいいソースとか思ってそうw いつの時代の人なんだよ
626 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 13:43:32.45 ID:Jh2W8wsF.net] わざわざ例外使わんでもgotoで十分なときも普通にある gotoだから絶対ダメとか思ってそう 頭かたすぎ
627 名前:デフォルトの名無しさん [2020/01/24(金) 13:59:14 ID:M35o3kEk.net] 法律で禁止するべきだな。
628 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 14:45:38 ID:xfkHfIRp.net] >>603 ループの途中での return か?
629 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:31:56.03 ID:NCsnJFfw.net] >>609 逆にわざわざgoto使う例外って何よ? そんな個別情報も渡せない上にわざわざラベル名前まで考えて、goto文使う方がめんどくさいだろ あーあれか、throwよりgotoの方が打つ文字少ないから楽とかかw
630 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:34:37.54 ID:xfkHfIRp.net] throw って、入れる catch を RTTI を使って探すという 結構なコストのかかることをするが goto や longjmp にはそれがない
631 名前:デフォルトの名無しさん [2020/01/24(金) 16:36:03.61 ID:M35o3kEk.net] 情報処理の教育を受けていると、大抵のものはステートマシンに見えるので、goto使いたくなるのかもしれない。 教育の有無で思考過程が違うので、使い道が理解できない人は使うことを禁じたほうが良い。 セキュリティにもかかわるので公安委員会直轄でgoto免許試験場を創設するべき。
632 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 16:58:54 ID:Jh2W8wsF.net] >>612 情弱かよw 「c++ goto 例外」でググれば検索結果の最初のほうだけでもこんなに出てくる tomeapp.jp/archives/1029 www.thinkridge.com/modules/tinyd1/content/index.php?id=7 https://marycore.jp/coding/idioms-and-alternatives-for-goto-statement/ https://qiita.com/IL_k/items/2549cf2b3058a8e6c954 www.nurs.or.jp/~sug/soft/super/goto.htm
633 名前:デフォルトの名無しさん [2020/01/24(金) 17:00:51 ID:M35o3kEk.net] >>615 一番上のリンクだけ見ましたが、これはミスリードじゃないだろか。
634 名前:デフォルトの名無しさん [2020/01/24(金) 17:06:28 ID:M35o3kEk.net] >>616 二番目のリンクも見ましたが、これはgoto代わりに例外を使うべきではないというお話ですよね。 例外の代わりにgoto使えという話ではないと思うんですよ。 「あれ?ifの代わりに例外使えるんじゃね?」とはならない。 同様に「あれ?gotoの代わりに例外使えるんじゃね?」ともなりません。
635 名前:デフォルトの名無しさん [2020/01/24(金) 17:08:06 ID:M35o3kEk.net] どれもしょぼいな。 本物のgoto使いはラベルを100個使うんですよ。
636 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:08:25 ID:xfkHfIRp.net] C++歴20年でこれか。。。例外が悲しいほどわかってない
637 名前:デフォルトの名無しさん [2020/01/24(金) 17:08:51 ID:M35o3kEk.net] あーお前らなっちゃいねえ。 gotoの使い方わかっちゃいねえ。
638 名前:デフォルトの名無しさん [2020/01/24(金) 17:10:14 ID:M35o3kEk.net] gotoも例外も恐れなく使えと私は言いたい。 ただし、資格は必要でしょう。
639 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:11:56 ID:KQhZ94n9.net] 以下は 良い goto 文の使い方だと聞いたことがある。 ・二重以上のブロックを抜けるために goto 文を使うこと。 ・エラー処理。 <--- こう言われていたのは throw がなかった時代からだが、 今でも throw, catch を使うより効率が良いので使っても良い と思われる。
640 名前:デフォルトの名無しさん [2020/01/24(金) 17:14:59 ID:M35o3kEk.net] >>622 はいはい、そういう人には、状態遷移図を書く癖をつけることをお勧めしていますよ。
641 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:31:23.24 ID:pLepfJlB.net] ラムダ万能説 >>615 の1つ目の2など途中で打ち切りたいときはラムダさえあればgotoも例外もいらないことがわかる if( [?]{ ... if(//エラー発生時){ return false; } ... return true; }() && ... && [?]{ ... if(//エラー発生時){ return false; } ... return true; }() ){ //正常終了 } else{ //異常終了 }
642 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:33:42.84 ID:pLepfJlB.net] [?]は[&]だ なんか間違えた
643 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:42:43 ID:NCsnJFfw.net] >>613 だから例外処理にまで速度にこだわる意味は何だよ if文と勘違いしてんじゃね そんな特殊な状況を一般化するんじゃねぇよ
644 名前:デフォルトの名無しさん [2020/01/24(金) 17:54:06 ID:M35o3kEk.net] ifより例外のほうが速いよ。
645 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 17:58:29 ID:xfkHfIRp.net] if goto if throw となるわけでifと例外を比べるのはおかしい >>626 「こだわる」とか「特殊」とかバイアス満載で話にならんな
646 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:07:28.38 ID:xfkHfIRp.net] そもそも有名どころのコンパイラがだいたい例外禁止オプション持ってるのがどういう意味か考えてみろよ
647 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:18:37.93 ID:TKM+8NJM.net] goto使わないで2重ループを抜けるのってどうするの?
648 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:20:42.85 ID:j8mERSyw.net] >>628 throwが速いのは呼び出した関数がthrowする場合と戻り値で成否を返す場合の呼び出し元コード側の話だろ 余分な条件分岐命令が出力されない 代わりに例外発生時にスタック解析して例外処理用コード探すから物凄い時間がかかるが
649 名前:デフォルトの名無しさん [2020/01/24(金) 18:24:28.47 ID:D9pKpEah.net] goto 賛成派の意見 「例外使え」←「ネストが増えるから嫌」 「break使え」←「深い所から出るのに無駄なフラグ増やしたくない」
650 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:31:46 ID:xfkHfIRp.net] ちげーよ 「例外使え」←言われなくても使ってるよ、gotoを禁止する理由になってねえ
651 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:33:01 ID:3pA3r7pN.net] goto禁止派はgotoの使い方を知らないだけ 知ってたら禁止しない
652 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:34:35 ID:Ua1W7Zv2.net] gotoと例外のどちらかを禁止するなら例外を禁止したい
653 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:37:16 ID:3pA3r7pN.net] Windowsの64bit環境って例外めちゃくちゃ遅いんだよね 例外が発生しない時はオーバーヘッド無いんだけど 32bitだと関数コールの度にオーバーヘッドが発生する だから例外処理OFF機能がある
654 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 18:37:19 ID:xfkHfIRp.net] 確かに現状のC++例外はちょっと好かんところがある いっそnested_exceptionとdynamic_castだけに統一したらどうだと思ったりする
655 名前:デフォルトの名無しさん [2020/01/24(金) 18:51:37 ID:M35o3kEk.net] おまえら全員間違ってる。 gotoは免許制にするべきで、一律に禁止するものでも許可するものでもない。 試験に合格した者だけ使うべき。
656 名前:デフォルトの名無しさん [2020/01/24(金) 18:53:22 ID:M35o3kEk.net] switchより例外のほうが速いよ。
657 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 19:29:40 ID:3pA3r7pN.net] 例外はめちゃくちゃ遅い
658 名前:デフォルトの名無しさん [2020/01/24(金) 19:31:01 ID:M35o3kEk.net] それは機密だと言っただろうが。
659 名前:デフォルトの名無しさん [2020/01/24(金) 20:19:58.69 ID:M35o3kEk.net] 「もういいよ。オレがインデックス張ってやるから、まあ見てから言えよ。な?」
660 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 20:28:57 ID:f1L6KzBl.net] まだしょうもないこと言い続けてんのかよ。 こういう糞議論を排除するってだけでもgotoを禁止する価値はあるな。
661 名前:デフォルトの名無しさん [2020/01/24(金) 20:31:46 ID:M35o3kEk.net] goto使いたいものが100万人いれば、更新費用1万円として100億になる。 gotoで事故を起こした場合、行政処分がある。 取り締まるためにgoto警察も必要。
662 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 20:32:37 ID:xfkHfIRp.net] gotoじゃなくおまえらを排除すれば 問題の本質がわからんやつによる不毛な喧嘩≠議論はなくなる 化学調味料の永久ループと寸分違わねえ
663 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 20:33:06 ID:Ua1W7Zv2.net] 例外免許とテンプレート免許と多重継承免許も必要
664 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 20:51:07 ID:K3PUU+GG.net] なんでプログラマってこんな糞みたいな話題で延々と盛り上がるんだろうね って、実は知ってるくせにってか
665 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 21:08:30 ID:O5UIpEDM.net] >>614 ステートマシンでgotoって次のステートに直接飛ぶとか言ってるのか?
666 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 21:10:07 ID:xfkHfIRp.net] FSMとデータパスか、懐かしい。。。
667 名前:デフォルトの名無しさん mailto:sage [2020/01/24(金) 22:22:30.15 ID:SKKziN9N.net] ダイクストラの時代にとっくに決着した話をまだダラダラやってんのか
668 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 00:30:42.18 ID:sCkCqRFa.net] 煽り9割マジ1割 ここはそうゆうインターネットです
669 名前:デフォルトの名無しさん [2020/01/25(土) 10:54:40 ID:cxLY0DeL.net] 大型goto免許必須なので。
670 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:01:20.82 ID:Fgzm1LAC.net] 大型二種持ってるから大丈夫
671 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:02:23.88 ID:Fgzm1LAC.net] クラスもポインタも免許制にしよう
672 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:04:00.88 ID:HbHTz3pb.net] 絶対禁止と思っているやつは全員不合格 つーより事前審査で門前払い
673 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:08:19.96 ID:Fgzm1LAC.net] 絶対禁止と本気で思ってるヤツはいないだろ gotoが無ければ2重ループも抜けられない
674 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:11:48.46 ID:gDStPvND.net] gotoおじさん達いい加減にこの話終わりにしてくれない? 久しぶりに自分が参加できる話題だからってはりきりすぎでしょ
675 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:1
] [ここ壊れてます]
676 名前:2:11.62 ID:xcQv9a+F.net mailto: Open Jane がDelphiで書かれたように 5ちゃんねるブラウザがC++で書かれたら 嬉しいんだけどね [] [ここ壊れてます]
677 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:28:41 ID:bvJDNhpJ.net] >>657 今は他に話題ないし 話題がないと数日レス止まるようなスレじゃけえ
678 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 12:30:46 ID:Fgzm1LAC.net] じゃ次は生ポについて
679 名前:デフォルトの名無しさん [2020/01/25(土) 12:38:02 ID:cxLY0DeL.net] 哲学的問題だから、森村進の意見も聞くべき。
680 名前:デフォルトの名無しさん [2020/01/25(土) 13:18:54 ID:oEqdrxlM.net] >>659 話題 https://www4.nhk.or.jp/72hours/x/2020-01-24/21/17444/1199286/
681 名前:デフォルトの名無しさん [2020/01/25(土) 13:54:31 ID:cxLY0DeL.net] 宣伝乙。 NHKが来たぞーにげろー。
682 名前:デフォルトの名無しさん [2020/01/25(土) 13:55:49 ID:FepESkjd.net] 江添亮の本でstd::cout<<""にs付けろって書いてたんだけどsつけたらエラーになる
683 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 13:59:45 ID:HbHTz3pb.net] >>657 久しぶりに笑う健康法ができてありがたかったんだよ おーい芸人さんたち、アンコール! アンコール!
684 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:01:45 ID:HjVTkheD.net] >>664 #include <string> using namespace std::literals::string_literals;
685 名前:デフォルトの名無しさん [2020/01/25(土) 14:25:20.83 ID:cxLY0DeL.net] とまあこのように、江添先生の本は、すべて理解してる人にしか理解できません。
686 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:32:55.37 ID:HbHTz3pb.net] 幼稚園児が大学の図書館へ行っても読める本ないのと同じだな 無理しないで「ぐりとぐら」くらいから始めとけ
687 名前:デフォルトの名無しさん [2020/01/25(土) 14:53:05.04 ID:cxLY0DeL.net] はい、江添釣れたー。
688 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 14:56:16.54 ID:HbHTz3pb.net] 残念、俺は江添じゃない 興味のツボは奴と似てるとこあるけどね
689 名前:デフォルトの名無しさん [2020/01/25(土) 15:45:58 ID:136JVXqR.net] >>666 そんなこと書いてなかった
690 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 15:52:56.31 ID:NV/40SqZ.net] 普通の文字列リテラルが char 型の配列であるというのは (初心者には) 分かり難いので、 いっそ一貫して std::string 型で扱うというのは悪くない方針だと思う。 だけどユーザー定義リテラルという枠組みもそれはそれでだいぶんアレな仕様なんで、どちらにしてもクソだよな。
691 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:06:56 ID:bbXnDJeu.net] こんばんは、後藤です。 ところで ""s だけでは片手落ちな気がする ちゃんと u""s みたいに文字コード指定しなかったら string_literalsを使う意味ないような気がするんだけど わしだけか
692 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:09:53 ID:lY+ErK7r.net] >>656 関数で切り出してreturnしろカスが。
693 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:11:03 ID:gDStPvND.net] uがなかった時代でもなんとかなってたんだから意味なくはないだろ
694 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:30:12.05 ID:HjVTkheD.net] 江添本は初心者向けと謳っていながらこのくらいわからん奴は帰れみたいな意思を感じる
695 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:50:56.75 ID:lY+ErK7r.net] 初心者に内容を理解してほしいんじゃなくて俺すげーってことだけ理解しろってスタンスだからな。 むしろ理解されると大したことやってないのがバレると思ってるくらいだろ。
696 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 16:53:23.32 ID:XvrYCXmQ.net] C++はしたことがないが数学博士号のやつと高校卒業を一緒くたにするのが問題だろう それぞれの学力で開始すべき章を設定するべきだ できないとしたら著者の無能なので落胆することはない
697 名前:デフォルトの名無しさん [2020/01/25(土) 16:58:57.12 ID:cxLY0DeL.net] 初心者がC++に入り込まないよう防御壁として江添先生が存在するのではないか。
698 名前:デフォルトの名無しさん [2020/01/25(土) 17:03:37.43 ID:cxLY0DeL.net] C++の道を行きたいなら、俺を倒
699 名前:してから行け。 ってことでは。 [] [ここ壊れてます]
700 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 17:15:21.67 ID:lY+ErK7r.net] 張り合ったら明らかにプログラム書けなくなるだろ。。誤誘導すぎるわ。
701 名前:デフォルトの名無しさん [2020/01/25(土) 17:27:59.47 ID:cxLY0DeL.net] C++の前に立ちはだかる屈強な門番。 俺を倒せるものでなければ入門を認めぬ。
702 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 18:19:41.41 ID:NV/40SqZ.net] グダグダな C++ をグダグダじゃなく説明するのは無理だろ。 どの本を見たって少なからずグダグダか物足りないかどっちか。
703 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:23:50.63 ID:qDxhJtbw.net] まぁ、実際の現場だと、c++なんてちょっと便利なC言語としてしか使われてないよ 未だにcharポインタやmalloc乱立してるし参照型すら使われてない。 クラスなんて関数まとめるnamespace代わりだし
704 名前:はちみつ餃子 mailto:sage [2020/01/25(土) 18:25:32.23 ID:NV/40SqZ.net] ひと昔前にstaticおじさんの話がバズったことあるけど、 たぶん現実にはけっこういるんだろうな。
705 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:26:39.08 ID:mY899MyV.net] >>684 そんな現場もあるんだなw
706 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:32:00.68 ID:4TCxFoUN.net] ちゅうか、C++ 使うなら charポインタは必須だ。 使いたくないなら 別の言語を使ったほうがいい。
707 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:43:08.64 ID:HjVTkheD.net] Cのライブラリを使わない限り文字情報はすべてstringで済む モダンC++の仕様はそういう範囲内での使用も許容している
708 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:45:55.89 ID:mY899MyV.net] c++ではchar*は文字列とは関係ない場面でよく使う
709 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:51:29.47 ID:t8q8NVJB.net] >>684 >クラスなんて関数まとめるnamespace代わりだし さすがにそれはダメだと思うが・・ そういう現場確かにあるが >>688 とか言いながらstringは途中からnull終端を保証したりして、 結局Cの資産を無視できなかったという
710 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 18:53:42.93 ID:mY899MyV.net] もともとc_strはnull終端されてた それに合法的にnull文字を含むことが出来る時点でnull終端ではない
711 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 20:51:03 ID:r+ZvoXtB.net] >>684 いくらなんでもレベル低すぎるぞ
712 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 20:55:09 ID:0oKBD7Vk.net] >>684 私のことですね… new をグローバルオーバーロードしたら、その中では malloc() するしかないですからね…
713 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:03:28 ID:gDStPvND.net] >>693 > >>684 > 私のことですね… > new をグローバルオーバーロードしたら、その中では malloc() するしかないですからね… するしかない? mallocはどうやって実装されてると思う?
714 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:16:51 ID:HbHTz3pb.net] >>693 おまえさ、何のために new をグローバルオーバーロードしてるの? malloc でいいんなら、そんな必要ねえだろ おまえアホか
715 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 21:25:16 ID:gDStPvND.net] まぁデバッグの手法としてなくはない ただその手のものは既存のものが腐るほどあるからそれ使った方がいい
716 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 22:50:36 ID:0oKBD7Vk.net] >>694 >するしかない? ええ、するしかないと思いますよ >>695 >何のために new をグローバルオーバーロードしてるの? 無論 delete と対になっているかどうかをチェックするためですよ、こういうのは自分では出来ていると思っていても時々お漏らししてしまいますからね まあ、C++11 以降は手抜きして make_shared することを覚えてしまってずいぶんと時間が経ちましたが、それでも生ポを使うときは new/delete をオーバーロードしますね https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 line.143〜150
717 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 22:53:24 ID:0oKBD7Vk.net] >>696 昔の borland c++ にはまさしくそのための、なんていうんだったんでしたっけ、そういうコンパイルスイッチがあって便利に使っていましたが、 今評価版を入手すると、それは clang ベースに変更されて、その機能がなくなってしまったんですよね…
718 名前:◆QZaw55cn4c mailto:sage [2020/01/25(土) 23:01:38 ID:0oKBD7Vk.net] >>698 思い出した、bcc32 CodeGuard でしたっけ
719 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:17:
] [ここ壊れてます]
720 名前:56 ID:gDStPvND.net mailto: >>697 それなりにプログラマ経験あるんだと思ってたけどmallocの中身知らないとはね 別にメモリ確保のsyscall直接使ってもいいんだぞ むしろnewをリプレースしたい場合ってページ単位で処理したいときとかでしょ ちなみにこれはデバッグで使うのも有用だぞ unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易 まぁそんなの自前でやる前にValgrindでも使えって話だけど [] [ここ壊れてます]
721 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/25(土) 23:24:58 ID:NV/40SqZ.net] >>697 アプリケーションの層ではアロケータを書く機会はまずないから やったことないのは別にいいけど、 さすがに new の本質はメモリの割り当てだってのはわかってて欲しいわ。
722 名前: mailto:sage [2020/01/25(土) 23:28:27.92 ID:0oKBD7Vk.net] >>700 >それなりにプログラマ経験あるんだと思ってたけどmallocの中身知らないとはね 専ら win32api でやっているので、::HeapAlloc(::GetProcessHeap(), ...) とか ::HeapFree(::GetProcessHeap(), ...) だとは考えていましたし、数年前はそう置き換えていたこともありました。 >unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易 これは初耳です。よろしければ、もう少しキーワードだけでいいので羅列していただけませんか
723 名前: mailto:sage [2020/01/25(土) 23:33:20.09 ID:0oKBD7Vk.net] >>701 それはおそらく大丈夫だと思います
724 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:36:38.54 ID:nqs2x9Ls.net] 関数で切り出すのは入出力がはっきりするというメリットはあるが ループの内と外の依存性が高い場合に内を無理矢理関数分けすると シグネチャに入力引数と出力引数(参照渡し)がぞろぞろ並ぶことになって それはそれでお勧めしない (関数の意味も不明確になりがちやし…
725 名前:デフォルトの名無しさん mailto:sage [2020/01/25(土) 23:52:12 ID:gDStPvND.net] >>702 そうだよwindowsならそのあたりだよ あとVirtualAllocね > >unmapしてるところにアクセスしたらその時点で例外で止まるから原因特定が容易 > これは初耳です。よろしければ、もう少しキーワードだけでいいので羅列していただけませんか new/deleteのたびにページ単位で確保・解放するんだよ それこそVirtualAllocで だから重いよ そうするとdangling pointerでヒープ壊される問題があった場合、 壊しにいったら即セグフォルで止まるからデバッガつなげれば犯人特定できる
726 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 00:43:59.41 ID:F5s0MU2W.net] >>686 そんな職場は大変だぞ 構造体だからって、triviallycopyableを満たさないクラスをわざわざvoidポインタに格納して、memcpyしたり クラスをわざわざmallocしてコンストラクタ、デストラクタ飛ばしたり const属性をキャストでわざわざ消して値変えられたり
727 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 01:31:21 ID:6ZE6/BGT.net] ベターCなどとほざく連中がいかに馬鹿で愚かで有害かがよくわかる
728 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 01:32:21 ID:zFvDGbzt.net] まあそんなやつは C もまともに使えてなかったりするんだけどな。
729 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 01:44:39.85 ID:hLglXOws.net] 中途半端にc++を持ち込んで現場を荒らすやつもいるからね >>706 の状況はそういうところで見たことある 別にc++が書けるのがえらいわけじゃない 質の良いプロダクトをきっちり仕上げられる奴がえらい まわりがc++わからないメンバーならcで書くか、 c++が必要というなら十分にチームでトレーニング行ってからだ
730 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 01:48:04.74 ID:zFvDGbzt.net] C から段階的に学んでいける (業務を止めずに) って D&E には書いてあるけど、 今の C++ じゃもう無理だと思うわ。
731 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 01:48:23.93 ID:zFvDGbzt.net] C++ は C++ としてそこそこの訓練はいるよな。
732 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 02:05:13.00 ID:Y1EGWiT/.net] はちみつ餃子がでてくる
733 名前:と、どうもこんな時間に腹が減ってきていかん [] [ここ壊れてます]
734 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 02:10:39.45 ID:zFvDGbzt.net] 食えばいいじゃん。
735 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 05:01:35 ID:3a27Zr8u.net] >>674 gotoの使い方を知らないと大変だね
736 名前:デフォルトの名無しさん [2020/01/26(日) 07:41:47 ID:Yuet6lAk.net] >>683 禿4を少しは見習っていただきたい。
737 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:01:19.30 ID:aNHbuwn9.net] >>706 それは問題。 でも、STLべったりのC++は Cとの書き方の乖離が激しすぎて、もはやCの冠を被ってほしくない。
738 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:06:55.53 ID:BKKks8j/.net] >>714 関数切り出しできないと大変だね。(特に周りの人たちが。)
739 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:47:19 ID:VrR0aqw1.net] >>716 CはCらしく、C++はC++らしく使えばよろしい CをPascalっぽく使うやつとかすげー迷惑なのと同じ
740 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:53:32 ID:1VU+FMua.net] >>716 えっ? C#
741 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 10:56:24 ID:ZSyO84gV.net] テンプレートメタプログラミングはC++らしいとも思うけど全然別の言語になっている気がしないでもない
742 名前:◆QZaw55cn4c mailto:sage [2020/01/26(日) 11:09:29 ID:rQ+CcOdx.net] >>705 情報ありがとうございます ::VirtualAlloc() 系は書いてあることが難しい上に、ばっちゃの遺言「::HeapAlloc() を使え」もあって敬遠していましたが、ここで教えてもらったのもなにかの縁だからデバッグ用に試行してみようと思います win32api の criticalsection と signal でやっていた(何かがまずくてstarvationに悩まされていました)のも C++11 になって pthread が大幅に規格に取り込まれた以上、 C++11 の上からの mutex・cond 派に切り替えようか、とか、C++11 になってスタイル変更を考え中です
743 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:32:39 ID:loc7kxiY.net] >>701 マウント失敗乙
744 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:33:18 ID:3yHBwxN6.net] >>717 ループを抜ける為に関数を分けるようなアホと一緒に組むと大変だ
745 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 11:41:25 ID:VrR0aqw1.net] 確かに大変だね if breakしてる複合文を関数にするときにreturnとか言い出すやつは longjmpだろうがって
746 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:03:53.99 ID:aNHbuwn9.net] >>720 実際、別言語だと思う。 C++はtemplateや演算子のオーバーライドを使えば、ほぼ別言語をみなせるようなものを上に載せられる設計になっているので。 STLを使いまくるプログラミングの書き方だと、もはやCとは何の関連性もなくなってしまっている。
747 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:09:22.76 ID:BKKks8j/.net] >>723 ループ抜け出すぐらいでそんな苦労するようなコードになってるなら 関数で抜け出すのが当然だろカスが。 いくら脳みそ足らなくてもgoto擁護のために無理筋言ってるってことにそろそろ気づけ。
748 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:12:08.41 ID:bvl7bZIP.net] どんな苦労?
749 名前:デフォルトの名無しさん [2020/01/26(日) 12:13:10.43 ID:Yuet6lAk.net] ネストするなら別のプログラムに切り分けましょう。 シェルから呼び出せばいいのです。
750 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:18:30.55 ID:Scuijf7t.net] >>725 もともとCってマクロで何でもやりたい放題の言語だぞ www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
751 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:39:03.45 ID:aRFw4TjA.net] >>727 「gotoダメ!絶対!教」の戒律を破ることじゃないかな。きっと身を裂かれるほどの苦しみな
752 名前:んだろうw [] [ここ壊れてます]
753 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 12:50:28.18 ID:PjjUDKm0.net] いったん収まったと思ったら また goto の話開始してて草 アスペ特融の拘りと言われても仕方がないな
754 名前:デフォルトの名無しさん [2020/01/26(日) 13:01:54.18 ID:Yuet6lAk.net] goto以外の話題を提供できないお前が悪い。
755 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 14:36:31.44 ID:VrR0aqw1.net] gotoの話で叩きのめされたやつが話題を変えたいのはわかったよ(ニヤニヤ
756 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:07:41 ID:aNHbuwn9.net] >>729 たしかにCもマクロを使えば結構何でも出来る。 だが、マクロを多用すると分かりにくくなるとも言われていたし、使い方によっては、ソースコードが全く別言語のようになってしまうことも知られていた。 それと同様の現象がSTLにおいては起きる事態になってしまっている。
757 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:09:16 ID:jQnb27FW.net] もっとマクロをリッチにしてほしい
758 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:19:16 ID:VrR0aqw1.net] >>734 なってねえよ おまえさんにはSTLがIOCCCに見えるのか 慣れの問題と言いたいがおまえさんは極端すぎ 一種の病気だ
759 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:21:00 ID:aNHbuwn9.net] >>736 STLの作者は、自分では分かり易くしようとしているようでいて実際には逆に分かりにくくしてしまっている。
760 名前:デフォルトの名無しさん [2020/01/26(日) 17:22:57 ID:Yuet6lAk.net] STLは神がかってるけどな。 あの時代によく設計できたな。
761 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:23:15 ID:aRFw4TjA.net] >>735 自分で好きなようにプリプロセッサを実装すればいいんじゃね?
762 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:25:09 ID:aRFw4TjA.net] >>737 その分かりにくいの主語は、世間一般ではなくお前個人なんだろ。
763 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:33:33.23 ID:jQnb27FW.net] >>739 互換性
764 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:42:50.97 ID:VrR0aqw1.net] >>738 だよな Cではmemsetやqsortにvoid*というリスキーなことをせざるを得なかったのを 関数テンプレートで型情報をきちんと面倒見るようにできたし リニアサーチがない等のCライブラリの不備も解消した そこに気付かないやつはプログラマとしての資質を問われる
765 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:50:07.66 ID:loc7kxiY.net] >>738 , >>742 あのな、STLは設計構想から含めると十年から数十年かかってんだよ それだけよく考え抜かれたものが優れてないわけがない これ何回も書いたんだけどな 「最新仕様追ってる俺スゲー」したいだけの奴の希望的観測はもうこりごりだわ
766 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:53:28.80 ID:loc7kxiY.net] 最新仕様とか書いたらSTLが最新?とか言われそうなんで先に言っとくけど マクロ(プリプロセス時メタプログラミング)を貶してテンプレートは持て囃すのはダブスタってことなんで誤解なきよう
767 名前:デフォルトの名無しさん [2020/01/26(日) 17:53:53.15 ID:Yuet6lAk.net] ただ俺としては右辺値参照の発見にノーベル賞を授与するべきだと思うんだよな。 これ人類史上でも大きな発見じゃないかと思うんだよな。
768 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:58:05.42 ID:hLglXOws.net] おれは真逆の感想 仕様が汚すぎる
769 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 17:58:55 ID:hLglXOws.net] 右辺値参照というよりmove全般のことね
770 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:01:03 ID:VrR0aqw1.net] >>743 742だが、おまえさんは俺が何がわかっていないと言いたいんだ? どっかの馬の骨が何回書いたかなんて興味ねえが 当たり前のことをドヤられる意味がわからんぞ
771 名前:デフォルトの名無しさん [2020/01/26(日) 18:05:34 ID:Yuet6lAk.net] STLにノーベル文学賞なんてオサレだと思わないか。
772 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:05:38 ID:VrR0aqw1.net] >>746 同感 そもそも左辺値参照にconstをつけたら右辺値を指せるなんて 珍妙なルールが招いた禍根を何とかする苦肉の策が右辺値参照だかんな 今ふり返って見るとconstなしの左辺値参照でもテンポラリを束縛できて それを禁止したい場合のキーワードがあればよかったんだと思う
773 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 18:23:11 ID:zFvDGbzt.net] >>745 互換性を失わない形で性能
774 名前:にも寄与するのはすごい思い付きだと私も思った。 スマートポインタが充実する方向で良くなると思っていたので、 まさか参照を区別する形でコピーを避けるとは思いもよらなかった。 だけどなぁ……。 結局は後付けなんだよね。 互換性を捨てられないという制約の中ではこれ以上ない発明ではあっても、色々と不満はあるよ。 ムーブ自体は言語のコアに組み込まれた機能ではないから ムーブ後の抜け殻をうっかりいじってもコンパイラは黙って通しちゃうし。 ムーブできるようにしようとすると実質としてはポインタの入れ替えになるから、 各クラス向けにカスタマイズしたスマートポインタを書いてるみたいなもんだ。 本来ならそんなのコンパイラの最適化で頑張ってなんとかすべきことだろ。 言語処理系の敗北の証にすら見える。 いや、良いとは思ってるんだよ。 間違いなく rvalue 参照は素晴らしい発明で、 C++ をより良くした。 でもまあいいことばかりでもないよねっていうちょっとした愚痴。 [] [ここ壊れてます]
775 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:23:51 ID:XnsWA8uh.net] STL使って混乱する状況てどんな時だ?
776 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:26:11 ID:jQnb27FW.net] 構造体/クラスを戻り値にするっていう発想が無かった時代からのつぎはぎ拡張だから
777 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 18:51:03 ID:PjjUDKm0.net] そもそも構造体を=でコピー出来るのが始まりだからな 配列は=でコピーできないのにな その辺一貫性なかった>C言語
778 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 19:06:02 ID:zFvDGbzt.net] >>754 配列は (その先頭要素を指す) ポインタに型変換されるルールを入れてしまったので それと辻褄の合う形には出来なかったんだと思う。
779 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:07:43.07 ID:PjjUDKm0.net] もしCが 構造体を参照するとポインタ相当になります 引数で渡すときも&つけなくても勝手にポインタになります コピーするときはmemcpyしてください って仕様だったらC++はどうなってたんだろうな 色々まずいことになるのは確か
780 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:09:16.84 ID:PjjUDKm0.net] ↑ただ、モダンな言語はむしろそういう仕様なんだよな その代わりGCがあるが しかし、それはそれで不便なのであった
781 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:23:48 ID:VrR0aqw1.net] >>744 おまえさんは #define STR char* //と、 typedef char* STR; //の違いが わかってなさそうに見えてしまうが 違うよな? コンパイラでないものによる字面の読み替えと コンパイラによる意味の読み替えを 区別するのはダブスタか?
782 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:38:43 ID:loc7kxiY.net] >>758 そういうのじゃなくて、>>734に対して>>736書いたよな? 慣れ、ってのはわからんでもないがSTLの成功にはっちゃけて何でもテンプレートでどうにかする 今の風潮は俺もどうかと思うので。 もちろんマクロでメタプログラミングするよりは遥かに楽だけど、方向性としては同じようなもんだろ
783 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:41:08 ID:loc7kxiY.net] というかVCだとプリプロセスだけ済ませたソース見れるから、 時にテンプレートよりデバッグ楽かもしれない
784 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 19:59:37 ID:VrR0aqw1.net] >>759 質問に答えてないな 字面の読み替えは評判悪く 意味の読み替えが広く受け入れられているのは ダブスタか?
785 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/26(日) 20:00:29 ID:zFvDGbzt.net] マクロを殺すためにどんだけ苦労してきたと思ってんだよ。
786 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:01:26 ID:hLglXOws.net] またマクロの話かよ ほんとロートルばっかだなここ
787 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:04:02 ID:VrR0aqw1.net] >>762 ほんこれ
788 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:07:19 ID:loc7kxiY.net] >>761 それをダブスタとは思わないし言ってもないんだが >>762 だったら尚のこと歴史に学べよ
789 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:10:54 ID:VrR0aqw1.net] >>765 744で言っているが?
790 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:15:22 ID:loc7kxiY.net] >>766 アンカーぐらいちゃんと付けろよボケ >そこに気付かないやつはプログラマとしての資質を問われる これは>>734に対する発言だよな? 俺じゃなくてお前が相手の発言を矮小化してバカにしてると気付け
791 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:21:38 ID:VrR0aqw1.net] >>767 734と俺の問題は おまえさんと俺の問題とは別だ 話を逸らすな 744の発言をおまえさんは貫くのか撤回するのか 立場を明らかにせよ
792 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:22:20 ID:loc7kxiY.net] どんだけ都合のいい脳味噌してんだこいつ
793 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:33:02 ID:VrR0aqw1.net] どんな脳味噌と見て貰っても結構だ 744のダブスタ発言をおまえさんは貫くのか撤回するのか 立場を明らかにせよ
794 名前:デフォルトの名無しさん [2020/01/26(日) 20:36:39 ID:Yuet6lAk.net] マクロとテンプレートが同じとかワロ。
795 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:37:56.09 ID:6ZE6/BGT.net] Cと違うことを理由にC++を否定する奴たまにいるけど何なん? なんでCを使わないんだ?
796 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:40:10.44 ID:loc7kxiY.net] お前の都合のいい解釈(プリプロセス時ではなく型の文脈の問題までマクロでどうにかしていたのをtypedefやテンプレートに置き換える)を そもそもダブスタとは言ってないんで貫くと取ってもらっていいが それより>>759-760 に対する回答はまだなの?
797 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:43:00.84 ID:loc7kxiY.net] >>771 メタプログラミングとして見るとやってることは一緒なんだが 言語としての出来不出来は別として(個人的には>>735 に同意
798 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:46:23.65 ID:yXTxN+fl.net] C言語にこそ、UnifideCallSyntax必要だと思うのだけど、入らないかねー。 関数オーバーロードと一緒に入ったらクラスなんかいらねっ。
799 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:47:29.34 ID:hLglXOws.net] c++の専門家の皆さんに質問ですが using F = int(int) のように 戻りの型(引数の型) の形式で関数型を書けるようになったのってどのc++からなの? あとこれを書ける場所ってusingとtemplate以外にある?
800 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:50:40.79 ID:VrR0aqw1.net] >>773 > プリプロセス時ではなく型の文脈の問題までマクロでどうにかしていた プリプロセス以外でマクロでどうにかするって意味がわからない よって「ダブスタとは言ってない」の意味も俺には(おそらく、ここの誰にも)通じてない 744のダブスタ発言をおまえさんは貫くのか撤回するのか 立場を明らかにせよ
801 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 20:58:53.64 ID:loc7kxiY.net] 相手に嫌な思いをさせたいだけの議論は辞めろ気持ち悪い プリプロセス時の問題に遭遇したことが無いのならお前の方が資質に欠けるし経験も足りてない >>734 の言うことも俺の言う事もそら理解出来んだろう 話にならんよ
802 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:03:26.54 ID:BKKks8j/.net] c++11以降において「マクロをリッチにする」ってことの代替が テンプレート、constexpr をリッチにするって方向だろう。 正しい方向だとは思わんが、方向性なり答えはうちだしてはいる。
803 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:11:06.46 ID:loc7kxiY.net] それはそれとしてプリプロセス時プログラミングもやりやすくして欲しいってだけのことだよ (現実的に叶うとは思ってないが)
804 名前:デフォルトの名無しさん [2020/01/26(日) 21:11:40.73 ID:Yuet6lAk.net] ワロリン。
805 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:18:05.50 ID:6ZE6/BGT.net] Qtみたいに独自のプリプロセッサ作ればいいのでは
806 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:19:49.89 ID:hLglXOws.net] c++の専門家の皆さま教えて下さい auto a = +[](int b) { return b;}; このaの型は何ですか? 困っているので秒速でお願いします
807 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:36:53.40 ID:VrR0aqw1.net] >>778 間違いを認めることができない未熟者には 嫌な思いからも学ぶべき教訓があるんだよ やめてくれえ、気持ち悪いいい、それで? 命令口調では許してやらんぞ
808 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:37:51.54 ID:VrR0aqw1.net] 私事ですまんが 明日早いんでそろそろ失礼する
809 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:39:54.66 ID:loc7kxiY.net] ワロタ
810 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:46:54.67 ID:VrR0aqw1.net] よかったなw
811 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 21:54:18.57 ID:loc7kxiY.net] まともな反論できんのならはよ寝ろ
812 名前:蟻人間 ◆T6xkBnTXz7B0 mailto:sage [2020/01/26(日) 21:59:37 ID:TOQ25Lx5.net] >>783 int型。 --- 君たちひまそうだね。暇だったら、こっちのソースでも見てくれないか? https://github.com/katahiromz/ImagePocke/blob/master/ImagePocke.cpp C++/Win32で書いてるんだけど
813 名前:B ここからドロップした画像ファイルを表示可能にする予定。 画像読み込みにGDI+を使う予定。 [] [ここ壊れてます]
814 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:27:38 ID:hLglXOws.net] 静かになったなw >>789 関数ポインタ ttps://wandbox.org/permlink/zLH8pFOt3tLJhujk
815 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:46:48.37 ID:Pq6RurGB.net] ラムダに+をつけると関数ポインタになるなんてcppreferenceにもないけど常識なの?
816 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 22:55:11.25 ID:hLglXOws.net] そうなんだよね この仕様がどこで決められてるものかがよくわからない ぐぐったら ttps://stackoverflow.com/questions/18889028/a-positive-lambda-what-sorcery-is-this というのが見つかってなんか built-in overload らしいんだけど 結局のところ関数オブジェクトに対する仕様がどこに書かれているのかよくわからない でもわりとよく使ってる
817 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 23:01:50.07 ID:zFvDGbzt.net] >>791 ・ キャプチャしている変数がないクロージャは関数ポインタに変換可能であり、関数ポインタが必要なところでは暗黙に型変換される ・ クロージャに単項 + を適用することはできない (ので関数ポインタに型変換してから解釈される) という合わせ技によって関数ポインタになる。 (キャプチャしてる変数があるときは変換できないよ)
818 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:05:52.70 ID:Pq6RurGB.net] 関数オブジェクトには関数ポインタへの暗黙の変換が存在して operator+(T*)がそれ自身を返すからということね
819 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:09:35.82 ID:hLglXOws.net] まじで? たまたまできるってことなのか なんか今後使うのためらうわw
820 名前:はちみつ餃子 mailto:sage [2020/01/26(日) 23:11:17.20 ID:zFvDGbzt.net] >>795 専用の、クロージャをポインタに変換する機能というわけではないという意味ではたまたまだけど、 ちゃんと保証された動作なのでためらわなくていいと思うなぁ。
821 名前:デフォルトの名無しさん mailto:sage [2020/01/26(日) 23:14:39.96 ID:hLglXOws.net] >>796 もし今後関数オブジェクトに他の暗黙変換が追加されたらって考えると気が引ける まぁ使うんだけどさ
822 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:17:47 ID:uhXUQTHO.net] 普通に型宣言すればいいだけだよねこれ。
823 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:18:13 ID:8wq+eSeZ.net] >>776 実験してないので間違ってるかもしれないが、 (型名)ptr で関数ポインタへキャストする場合、 ( int(*)(int) )ptr と書いても良いが、 ( int(int) )ptr と書いても良かったかも知れない。というのは、 typedef int (*FUNC)(int); と書いても良いし、 typedef int FUNC(int); と書いてもよかったり、関数型のポインタ pFunc に対して、 (*pFunc)(123); と書いても良いし、 pFunc(123); と書いても良い、とか。
824 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:19:00 ID:jlvCAhZE.net] >>776 C89 から関数型の表記としては解釈されるかと。 コンパイルが通る文脈は C++ まで無かったかもしれんけど。 C++ でも今のところ using とテンプレート引数以外では使えなさそう。
825 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:25:21 ID:8wq+eSeZ.net] >>799 一部、コンパイラが故意にエラーにする可能性は有るが、 int(*ptr)(int); は、関数へのポインタ型の変数ptrの宣言。 int(*)(int) は「関数へのポインタ型」そのもの。 int func(int); は、関数のプロトタイプ宣言だが、内部処理的には関数型の変数 func を定義しているような 解釈がされた後、関数型の場合の特別な処理として変数ではなくプロトタイプ宣言に特別 処理がされる。そして、 int(int) は「関数型」そのもの、という解釈になる。 よく見るとこれらに対抗関係が有ることが分かる。 なお、最後のint(int)はコンパイラの内部処理的には関数型そのものだという解釈になるが、 コンパイラがその場合に特別にエラーを出す処理系と出さない処理系があるかもしれない。
826 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:26:31 ID:8wq+eSeZ.net] >>801 対抗関係 ---> 対応関係
827 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 00:34:47 ID:8wq+eSeZ.net] >>801 何が言いたかったというと、戻り値(引数型) を解釈する新しい仕様が追加された というより、数学の数式のようにみたときに一貫した規則に従っていることが わかるということ。言葉で言えば、 「定義文に置いて、名前を除去すると型名になる」 という規則。 int func(int); という定義文に置いて、名前であるのは func。だから、funcを除去した、 int(int) は、funcの型名になる。名前funcの型は、「関数型」だから、これは関数型 という型名そのものとなる。 int a; の場合、名前であるのは a で、aの型は、int型。だから、この定義文から 名前を除去した int は、int型ということになる。 int (*pFunc)(int); の場合も、pFuncという変数の定義文であるが、この定義文における名前とは pFuncであるので、pFuncを除去したところの int (*)(int); は、pFuncの型であるところの、「関数へのポインタ型」となる。 つまり、同じ法則にしたがっている。
828 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 00:36:25 ID:e3ktUGSY.net] 関数型が暗黙に関数ポインタ型に型変換されるルールで引っ掛かってるってことかな? 関数型そのものは C++ が出現した最初から存在すると思うよ。 C にもあるもの。 こういう特殊な変換ルールを強制するために std::decay がある。
829 名前:800 mailto:sage [2020/01/27(月) 01:15:58.29 ID:jlvCAhZE.net] >>776 typeid で使ってもコンパイル通った。
830 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 02:13:11 ID:DIOsR0tc.net] RustってどれくらいC++に取って代わるんろうか 互換性以外でC++使う意味ない、みたいな時代はくる?
831 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 02:15:18 ID:an2yFfMH.net] Rustの話はRustスレでやれ 布教すんな
832 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 06:56:19 ID:EVyt1Wcb.net] >>783 スマートオブジェ
833 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:23:59 ID:7jNlWdbx.net] C++のライブラリはC++からしか使えないから最高なんです 何故ならヘッダという古臭い仕組みを採用しているからww なおCOMは
834 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 09:33:48.52 ID:PH8qw3WE.net] >>798 そりゃauto使いたいからじゃない その理屈ならそもそもlambda使わずに普通の関数書けばいいってなる
835 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:29:36 ID:nw3WJhJD.net] >>783 [](int b) { return b;}; だけなら明らかにラムダ式の関数ポインタだけど それをオーバーロードか何かの+で虚無と足し算してんの? *[](int b) { return b;}; これは掛け算でもするの?
836 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:44:46 ID:EVyt1Wcb.net] 関数ポインタではない スマートオブジェクトへのポインタだ ただの関数ポインタならファンクタとして機能しない
837 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 10:54:24 ID:j8/I9hQ5.net] >>811 単項演算子の+だろ
838 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 11:22:15 ID:PH8qw3WE.net] >>811 はちさんが答え書いてるよ >>793
839 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:33:55 ID:LGsyX1lU.net] ラムダはデリゲートじゃねー。一個しか保持できんわな。 と遅レス。
840 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:47:35 ID:uUAjQCPR.net] ステートレスラムダって用語が出てこないんだね stateless lambda
841 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 15:57:13 ID:uUAjQCPR.net] >>804 template <typename F> void test(F&&) { cout << 1; } void test(int(*)()) { cout << 2; } int func() { return 0; } int main() { test(func); //2 test([]{ return 0; }); //1 } ステートレスラムダを関数ポインタに渡すのはconversionで 関数を関数ポインタに渡すときのlvalue translationとは違う
842 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:03:26 ID:uUAjQCPR.net] lvalue transformationだ、これは失礼
843 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 16:10:02 ID:e3ktUGSY.net] >>817 おっ。 そうなんや。
844 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:16:57.88 ID:uUAjQCPR.net] g++だと、これ通るw auto closure = []{ return 0; }; using funcp = int(*)(); test(closure.operator funcp());
845 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:29:40 ID:Xjs2F3Iq.net] []の後()不要だっけ?
846 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 16:30:47 ID:an2yFfMH.net] 引数がないなら省略可能
847 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/27(月) 17:56:21 ID:e3ktUGSY.net] >>814 ワイはどちらかというとはちみつより餃子の方にアイデンティティがあるので…・…
848 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 18:43:12 ID:Be1ain3H.net] >>822 勉強になりました。
849 名前:デフォルトの名無しさん mailto:sage [2020/01/27(月) 19:32:41 ID:EVyt1Wcb.net] >>81
850 名前:2 ×スマートオブジェクトへのポインタだ ○スマートオブジェクトだ [] [ここ壊れてます]
851 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 09:26:07 ID:ClFSc0Tc.net] しょうもないシンタックスシュガーの話が好きな奴多いね。
852 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:18:33.58 ID:iJMYk+LH.net] gotoおじさんまた登場だよ
853 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:25:01.77 ID:ciqR13vi.net] >>827 踊るポンポコリンの「インチキおじさん登場」を思い出した。あんまり間違ってないだろう。
854 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:44:40 ID:wcDzWZFN.net] ボコられるの好きなんか? 変態めw
855 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:49:48 ID:ivYV6JvB.net] 物事は適切に伝えろ それが出来ないなら口を開けるなカスども
856 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 10:52:11 ID:ivYV6JvB.net] ラムダが関数ポインタとかほざいてるカスが居てびっくりしたわ
857 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:05:50.35 ID:AXFiEKC0.net] >>831 インライン展開されるから?
858 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:12:08.47 ID:tLdUC4IA.net] >>831 >>783 のこと?
859 名前:デフォルトの名無しさん [2020/01/28(火) 11:23:05 ID:ijxMtirO.net] 個人的にはテンプレートなのに糞のSTLよりも マクロωのQtの方がうまくやれてる実用的だと思う
860 名前:デフォルトの名無しさん [2020/01/28(火) 11:24:46 ID:ijxMtirO.net] >>758 typedefに夢観すぎ
861 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 11:30:08 ID:jIEBko3c.net] まあ個人的な感想は個人的な感想だからなぁ。 俺は Qt に対してなんやこのクソはとしか思わんが、 広く使われている現実がある以上は実用性は高いんだろう。 たぶん。
862 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:38:43 ID:9AkNqXrr.net] Qtのmocは何か嫌だ
863 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 11:45:43 ID:wcDzWZFN.net] >>835 ああ、usingを使うべきだったな typedefなんてダセーもんもういらねえって 頭ではわかってるんだが長年の癖でぽろっと出ちまう
864 名前:デフォルトの名無しさん [2020/01/28(火) 12:03:55 ID:AXFiEKC0.net] マクロを名前空間に閉じ込められるようになれば、マクロの害悪の何割かは減らせるはず。
865 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 15:45:53 ID:wcDzWZFN.net] ということは名前空間をプリプロセッサが処理せにゃあかんな translation phaseを根本的にぶっ壊さないと無理だと思うが
866 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 16:34:43 ID:ogCuVxV7.net] typedefが駄目で、usingが好まれる理由を教えてください。
867 名前:デフォルトの名無しさん [2020/01/28(火) 16:38:19 ID:AXFiEKC0.net] 否定的な視点から散々な言われ方をされがちなC/C++のマクロだけど、 Java/C#/Python/Pwel/Rubyに似たテキスト変換がないことに物足りなさを感じることが多いのも事実。
868 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 16:39:59 ID:jIEBko3c.net] >>841 私が思いつくのは ・ using は名前を導入するという一巻した意味規則がわかりやすいから ・ using はテンプレートに出来るから ・ typedef だと複雑な型定義をするときに肝心の新しい名前が中の方にあって見づらい
869 名前:デフォルトの名無しさん [2020/01/28(火) 16:44:17 ID:AXFiEKC0.net] typo。PwelじゃなくてPerl。Perlはめっきり影が薄くなった。 PerlはGit for Windowsにバンドルされているので世の中の大部分のプログラマーがすぐに使える環境にあるのだが、 Git本体はPerl依存を減らす方向に進んでいるらしい。
870 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 16:44:19 ID:jIEBko3c.net] >>842 Cプリプロセッサを Java やら Python やらにつこうてもええんやで。 そういえば cpp を使うことを (習慣的に) 想定してる言語って C/C++ を除けばHaskell (GHC) くらい? 汎用プリプロセッサとして使うなら M4 あたりの方が賢いしなぁ……。
871 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:01:24 ID:wcDzWZFN.net] >>841 たとえばこういう場合 #define STR char* STR a, b; //これ、どうなる? もしこうなっていたら using STR = char*; STR a, b; //これはどうだ? おまえさんの好みに合うのはどっちだ? そこに答えがある
872 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:02:35 ID:wcDzWZFN.net] >>841 あ、すまんtypedefか typedef 内容ごちゃごちゃ 名前; using 名前 = 内容ごちゃごちゃ; 体裁が揃えやすいのはどっちだと思う?
873 名前:デフォルトの名無しさん [2020/01/28(火) 17:12:58 ID:ijxMtirO.net] typedef も using もエイリアスという点では char * と STR の区別が出来ないから後で困る
874 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:15:55 ID:wcDzWZFN.net] 関数ポインタの別名を作るときなんぞ typedef int (*funcp)(); //内容ごちゃ名前ごちゃ using funcp = int(*)(); //名前 = 内容ごちゃごちゃ という違いが出る
875 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:25:49 ID:CkOmcsmE.net] usingを使うと03脳が発狂する
876 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/28(火) 17:28:55 ID:jIEBko3c.net] でもまあヘッダファイルを C と C++ の両方で (マクロで少し切り分けて) 使いたいってことはあるから、 そういうときは typedef にしといた方が共用できる部分が多くて楽ってことはある。
877 名前:デフォルトの名無しさん [2020/01/28(火) 17:34:48 ID:ijxMtirO.net] >>849 そこだけだと構文糖衣以上のメリットはないよね
878 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 17:46:32 ID:aDOyN6/W.net] どっちでもええやん
879 名前:はちみつ餃子 mailto:sage [2020/01/28(火) 17:55:35.77 ID:jIEBko3c.net] >>849 ポインタまわりはテンプレートの記法で書けば統一的でわかりやすい気がするが、 たぶん他の名前とかぶらないようにするためか長めの名前なのがちょっとなぁ……。 using funcp = std::add_pointer_t<int(void)>;
880 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 18:11:09 ID:IabgCQwH.net] こういうのもある。 https://qiita.com/Linda_pp/items/44a67c64c14cba00eef1
881 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 18:21:36 ID:jS595giQ.net] >>842 PL/1はいいぞ 制御構文としてif程度しか使えないしょぼいC/C++マクロと違ってプリプロセッサでDOループやGOTOとかも使えるしサブルーチンの定義すらできるぞw https://en.m.wikipedia.org/wiki/PL/I_preprocessor
882 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 19:30:49 ID:jjtOLQOh.net] そういえば最近Boost.Preprocessorを使った楽しい黒魔術の話題を聞かない気がする あれってまだ開発継続してるの?
883 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:01:44 ID:KHL1SP2c.net] >>849 typedefの方が簡単じゃん コピペして*付けて()付けるだけ
884 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:11:17 ID:lz3/6EQt.net] マジでか・・・
885 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 20:52:12 ID:wcDzWZFN.net] >>852 おまえさ、usingはテンプレートにできること、まさか知らないの?
886 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 22:15:34.91 ID:aDOyN6/W.net] 小学生かよw
887 名前:デフォルトの名無しさん mailto:sage [2020/01/28(火) 23:16:15.60 ID:kww99AmH.net] CPPってもうメンテされていないようで怖い #define FOO 123 // comment とはとうてい恐ろしくてどうしても書けず、 #define FOO 123 /* comment */ と書いてしまうま
888 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 11:25:21 ID:HJZ6WUGV.net] N4713 5.2 Phases of translation 3 Each comment is replaced by one space character. New-line characters are retained.
889 名前:デフォルトの名無しさん [2020/01/29(水) 13:26:03.72 ID:zE4LbE2k.net] >>860 そこだけって書いてあるのに脳内で読み飛ばずのは 国語の成績悪かったやつの特徴
890 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 13:40:36.68 ID:HJZ6WUGV.net] >>864 おい852本人、「構文糖衣以上のメリットはない」という自分の言葉から逃げるのに そういう言い訳は見苦しいぞ 今さら吐いた唾を飲むなよ
891 名前:デフォルトの名無しさん [2020/01/29(水) 14:13:02 ID:pjwqAxyM.net] なぜ喧嘩腰なのか。
892 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 14:13:39 ID:Yrzd5mtl.net] 喧嘩腰がC++民のデフォだから
893 名前:865 mailto:sage [2020/01/29(水) 14:36:19 ID:WeNDQDRz.net] 俺は争いは好まないが、 平和的な話し方をしないやつには 場合にもよるが嫌悪感を露にすることもある
894 名前:デフォルトの名無しさん [2020/01/29(水) 16:47:35 ID:pjwqAxyM.net] 戦士の血がそうさせると言いたいのか。
895 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 16:57:27 ID:HJZ6WUGV.net] 平和を愛するという点で共感が得られず こちらが下手に出ることのベネフィットがない相手には容赦は無用ということだ
896 名前:デフォルトの名無しさん [2020/01/29(水) 17:24:59 ID:pjwqAxyM.net] 戦士と戦士が巡り合ってしまうと、バトル・フィールドが形成されるシステムってことか。
897 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:32:22 ID:YYjUIAq1.net] >>870=ID:VrR0aqw1 マウント取りたいだけの初心者だから相手しない方がいい
898 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:39:26 ID:iDUguYS7.net] >>867 多くのC++民が喧嘩腰なのでなく、一部の喧嘩好きの戦闘民族のレスが目立ってるだけじゃね。このスレから相手に勝つことだけが目的の無意味なレスの応酬を取り除いたら、1/10も残らないと思うぞ。
899 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:54:15 ID:YYjUIAq1.net] いや最近のC++に対するちょっと否定的な意見が出ただけで 過剰反応する住民のせいでもあると思うぞ で、そういう奴に限って間違いを素直に認めたりなどしないからな(代理戦争で議論するやつ特有のパターン
900 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:55:39 ID:HJZ6WUGV.net] >>872 正直に言えよ、「gotoの何が悪いのか詰問されると困るから」相手しないと マウント取られそうでヤバいんだろw
901 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 17:59:00 ID:YYjUIAq1.net] 俺ID:loc7kxiYだからgotoの話はしてないよ で、前にも聞いたけど反論まだ?
902 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:07:15 ID:HJZ6WUGV.net] ああ、そのIDのときはSTLの話だったな そこでマクロの話も出てきていたが 隠すべきものと隠してはならないものの区別がつかない点で gotoの何が悪いのかわかってないやつとプロファイリングが一致するんだよ 俺の正直な気持ちを教えといてやる マウント取りたいんじゃなく、頭からアホにしてんだよ こんなやつをマウントできたからって偉くも何ともねえ
903 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:08:48 ID:YYjUIAq1.net] いやSTLじゃなくてテンプレートを持て囃しすぎって話だったんだが まぁいいや
904 名前:デフォルトの名無しさん [2020/01/29(水) 18:20:58.67 ID:pjwqAxyM.net] おまえが犯人か。
905 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:31:24.45 ID:UhF+CSx9.net] なんかおかしなのがいるよね 圧倒的にこっちが勝っている状態で意味不明な反論?してきて意味不明だから返せないと逃げたとか言う奴
906 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:33:57.19 ID:8i6C3PjP.net] 5chなんてそんなところ 何を期待してるんだか
907 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 18:50:11.91 ID:HJZ6WUGV.net] 明日早いから失礼するとは言ったが それを謎変換せにゃならん切羽詰まったやつがいるのかw
908 名前:デフォルトの名無しさん [2020/01/29(水) 19:02:21.51 ID:pjwqAxyM.net] gotoは初期化を飛び越えることが出来ないと聞きました。
909 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 19:09:37.44 ID:cVCtJzaf.net] usingってテンプレート使えたっけ
910 名前:デフォルトの名無しさん [2020/01/29(水) 19:11:38.78 ID:pjwqAxyM.net] 使えます。
911 名前:デフォルトの名無しさん [2020/01/29(水) 19:12:44.99 ID:pjwqAxyM.net] 初期化を飛び越えることができるバーストモードgotoないでしょうか。
912 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 21:34:59.03 ID:QR9K5cuD.net] longjump
913 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:05:22.85 ID:HJZ6WUGV.net] 465のlongj【u】mp野郎まだいたのかwww
914 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:22:07.51 ID:G0q9jZbg.net] バカほど多くの機能を使いたがるってのがプログラマーが解決しなければならん問題だな。
915 名前:デフォルトの名無しさん [2020/01/29(水) 22:27:38 ID:pjwqAxyM.net] なんだと! あやまりたまえ!
916 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:29:42 ID:/kkeNUel.net] 使いどころが悪いって指摘ならまだしも、ある機能を使い所で使うなとか言うのは結局俺が分からんからってだけだよね
917 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:32:41 ID:G0q9jZbg.net] 使いどころが本当に正しいか頭使って考えてりゃね。 バカは流行りだから、なんかカッケーから以上に何も考えてないから レガシー化するわけだ。 んでまた新しいものに飛びついていく。
918 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:33:49 ID:vJ6+7lg9.net] 仕事ならそのコードがメンテできる人が他にどれだけいるかで考える
919 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:49:46 ID:HJZ6WUGV.net] メンテできるやつが「オレ」以外の全員でもか? アホwバカwww
920 名前:デフォルトの名無しさん [2020/01/29(水) 22:56:36 ID:pjwqAxyM.net] うむ、お前以外の全員でもだ。
921 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 22:57:52 ID:vJ6+7lg9.net] もうそろそろ寝る時間じゃないの?
922 名前:デフォルトの名無しさん [2020/01/29(水) 22:59:28 ID:pjwqAxyM.net] かなり眠いです。
923 名前:デフォルトの名無しさん mailto:sage [2020/01/29(水) 23:16:21 ID:gRkDTmNL.net] C++03しか知らないんだけど C++17まで修めるにはつるピカ先生の御本を読めばいいですか?
924 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 00:33:56 ID:x7BjuJ+g.net] cppreferenceで十分
925 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 00:49:18 ID:v/8wm2Cj.net] どれかひとつじゃなきゃいかんてことはないんだ
926 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 00:52:54 ID:D1C6nROc.net] つるぴか先生の本は聖典だ お守りのようなものなので読まなくても買って横においときなさい
927 名前:デフォルトの名無しさん [2020/01/30(Thu) 16:01:21 ID:sB8XzCcn.net] cppreferenceは循環参照みたいになってて使い辛い
928 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 16:02:36 ID:v/8wm2Cj.net] 実際にお互いに連携するからそう綺麗に木構造にはならんのやで。
929 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 16:09:47 ID:6JJixhdc.net] 1つの情報源しか見てないとサイトから脳へバグが伝染るぞ
930 名前:デフォルトの名無しさん [2020/01/30(Thu) 16:11:35 ID:sB8XzCcn.net] cppreferenceは調べるためのサイトじゃなくて 忘れてたことを思い出すためのサイトって意味なら まあまあ同意
931 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:00:38 ID:6JJixhdc.net] ネットじゃなく、ローカルに俺メモを作るのは基本だね
932 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 17:05:52.06 ID:CwICoFVZ.net] 作らなくてもcppreferenceをcloneすればいいじゃないか
933 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:15:03 ID:6JJixhdc.net] 脳内の理解を、きちんと清書してみると 自分の言ってることがおかしいのに気付くことがよくあるんだよ
934 名前:デフォルトの名無しさん [2020/01/30(Thu) 17:26:38 ID:Z7o7STkD.net] 認知症の可能性が。
935 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 17:51:33 ID:6JJixhdc.net] 最近の俺はそう言われても仕方ないアホなことをよくやらかすが まだ若く元気だった頃から、俺メモでセルフチェックはやってるよ
936 名前:デフォルトの名無しさん [2020/01/30(木) 18:12:36.69 ID:Z7o7STkD.net] みんなのメモを集めれば・・・
937 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 18:36:17 ID:6JJixhdc.net] 女子社員のメモを集めたら最強マニュアルができたなんてエピソード昔聞いたことある
938 名前:はちみつ餃子 mailto:sage [2020/01/30(木) 18:38:54.14 ID:v/8wm2Cj.net] cpprefjp にコミットしてくれ。
939 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:00:51.60 ID:AVLJabA/.net] ビャーネ・ストラウストラップ の第四版は、C++11までですよね?
940 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:06:12.13 ID:6JJixhdc.net] そら当たり前でんがな 承知の上で読む分には何も問題ないけどな
941 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:27:51.04 ID:AVLJabA/.net] 質問者は、C++17まで収めたいと思っているようですが。
942 名前:はちみつ餃子 mailto:sage [2020/01/30(木) 19:31:35.00 ID:v/8wm2Cj.net] C++11 までわかってればあとは cpprefjp で差分を見れば充分でしょ。
943 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:32:19.73 ID:x7BjuJ+g.net] 03→11の乖離は大きいが14、17はそれほどでもない 20、23でまた大きく変わるが
944 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 19:36:37.08 ID:6JJixhdc.net] >>918 御意
945 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 19:51:01 ID:6JJixhdc.net] しかしメジャー2連くるかねえ 段階的変更という大人の配慮を忘れたら C++終わると思うが
946 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 19:54:30 ID:R974cSCc.net] もう変える必要なんかないだろうに
947 名前:デフォルトの名無しさん [2020/01/30(Thu) 19:54:36 ID:Z7o7STkD.net] まだ終わってなかったんだ。
948 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/30(Thu) 19:57:26 ID:v/8wm2Cj.net] コンセプトとモジュールの導入は C++er の悲願だと思っていたがそうでもないの? クソみたいなマクロを殺すのがだいぶん上手くいったから次はクソみたいな SFINAE を殺そうという動きだと理解してる。
949 名前:デフォルトの名無しさん [2020/01/30(Thu) 20:01:14 ID:Z7o7STkD.net] コンセプトは欲しいです。
950 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:25:47.17 ID:/5vTOygk.net] > ポインタライクなオブジェクトからアドレスを取得する std::to_address() 関数 (P0653R2) > ポインタライクなオブジェクトを引数にとり、それが表すのと同じアドレスを生ポインタで返す関数 > std::to_address(p) が追加されます。オブジェクトがポインタ型の場合はその値を返し、それ以外の場合、 > std::pointer_traits<Ptr>::to_address(p) の特殊化が定義されていて使えればその戻り値を、 > そうでない場合は std::to_address(p.operator->()) の戻り値を返します。 ついにポインタのことをアドレスって言っても良くなったんだな 俺の学生時代にはポインタの事をアドレスと言って良く怒られたものだ 懐かしい思い出
951 名前:デフォルトの名無しさん mailto:sage [2020/01/30(木) 20:36:13.05 ID:rpXeID84.net] 変数は実は二つの値から出来ている 一つは変数の中に入っている値 もう一つは変数のアドレスの値 この二つだ 変数の二重性がC言語の理解を無駄に難しくしてる アドレスの値が入ってるのは機械語から言えば当然だが 変数なる計算機科学の概念がそこに中途半端にドッキングすると複雑になる ポインタで躓くヤツが多いのは機械語と高水準言語、その中間に位置するC言語の変数がもつ二重性のせいだ
952 名前:デフォルトの名無しさん [2020/01/30(Thu) 21:07:45 ID:Z7o7STkD.net] ところでコンセプトって何ですか?
953 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:12:58 ID:jdq+FHbl.net] ID:Z7o7STkD このスレはこういう精神病みたいなやつ多くない?
954 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:22:32 ID:cFc5UMZy.net] >>923 イキった初心者に影響受けすぎ
955 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 21:34:14 ID:r1oioh07.net] ハゲの悲願だろ
956 名前:898 mailto:sage [2020/01/30(Thu) 21:40:54 ID:XvvyOq64.net] 皆さん情報ありがとう ひとまず先生のWeb版「C++入門」をやってみることにしました
957 名前:デフォルトの名無しさん [2020/01/30(Thu) 21:41:00 ID:Z7o7STkD.net] なんだと!
958 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:11:01 ID:6JJixhdc.net] operatorの暗黒面を知れという実習問題 ここでみんなでやってみないか?
959 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:19:13 ID:FR6/17T7.net] 単純なキーワード検索できないことぐらいでしょ。暗黒面。
960 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:24:37 ID:R974cSCc.net] operatorは自明な場合しか使わない 構造体代入のように見えて変数の逐次代入してあって、 後で追加された変数が処理されていなかったりして気づかないとかこわい
961 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:26:34 ID:/1tMjbDQ.net] 暗黙変換と絡んだ地獄を知らんのか
962 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:36:05 ID:Q1Ec3Ov8.net] >>933 gotoおじさんに答えさせようぜ
963 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 22:42:34 ID:o/4wL0K/.net] 演算子の多重定義とテンプレートの組み合わせはチョー便利 gotoと同じで手放せない便利さ…!
964 名前:デフォルトの名無しさん mailto:sage [2020/01/30(Thu) 23:30:29 ID:HitChVTH.net] >>925 ポインタとアドレスは別物でしょ
965 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:09:44 ID:3dxm9JOP.net] 同じといや同じだし違うといやぁちがう 普通の脳味噌のやつには適当に「こまけぇことはいいから同じようなもんだ」と いっとけば通じるが、このスレにウヨウヨいるような偏執狂タイプの連中に うかつに「同じ」なんていうとポインタをアドレスと同じように整数を足すと そのぶんアドレス値が進むと思いこむやつがでてくるからうかつに言えないだけ
966 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:10:58 ID:v4E0eL1J.net] >std::to_address() ^^^^^^^ >それが表すのと同じ「アドレス」を「生ポインタ」で返す関数 となってるので公式で ポインタ=アドレス
967 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:14:07 ID:70BTs5bI.net] >>941 アドレスの値を生ポインタの型として返す、ということだから、 この文脈では明確に別の意味だろ
968 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:15:57 ID:v4E0eL1J.net] いや、to_address() という名前の関数が生ポインタを返すから ポインタ=アドレスで問題ない そうじゃないんなら、to_pointer() っていう関数名にするだろ、普通 そこが to_address() となってる
969 名前:デフォルトの名無しさん [2020/01/31(金) 00:21:59.86 ID:88e+X9K2.net] オプションだし。 アドレスを返せないファンシーポインタもあるということでは。
970 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:23:11.07 ID:v4E0eL1J.net] 俺は古いタイプの人間だから俺の感覚で言うと to_address() って言えば、生のアドレス値が整数型で帰ってくるという低レベルなイメージ それが生ポインタが帰ってくるというなら to_pointer() としたいところ ところが生ポインタが帰ってくるのに to_address() となってるわけだから ああなるほど、時代は変わったなぁ、と その辺 C++ の人たちはうるさいと思っていたんだがねぇ もう公式で ポインタ = アドレス なのね
971 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:24:13.53 ID:MjAWY572.net] pointer指すもの address指す先 じゃね
972 名前:デフォルトの名無しさん [2020/01/31(金) 00:25:21.16 ID:88e+X9K2.net] addressofで返ってくるのもポインタだし。
973 名前:デフォルトの名無しさん [2020/01/31(金) 00:27:00.86 ID:88e+X9K2.net] ファンシーポインタからポインタをとるときに使うもののような気がする。 それが不可能なこともあるからオプションなのでは。
974 名前:デフォルトの名無しさん [2020/01/31(金) 00:35:50.96 ID:88e+X9K2.net] ポインタ→ポインタあるいはファンシーポインタ・・・pointer_to。 ポインタあるいはファンシーポインタ→ポインタ・・・to_address。 ってことで、ポインタの意味は変わっていないんじゃないのかな。
975 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:42:12.84 ID:v4E0eL1J.net] 簡単に考えれば、生ポインタとスマートポインタetcを区別するために 生ポインタの事をアドレスと言ってるわけだよ スマートポインタetc -> ポインタ 生ポインタ -> アドレス っていう格上か格下げか知らんが、一つずらした呼び名になってるんだ 俺みたいな古い人間には受け入れがたいものもあるが 「生ポインタなんか使わねーよスマポこそがポインタであり生ポなんかアドレスとでも呼べばよい」 という今の時代に合わせた考え方なんだろう スマポetc(ポインタ)から生ポ(アドレス)に変換するから to_address() ちょうど Java のオブジェクトを指す変数は C++ 的には参照だが Java の人たちはオブジェクトと言うし、そう考えてる、ってのに似てる
976 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:44:40.52 ID:MjAWY572.net] javaの変数はポインタだろ 代入したら指す先が変わるし null持てるし まあ演算できない劣化版だが
977 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:46:15.67 ID:S0Mdice7.net] 常識なんかどんどん変るからな、とくにC/C++みたいな歴史が長い世界は ピュアCの時代にはそもそもポインタといえばたしかにその値がアドレス(位置情報) として機能する値と一致していたがファンシーポインタがある現代では "ポインタ"の実体とそれが保持したい情報(アドレス情報)は一致すると思わない事が常識になる "ポインタ"は情報としては何かの位置を差す値を保持はしているがそのオブジェクト 自体は保持しているアドレス情報とはまったく無関係のメモリ空間にある何かである 現代の感覚でいうともし std::to_pointer というネーミングにすると "は?ポインタをポインタに変換するってどういう意味だよ????"とむしろ混乱の元になるってわけだ
978 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:46:56.64 ID:v4E0eL1J.net] なんか長々書いたが 今の時代、スマポこそがポインタであって、もはや生ポインタはアドレスなんだよ! 人間も父が爺になって子が父に繰り上がっていくものだから 時代と共に名実ともに出世していくのは普通の事なのかもしれない
979 名前:デフォルトの名無しさん [2020/01/31(金) 00:47:48.87 ID:88e+X9K2.net] ちょっと江添呼んできて。 電車代出すから。
980 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:51:32 ID:v4E0eL1J.net] ただどうしても言いたいのは 生ポインタは address じゃなくても 別に raw_pointer とか native_pointer で良くね? address って言ったら、ただの数値のイメージがあるわ
981 名前:デフォルトの名無しさん [2020/01/31(金) 00:54:08 ID:88e+X9K2.net] アドレスに無料で型情報をつけるアイデアをひらめいたときは、俺って天才かも?って思ったんだろな。
982 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:54:15 ID:S0Mdice7.net] >>951 我々の感覚からすると実際その通りなんだが、Java脳の人々にとってはそうではない 彼等はスタックという感覚も非常にうすい なぜならオブジェクトはスタックにはとれず、常に new (ヒープ)しかないから 我々はクラスのインスタンスがスタックにあるのかヒープにあるのかは無意識に常に 判断する事に慣れているが、これをjava脳の人に説明するのはしばしば困難なときがある
983 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2020/01/31(金) 00:54:31 ID:T8rV4kLc.net] >>929 宣言をヘッダファイルに分割する方式は C++ の意味不明さの根源のひとつじゃない? それで宣言と定義を分ける運用がキッチリできるのならそれはそれでよかったけど、 テンプレートとインラインの活用でヘッダファイルに書く分量がだいぶん多くなってヘッダファイルってなんだっけって気持ちになる。 このあたりの仕組みは再編すべきでしょ。 モジュールは要るって。 コンセプトもなぁ、型に制約を付けるって普通にやりたいことじゃん? ちょっとした制約を付けるためにまわりくどいメタプログラミングなんてやりたくないよ。 現代的な静的型付け言語ならあって然るべき機能が順当に入るってだけのこと…… と思ってたら延び延びになっちゃったから待たされてる感じが強い。
984 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 00:55:51 ID:MjAWY572.net] javaはヌルポ出すくせにポインタじゃないのか ポはなんの略なんだろう
985 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:06:28 ID:/0JfR++J.net] >>941 公式は "A value of a pointer type ... represents the address of the first byte ..." 「ポインタ型の値はアドレスを表す」となってる。 https://timsong-cpp.github.io/cppwp/n4659/basic.compound#3 アドレスに加えて他の情報を持つ可能性は否定されないので、いろんな人が言ってるように 厳密にはイコールではないね。
986 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:08:43 ID:U1PsHN2Y.net] >>958 要らんなどと一言も言ってないぞ 言い回しがそれっぽいってだけ だいたいモジュールはまだ20では標準ライブラリには使われないし 「コンセプトはよ来い」とか上級者ぶりたい初心者がよく言うけど、その中に「自分で実際にコンセプトを定義する奴」などほぼ居ないだろ 個人的にはこれまでSFINAEでどうにかしてたメタプログラミング用の要件チェックのコードを 全部コンセプトに直すのクソだるい(便利になるだろうけどエラーメッセージ以外で実感するのはまだまだ先) だいたい来るのはわかってんだからもう一喜一憂するような話でもない
987 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:08:59 ID:70BTs5bI.net] 今も昔もアドレスとポインタの意味は変わってないんでないの? 「アドレス」=メモリ上のオブジェクトの位置を表す番地(具体的には整数値) 「ポインタ」= (1)何らかのアドレスを格納したT*型の変数(オブジェクト)。生ポインタ。 (2)「アドレス」と同じ意味で用いる 昔からポインタ(2)の用法でアドレスとポインタを同一視して使われるだけで、ポインタ(1)の用法で「アドレス」とは言わんでしょ。 to_addressの件も、引数として受けとるオブジェクトに対する「アドレス」の値を返すのだからto addressと言う命名で適切だろう。ここでto pointerとしたら直感的に「ポインタ」(1)の意味で解釈されかねず、下手な命名だと思う。
988 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 01:50:15 ID:kN8V6wKW.net] 言葉遊びというか言葉の意味の違いでかみあってないだけじゃろ こうした文脈でのアドレスという言葉を アドレス=機械語コードで使うのと同じ表現で指定されてるメモリアドレス の意味に無自覚に限定してるのか アドレス=なんらかの形で指定されてるメモリアドレス のゆるい意味で使っているかの話じゃ ポインタはアドレスではない、は前者の意味のアドレスに対する話で 今回の話も含めたC/C++の規格レベルでのアドレスは一貫して後者の意味じゃて
989 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 02:10:23.02 ID:X6LytJOH.net] >>913 管理者がアレだから♀
990 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 07:12:22 ID:CZDp2h8t.net] アドレスはオブジェクトの番地 ポインタはアドレスを格納する変数
991 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:39:51.12 ID:v4E0eL1J.net] しかしアドレスを返すと言いながら ポインタで返し、型情報が付いてきているわけだが
992 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:42:38.23 ID:v4E0eL1J.net] 緩い意味でのどこかを指し示す意味でのアドレスと言っているなら スマポもアドレスになるから、to_addressの意味がさらにもう何が何だか
993 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:50:06 ID:1ZJZZZs9.net] ポインタというよりvoid*だね void以外のポインタは実体の型により訳が変わる点が 単なるアドレスと違うところで
994 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:02:33 ID:v4E0eL1J.net] いやでも、to_address() の戻り値の型は void* ではなくて、ちゃんとした型情報を持った普通のポインタ型だよ void* にはならないよ
995 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:06:23 ID:yrj+fbAX.net] またつまんない話で盛り上がってんのな
996 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:42:46 ID:70BTs5bI.net] >>966 返されるのはあくまでアドレス(番地)の値だろう。型情報としてT*型を持つが、それはC/C++ではすべての式や値が型を持つから当たり前の話であって、型を持つからアドレスとは呼ばないというのはおかしな話だと思う。
997 名前:デフォルトの名無しさん [2020/01/31(金) 11:36:09.10 ID:v4E0eL1J.net] >型を持つからアドレスとは呼ばないというのはおかしな話だと思う。 つまりは ポインタ=アドレス って事ね
998 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 11:45:36 ID:GGrzMUVS.net] ポインタってのは変数のことでその中身はアドレスって第3版の時点ではっきり書かれてるぞ 型を持ってるのもあくまで変数の方だ
999 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:34:07 ID:AatGgooz.net] ヌルポ
1000 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:35:25 ID:v4E0eL1J.net] それは当たり前 そういう話ではなく う〜ん、どういえばいいか 例えば、年齢を得る関数 int get_age() ってのがあったとして 俺は別にこれに疑問を持たんし、何とも思わない to_address それは int に対して age の方が高度で抽象的な概念になってるから ところが pointer to_address() の場合はこれが逆になってて pointer の方が address より高度で抽象的な概念になってる だからこう、本質的に気持ち悪いというか 先の例で言えば まぁ適切な例かは分からないが age_t get_int() ってなってたらキモイだろう
1001 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:37:15 ID:v4E0eL1J.net] なんか途中で送信してしまった それは当たり前 そういう話ではなく う〜ん、どういえばいいか 例えば、年齢を得る関数 int get_age() ってのがあったとして 俺は別にこれに疑問を持たんし、何とも思わない to_address() と何が違うか それは int に対して age の方が高度で抽象的な概念になってるから ところが pointer to_address() の場合はこれが逆になってて pointer の方が address より高度で抽象的な概念になってる だからこう、本質的に気持ち悪いというか 先の例で言えば、まぁ適切な例かは分からないが age_t get_int() ってなってたらキモイだろう
1002 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:45:36 ID:GGrzMUVS.net] なんか勝手に幻想抱いてるけどポインタに入れるものは常にアドレスだから 何もおかしくない
1003 名前:デフォルトの名無しさん [2020/01/31(金) 12:46:08 ID:YmbKsQW3.net] VLTのto_addressは欲しい
1004 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:46:37 ID:v4E0eL1J.net] でさ、 age_t get_int() ってのを見たとき 「age_t の中身は int だし int を get してそれが age_t に入っているのだから 解釈としては問題ない」 って感じのことを言ってるレスが結構あったけど 俺はなんか違うような気がするって言ってるわけ
1005 名前:tォルトの名無しさん mailto:sage [2020/01/31(金) 12:48:59 ID:v4E0eL1J.net] 具体的には >>977 とかね age_t の中身は常に int だから〜的な だとしても age_t get_int() とは書かんだろう、というのが俺の主張だから
1006 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:07:50 ID:AatGgooz.net] アドレスとポインタってのは ageとage_tの関係
1007 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:13:53 ID:GGrzMUVS.net] じゃあint *p = &a;の&もアドレスを取る演算子じゃなくて ポインタを取る演算子に名前変えてもらうようにお願いしたら?
1008 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:37:24 ID:aVH6lH01.net] アドレスはデコーダに入力するビット列 (ハードウエアの概念) ポインタはアドレスを扱うことを目的とするデータ型 (プログラム言語の概念) IEEE754とdoubleのような関係だ
1009 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:44:13 ID:MQmpFGUT.net] 通常はポインタが数値であることなんてのは意識せんわな。 リングバッファなんかを取り扱うなら嫌でも意識することになるが。
1010 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:16:27.29 ID:HzrC4w9c.net] ポインタが数値がどうか意識しないと リングバッファも作れないようなのが C++を使うのか
1011 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:34:36 ID:Dscz4LHl.net] 分岐無くす高速化でもしているんじゃね
1012 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:37:20 ID:CZDp2h8t.net] >>976 その例は逆 アドレスとポインタは本質(イデア)とその表現の関係にある (イデア <-> 表現) 年齢 <-> 整数 色 <-> RGB値 アドレス <-> ポインタ この関係に照らせば、年齢を取得する場合は int get_age(); だし、色を取得する場合は RGB get_color(); だし、アドレスを取得する場合は T* get_address(); になる
1013 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:53:37 ID:Nt0XFA2s.net] その哲学続けるの
1014 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:10:20 ID:xOuBGXY8.net] >>986 分岐? それも普通は不要 アドレスを意識するのはDMAなど ハードウェアでリングバッファを使う時くらい
1015 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:13:50 ID:MjAWY572.net] ハードウェアとのDMAならポインタにいれるアドレス自体は気にしないだろ 特定の物理メモリを適当な仮想アドレスにマップして使うのだし
1016 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:35:40 ID:xOuBGXY8.net] DMAが扱うのは物理アドレス
1017 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:42:13 ID:xOuBGXY8.net] じゃないのもあったりするのか? チープなマイコンのDMAしか直接扱ったことがなくて
1018 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:51:22 ID:aVH6lH01.net] 仮想アドレスってことはページフォールトがあるってことだろ OSによってページインされるまで待つことになるが そこまでペリフェラルで面倒見る必要あるか考えてみそ
1019 名前:◆QZaw55cn4c mailto:sage [2020/01/31(金) 19:51:32 ID:tTpxWp9S.net] >>933 どれくらいブラックでしょうか? https://mevius.5ch.net/test/read.cgi/tech/1434079972/21 https://ideone.com/9KIuSD
1020 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:53:30.58 ID:aVH6lH01.net] 未練
1021 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:54:58.34 ID:xOuBGXY8.net] >>993 フォルトならエラーで止めときゃいいんでない? そこまでハードで面倒見る必要は無い
1022 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:55:32.42 ID:yrj+fbAX.net] 最近はIOMMUが一般的
1023 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:02:09.40 ID:yrj+fbAX.net] >>993 おいおいそんなわけないだろ デバイスがさわるメモリはページアウトしない でも物理アドレスを使わない理由は何でしょう? あスレ違いだな
1024 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:34:35 ID:aVH6lH01.net] >>996 ペリフェラルって何だと思う? >>998 循環論法だな
1025 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:47.19 ID:Nt0XFA2s.net] C++相談室 part148 https://mevius.5ch.net/test/read.cgi/tech/1580471646/
1026 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 44日 2時間 57分 54秒
1027 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています