[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
367: デフォルトの名無しさん (ワッチョイ e91c-hIhh) [] 2024/07/16(火) 12:22:56.57 ID:gS8T2k/f0 >>342 CMakeとNinjaはC++の話題なのでOKです http://mevius.5ch.net/test/read.cgi/tech/1698705458/367
368: デフォルトの名無しさん (ワッチョイ 4901-V77j) [sage] 2024/07/27(土) 17:57:44.53 ID:KDd62vAV0 C++、 型の指定が、めんどい 速いぐらいしか、利点ないよな http://mevius.5ch.net/test/read.cgi/tech/1698705458/368
369: デフォルトの名無しさん (ワッチョイ 7b95-4q6c) [sage] 2024/07/27(土) 20:53:02.50 ID:eNksZtKQ0 顧客目線に立てない三流の感想 http://mevius.5ch.net/test/read.cgi/tech/1698705458/369
370: デフォルトの名無しさん (ワッチョイ 4901-7phL) [sage] 2024/07/27(土) 21:03:15.66 ID:zOSUCWw50 >>368 auto使えば? http://mevius.5ch.net/test/read.cgi/tech/1698705458/370
371: デフォルトの名無しさん (ワッチョイ 1379-xel+) [sage] 2024/07/27(土) 23:40:34.69 ID:iHlVB6Tw0 ランタイムに依存しない(し難い)のが最大の利点だろうに さらに大抵のアーキテクチャには用意されてるからクロスプラットフォームの観点でもなんだかんだ最強なんだよ むしろ最近はChatGPTが他の言語で書いたやつまで適当に書き直してくれるのもあって最強度がより高まってきてると感じるね http://mevius.5ch.net/test/read.cgi/tech/1698705458/371
372: デフォルトの名無しさん (ワッチョイ 8e95-N8l3) [sage] 2024/07/28(日) 00:00:39.51 ID:ePI6t8jD0 全く同意できんな むしろ環境依存上等で使うのがC/C++だろ パッケージシステムも標準がないしビルド環境もばらばら どこが最強やねん 標準ライブラリで完結するようなしょぼいプログラムなら他の言語使ったほうが楽 http://mevius.5ch.net/test/read.cgi/tech/1698705458/372
373: デフォルトの名無しさん (ワッチョイ bdf0-+IYp) [] 2024/07/28(日) 00:11:55.23 ID:4HqkcgMt0 型の指定のサンプル GetProcAddressに変換をかけるマクロ #define ENTRY_INTERFACE(api) api = (decltype(api)) GetProcAddress(hInst,"_INTERFACE_"#api) ね?簡単でしょ? http://mevius.5ch.net/test/read.cgi/tech/1698705458/373
374: デフォルトの名無しさん (ワッチョイ 5d01-viEi) [sage] 2024/07/28(日) 12:00:20.72 ID:x9q80Pnt0 >>370 auto オートね (いいこと聞いた http://mevius.5ch.net/test/read.cgi/tech/1698705458/374
375: デフォルトの名無しさん (ワッチョイ aa3e-cE1m) [sage] 2024/07/28(日) 17:36:32.24 ID:9wLF96CX0 >>374 あとテンプレートを使ったダックタイプとかも便利。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/375
376: デフォルトの名無しさん (オッペケ Sr05-viEi) [sage] 2024/07/28(日) 21:14:24.07 ID:roXukc4Cr >>375 ふむ 実践的な(アプリを作るとか)、c++、書籍かなんか、おすすめ、ありますか? cmake、とかの、関門もあるのだが (githubにあがってるやつを、きっちり理解したい) http://mevius.5ch.net/test/read.cgi/tech/1698705458/376
377: デフォルトの名無しさん (ワッチョイ 4132-nuT0) [sage] 2024/07/29(月) 08:53:31.23 ID:cQQT2a1I0 実践に入る前に言語の入門は読んだほうが良いと思う。 基礎を積まずに実践しようとするのは無謀。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/377
378: デフォルトの名無しさん (ワッチョイ 9a05-pVLH) [sage] 2024/07/29(月) 15:25:34.30 ID:heyNGOtI0 なんでも、まずは改造から入るんだぜ こうですか、うんたぶんこう http://mevius.5ch.net/test/read.cgi/tech/1698705458/378
379: デフォルトの名無しさん (ワッチョイ 4132-nuT0) [sage] 2024/07/29(月) 19:25:02.89 ID:cQQT2a1I0 C++ には未規定がやたらたくさんあるんだ。 実際の挙動から仕様を想像しようとすると意味不明でグダグダやねん。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/379
380: デフォルトの名無しさん (ブーイモ MM9a-N8l3) [sage] 2024/07/29(月) 20:07:37.15 ID:Nl7D5VelM ネットでいくらでも勉強できるだろ 書籍なんかいらん http://mevius.5ch.net/test/read.cgi/tech/1698705458/380
381: デフォルトの名無しさん (ワッチョイ aa3e-cE1m) [sage] 2024/07/29(月) 20:36:26.35 ID:9/o4+28+0 結局ライブラリが重要だから、作りたいアプリで流行っているライブラリの入門をやるのがいい。 作りたいアプリそのものじゃなくても、類似アプリを作るのはやる気に繋がる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/381
382: デフォルトの名無しさん (オッペケ Sr05-viEi) [sage] 2024/07/29(月) 22:02:41.02 ID:8hMQwTW/r >>377 github にあがってるやつを、理解しようとして、助けになる本は、結局ない希ガス 実際、実践的なものがないので、文法理解で終わってしまうという https://github.com/TadaoYamaoka/cmajiang これ、再利用して、アプリを作りたいのだが http://mevius.5ch.net/test/read.cgi/tech/1698705458/382
383: デフォルトの名無しさん (ワッチョイ 4132-nuT0) [sage] 2024/07/29(月) 22:18:19.65 ID:cQQT2a1I0 >>382 言いたいことがわからん。 auto すら知らんかったということは文法もまだ十分に理解してないってことだろ? 文法が分かったら読めばいいだけなんだから何の本が必要なんだ? http://mevius.5ch.net/test/read.cgi/tech/1698705458/383
384: デフォルトの名無しさん (ワッチョイ 0168-qw7+) [sage] 2024/07/29(月) 23:36:56.61 ID:7XbSB18u0 >>382 立直麻雀のシミュレーターなら mjx の方がいいんじゃないかな? マイクロソフトで麻雀 AI Suphx の開発に携わってた人が作ったシミュレーターで 動作検証も天鳳の牌譜で実施したらしい https://github.com/mjx-project/mjx 他のシミュレーターだと - libriichi (Rust製 麻雀 AI Mortal に付属 天鳳ルール準拠 AGPL) https://github.com/Equim-chan/Mortal - kanachan.simulation (C++製 麻雀AI kanachan に付属 雀魂ルール準拠 MITL) h
ttps://github.com/Cryolite/kanachan/tree/v2 とかも参考になると思う 作りたいアプリの内容がわからないけど ネット麻雀を作りたいなら cmajiang の元ネタの電脳麻将 https://github.com/kobalab/Majiang https://kobalab.net/majiang/ AI 用の対戦シミュレーターなら mjai.app https://github.com/smly/mjai.app https://mjai.app/ が参考になりそう http://mevius.5ch.net/test/read.cgi/tech/1698705458/384
385: デフォルトの名無しさん (ワッチョイ 0168-qw7+) [sage] 2024/07/29(月) 23:43:38.11 ID:7XbSB18u0 >>382 書くのを忘れてた cmajiang の元ネタ majiang-core は作者が解説本を出してる 実際買ってみたけど、やっぱりソースコードだけ読むより分かりやすい https://www.shuwasystem.co.jp/book/9784798067889.html ブログでも解説されてるけど、お目当ての記事を探すのが大変だし本の方が見やすいと思った https://blog.kobalab.net/ http://mevius.5ch.net/test/read.cgi/tech/1698705458/385
386: デフォルトの名無しさん (ワッチョイ bdf0-+IYp) [sage] 2024/07/30(火) 12:23:26.36 ID:8UDCP+we0 >>379 未規定というか、C++11よりも古い規格のは、古参でないと扱いが難しいからね そういう古い規格のものが仕事で入ってい来たりすると新人は頭悩ますかもしれんね 03~11まで結構間に空いてるしね http://mevius.5ch.net/test/read.cgi/tech/1698705458/386
387: デフォルトの名無しさん (ワッチョイ 5d01-viEi) [sage] 2024/07/30(火) 23:52:38.43 ID:KT8SFJ0h0 >>385 はい、 すべて、既読です make, pybind11 とか入ってて、 デバッグビルド、わかりませんorz http://mevius.5ch.net/test/read.cgi/tech/1698705458/387
388: デフォルトの名無しさん (ワッチョイ 1bef-BWtz) [sage] 2024/08/04(日) 06:24:46.59 ID:WlfSsbJh0 ラムダ式が渡された側って、キャプチャの内容をチェックしたりできないのでしょうか。 例えば以下の例で、funcA()の中でfの中のthisをチェックして挙動を変えたりとか? そういうことをしたいなら、ラムダの引数で渡したりすべきでしょうか? #include <iostream> class A { public: void funcA(const std::function<void(int)>& f, int a) { f(a); // can I check 'this' (B class) in f? }; }; class B { public: void print
(int b) { A objA; objA.funcA([this](int i) { std::cout << "val = " << i << "\n"; }, b); } }; int main(void) { B objB; objB.print(2); } http://mevius.5ch.net/test/read.cgi/tech/1698705458/388
389: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-NesV) [sage] 2024/08/04(日) 10:12:57.69 ID:w7HjtqNP0 >>388 キャプチャした変数はラムダ式の中で使う以外の方法ではアクセスできない。 どのような方法で解決すべきかはそれをしようとする意図によるのでなんとも言えない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/389
390: デフォルトの名無しさん (ワッチョイ a94a-ImVy) [] 2024/08/04(日) 14:50:32.12 ID:ao1w9dwD0 それはラムダ式を使う理由とズレてるな A側で判定が必要なものならラムダ式の引数もしくはfuncAの引数で渡すべき A側は受け取るものを「intをひとつ受け取ってvoidを出力する関数」として抽象化してるんだから、それ以外のことは知れないし、知るべきではない Aは渡された関数が何であろうとintを一つ渡すだけで、その詳細 (関数がどのような値や参照をキャプチャしてるのか、渡した引数がどのように使われるのか) には触れられない ラムダ式を使うのは
このような抽象化が目的のはずだから、キャプチャした値を知りたいというのは用途から外れるかと思う http://mevius.5ch.net/test/read.cgi/tech/1698705458/390
391: デフォルトの名無しさん (ワッチョイ 9b72-3sGu) [sage] 2024/08/04(日) 18:55:04.35 ID:knGBcNlu0 なんか最近自分でで適切なインターフェースを定義して使うって発想がなくなってる気がする ひたすらありものを繋ぐだけで作り切るみたいな http://mevius.5ch.net/test/read.cgi/tech/1698705458/391
392: デフォルトの名無しさん (ワッチョイ c1f0-3TXu) [sage] 2024/08/04(日) 19:21:38.37 ID:oxQURbTu0 仕組みを追求することをせずにどっかから完成した㌬をドッキングするだけの作業は情報収集力さえあれば組み込み系の作業員でもできるし己のチカラにはならんのよな で、いろんなもの付け合わせていった結果、とんでもない容量のものが出来上がる上におまえそれメンテとかどうするんだよって方向に走ってって…あとは想像のとおりに http://mevius.5ch.net/test/read.cgi/tech/1698705458/392
393: デフォルトの名無しさん (ブーイモ MM8b-3sGu) [sage] 2024/08/04(日) 19:54:18.08 ID:wSg2UiB1M オブジェクト指向オワコン論からの風潮 http://mevius.5ch.net/test/read.cgi/tech/1698705458/393
394: デフォルトの名無しさん (ワッチョイ 1320-cRFB) [sage] 2024/08/04(日) 21:00:47.00 ID:YVKn/U480 なんでオワコンなの? http://mevius.5ch.net/test/read.cgi/tech/1698705458/394
395: デフォルトの名無しさん (ワッチョイ c1f0-3TXu) [sage] 2024/08/06(火) 01:29:43.68 ID:DDRjgUjC0 全然関係ないよな 取って貼っ付ける行為とオブジェクト指向は 全体の概要設計を把握してメンテ出来ていれば何の問題もない http://mevius.5ch.net/test/read.cgi/tech/1698705458/395
396: 青木康善 (ワッチョイ 59d4-ANSA) [] 2024/08/07(水) 04:36:25.01 ID:S6qXQ6lv0 素晴らしいなあみなさん。早すぎる!C plus plusは! http://mevius.5ch.net/test/read.cgi/tech/1698705458/396
397: デフォルトの名無しさん (ワッチョイ 5347-eg/E) [] 2024/08/07(水) 09:54:05.95 ID:+pgWMXtY0 JavaはCの20倍速いを知らん人か http://mevius.5ch.net/test/read.cgi/tech/1698705458/397
398: デフォルトの名無しさん (アウアウエー Sa23-LX2u) [] 2024/08/07(水) 17:07:58.21 ID:RPpAsXPKa >>391-392 チェンジニアをチェンジ >>395 オブジェクト指向でもクラスライブラリを造る側とただ使う側では理解度に雲泥の差がある http://mevius.5ch.net/test/read.cgi/tech/1698705458/398
399: 青木康善 (ワッチョイ 0bc8-ANSA) [] 2024/08/08(木) 00:15:58.93 ID:Qfze0mfg0 マジっすか?Cの20倍?しかし、専門学校の先生に、青木!バカもん!プログラミング言語Cが一冊で事足りる、と言われても、高校数学でつまづいて大鬱病になったんで、問題が解けない。。。有隣堂本店さんで、リッチーの本置いているから、いつか買います! http://mevius.5ch.net/test/read.cgi/tech/1698705458/399
400: デフォルトの名無しさん (ワッチョイ 31fe-/5UW) [sage] 2024/08/08(木) 04:05:43.03 ID:G3QDAupS0 今のANSI対応版は易しくなってると思うけどな。 不安ならアンサーブックとセットで買えば良いベ http://mevius.5ch.net/test/read.cgi/tech/1698705458/400
401: デフォルトの名無しさん (ブーイモ MM33-DGdp) [sage] 2024/08/08(木) 16:07:46.41 ID:fgfi2g+JM VMのオーバーヘッドがあるのに20倍って? あるいは20倍時間が掛かる? http://mevius.5ch.net/test/read.cgi/tech/1698705458/401
402: 青木康善 (ワッチョイ 31e4-ANSA) [] 2024/08/09(金) 13:02:28.92 ID:FZEpuz0a0 いや、プログミング言語は、駿台電子は、国語の倒置法なんです。夜間の一年で、javaからで、二年でCなんです。いや、アンサーブックは、池袋ジュンク堂本店さんには、置いてなかったような。。。。。ありがたいというか、ビックリ。。。。マジか。。。機械語を仕事でプログラミングしていた先生が、喫煙所で、青木、お前、一つのことを本当に深く考えたことがあるか?と質問してくれた恩師なんです。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/402
403: デフォルトの名無しさん (ワッチョイ 5384-eg/E) [] 2024/08/10(土) 12:16:45.89 ID:xFKQiXk00 スカイネットの誕生日 http://mevius.5ch.net/test/read.cgi/tech/1698705458/403
404: デフォルトの名無しさん (スフッ Sd33-QylA) [] 2024/08/10(土) 23:52:09.93 ID:oQf4NdPPd 御巣鷹山ノボレ http://mevius.5ch.net/test/read.cgi/tech/1698705458/404
405: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 08:35:54.88 ID:yYuYqoCz0 すみません。教えて下さい。 template<class T, class U>void (T& x, const U& y) { x=y; ... } double ←complex<double> の代入がコンパイルエラーとなるconceptの書き方あるんでしょうか? complex<double> ← doubleの代入ではエラーが出てほしくないです。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/405
406: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 09:05:25.59 ID:yYuYqoCz0 あ、上では関数名fが抜けてましたね.concept使わずとも template<class T> void f(complex<T>& x, const T& y)とすればいいでしょうけど、 y=xのときはどうかとか、あるいは complex<double>←float の代入はokにしたいとか、 いろいろ考えているとテンプレート関数なのに関数のオーバーロードが増えてしまって面倒だなと思ったものですから。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/406
407: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 09:23:02.26 ID:yYuYqoCz0 y=xのときは忘れてください。(f(complex<T>& y, const T& x)とすればいいだけ)。どういう状況のためにconceptが必要なのか要点がまとまっていませんね。失礼しました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/407
408: デフォルトの名無しさん (ワッチョイ 7ff0-aWDb) [sage] 2024/08/24(土) 09:53:34.49 ID:PPcTgFGr0 conceptで無理やりくくるよりか、static_assertのほうが楽そう template<class T, class U>void f(T& x, const U& y) { static_assert(std::is_same<double,T>::value&&std::is_same<complex<T>,U>::value,"絶対にゆるさない!絶対ニダ!!"); x=y; ... } http://mevius.5ch.net/test/read.cgi/tech/1698705458/408
409: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 11:11:32.60 ID:yYuYqoCz0 && は右辺値参照ではなくてandの意味なんですね。std::is_same<double,T>はdouble型とT型が一致するかどうかを調べるヘルパー変数テンプレート、::value は trueかfalseのいずれかの値をとる定数ですか。static_assertは自分でエラーメッセージを作れるのがいいですね。完全にわかっていないですが、勉強します。ヒントありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/409
410: デフォルトの名無しさん (ワッチョイ 1f23-dwWB) [sage] 2024/08/24(土) 11:44:22.45 ID:6PXbzil00 最近、初心者にいきなり右辺値参照とかテンプレート教える風潮は良くないと思うんだよなぁ・・・論理andとごっちゃになってるやんけ ともあれis_same自体は構造体で、中にあるvalueは定数値やで 変数テンプレートはis_same_vの方。利便性(::value書くのがめんどい)のために用意されてるだけ static_assertの第一引数(bool)に条件式を与えてるんだが、間違ってる static_assert(!(std::is_same<double,T>::value&&std::is_same<complex<
T>,U>::value),"絶対にゆるさない!絶対ニダ!!"); http://mevius.5ch.net/test/read.cgi/tech/1698705458/410
411: デフォルトの名無しさん (ワッチョイ 7ff0-aWDb) [sage] 2024/08/24(土) 12:20:38.61 ID:PPcTgFGr0 !抜けてたわ スマソ http://mevius.5ch.net/test/read.cgi/tech/1698705458/411
412: デフォルトの名無しさん (ワッチョイ 7ff0-aWDb) [sage] 2024/08/24(土) 12:40:45.95 ID:PPcTgFGr0 // こういう書き方もある if const_expr ( std::is_same<double,T>::value && std::is_same<complex<T>,U>::value ) { //許されない処理 static_assert(false,"許さんぞ!!"); }else { //正常処理 } http://mevius.5ch.net/test/read.cgi/tech/1698705458/412
413: デフォルトの名無しさん (ワッチョイ 7ff0-aWDb) [sage] 2024/08/24(土) 12:43:11.34 ID:PPcTgFGr0 また間違えたw × const_expr ● constexpr http://mevius.5ch.net/test/read.cgi/tech/1698705458/413
414: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 14:40:14.03 ID:yYuYqoCz0 いろいろとありがとうございます。参考になりました。 template<class T, class U> void f(T& x, U& y) { if constexpr ( !(std::is_same<T,double>::value && std::is_same<U, std::complex<T>>::value) ) static_assert(false,"ワシャ許さんぞ!!"); y=x; } template <class T, class U> void g(T& x, U& y) { static_assert( (std::is_same<T,double>::value && std::is_same<U, std::complex<T&
gt;>::v alue),"ワシャ許さんぞ!!" ); y=x; } int main() { using namespace std; double x=3.14159265358979; complex<double> z; f(x,z); g(z,x); // 順番変えたり、xをfloatにするとエラー cout<<z<<endl; しかし、コンパイル時にifがつかえるんですねえ。凄いな、constexpr http://mevius.5ch.net/test/read.cgi/tech/1698705458/414
415: デフォルトの名無しさん (ワッチョイ 7f78-/FHh) [] 2024/08/24(土) 15:09:12.28 ID:yYuYqoCz0 std::is_same<T,double>::valueの代わりにstd::same_as<T,double>でも良いみたいですね. http://mevius.5ch.net/test/read.cgi/tech/1698705458/415
416: デフォルトの名無しさん (ワッチョイ 9f63-rdaS) [sage] 2024/08/24(土) 16:42:04.52 ID:6x2BzwZB0 #ifdef NDEBUG /*pass*/ #else class dbg_complex { std::complex<double> m_complex; public: // std::complex<double> のメソッドのうち使うやつ同じシグネチャのメソッドを書き並べ、m_complexに移譲 ... private: dbg_complex(doble); // 禁止 }; #define complex dbg_compled #endif ※ 個人の感想です。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/416
417: デフォルトの名無しさん (ワッチョイ 9f63-rdaS) [sage] 2024/08/24(土) 16:48:40.66 ID:6x2BzwZB0 いちいち移譲せねばならないのはstd::complex<T>の継承が禁止されているためorz 実際デストラクタが十中八九virtualではないし、 >>416の最後の #define complex dbg_complex みたいな穴だらけの置換手段が嫌ならもうstd::complex<double> を普段からcomplexdbl という別名にすると決めてまう すると #ifdef NDEBUG using complexdbl = std::complex<double>; #else using complexdbl = dbg_complex; #endif で済む htt
p://mevius.5ch.net/test/read.cgi/tech/1698705458/417
418: デフォルトの名無しさん (ワッチョイ ff67-kHtd) [sage] 2024/08/24(土) 18:35:31.16 ID:BJpt+Mj00 >>412 これかなり新しめのコンパイラじゃないと動かないので注意 http://mevius.5ch.net/test/read.cgi/tech/1698705458/418
419: デフォルトの名無しさん (ワッチョイ 1f23-dwWB) [sage] 2024/08/24(土) 19:16:42.78 ID:6PXbzil00 行うべき解放処理が無い上ポリモーフィズムも不要なら、別にデストラクタがvirtualである必要は無いぞ このケースで継承すべきかどうかはまた別として http://mevius.5ch.net/test/read.cgi/tech/1698705458/419
420: デフォルトの名無しさん (ワッチョイ 1fbe-3Zrt) [] 2024/08/24(土) 23:53:59.32 ID:4DIR6G6I0 >>412 constexpr if が使える (= C++17以上) なら std::is_same<T, U>::value よりも std::is_same_v<T, U> を使う方がシンプルだと思う http://mevius.5ch.net/test/read.cgi/tech/1698705458/420
421: デフォルトの名無しさん (ワッチョイ 02f0-HfY5) [sage] 2024/08/25(日) 00:16:13.89 ID:LfSHCV3h0 ま、お好きなの使えいいんじゃないんすか~ こちとら例文示しているだけで極めているワケじゃないからぬ http://mevius.5ch.net/test/read.cgi/tech/1698705458/421
422: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-7Uxd) [] 2024/08/25(日) 01:15:32.96 ID:zZ+WMAII0 >>414 テンプレート型引数に require 節などで制約を付けた場合に制約に合致しなければオーバーロード解決候補から除外されるが、 static_assert や if constexpr での判定は解決が終わってテンプレートが実体化されるときに判定される。 つまり、より優先順位の低い候補に当てはめたいかもしれない場合は static_assert や if constexpr での判定をすべきではない。 状況によって使い分けがある。 それと >>418 が注意しているのは、テ
ンプレートはテンプレート引数に依存しない部分は実体化されなくても検証されるルールだから。 (Two phase name lookup について調べてみて。) つまり static_assert(false, ほにゃらら) と書いてあったらそのテンプレートが使われるかどうかに関係なく問答無用でエラーとして報告されていた。 新しい仕様では static_assert は実体化のときまで検証しないように挙動が改められたのだが、これは欠陥報告の形で問題提起されて過去の仕様に遡って修正されるので C++11 からこの仕様だったことになった。 新しいコンパイラでは C++11 を指定したときでも
新しい挙動になる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/422
423: デフォルトの名無しさん (ワッチョイ 0278-RCJX) [] 2024/08/25(日) 01:34:45.73 ID:GxcwnqZY0 まあ、そんな小難しいこと言われても。C++が嫌われる理由だわ http://mevius.5ch.net/test/read.cgi/tech/1698705458/423
424: デフォルトの名無しさん (ワッチョイ 02f0-HfY5) [sage] 2024/08/25(日) 02:05:31.18 ID:LfSHCV3h0 実体化ってどっちみちコンパイルするときにエラー発生するんだから結果かわらねぇだろバカがよう http://mevius.5ch.net/test/read.cgi/tech/1698705458/424
425: デフォルトの名無しさん (ワッチョイ c5a7-8JDH) [sage] 2024/08/25(日) 06:41:14.01 ID:n8ainESh0 static_assert(false, "")は何かしらダミーの値入れて回避してたけど修正されてたんだ、知らんかった http://mevius.5ch.net/test/read.cgi/tech/1698705458/425
426: デフォルトの名無しさん (ワッチョイ 02f0-HfY5) [sage] 2024/08/26(月) 00:27:52.82 ID:JWWBXqLI0 false効かないバカコンパイラはどうしようもないからどうにもならんか //requires を使った方法 template<class T, class U> requires(!(std::is_same_v<double,T>&&std::is_same_v<complex<T>,U>)) void f(T& x, const U& y) { x=y; ... } http://mevius.5ch.net/test/read.cgi/tech/1698705458/426
427: デフォルトの名無しさん (ワッチョイ 2963-G6Q9) [sage] 2024/08/27(火) 07:16:06.25 ID:NdPbjHCm0 特定の引数型についてテンプレート展開を阻止したいんなら 特殊化してその中にstatic_assert(false, "*** ERR ***")書いても昔は駄目だったんか恐ろしい…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/427
428: デフォルトの名無しさん (ワッチョイ 2963-G6Q9) [sage] 2024/08/27(火) 07:35:09.57 ID:NdPbjHCm0 しかしまあ特殊化してテンプレート引数の型Tについて 態と存在しないメソッドを呼ぶように書いたらその特殊化ケースについて展開を阻止できうる(適当 クラス内でint型定数が欲しかったら古き良き enum { ONE, TWO, THREE } で十分やし 同じことをやる手段を増やせば良いってもんじゃないぞPerlじゃあるまいし…… http://mevius.5ch.net/test/read.cgi/tech/1698705458/428
429: デフォルトの名無しさん (アウアウエー Sa0a-PBPb) [] 2024/08/27(火) 14:55:30.59 ID:oHcafaf7a perlの面白仕様 http://mevius.5ch.net/test/read.cgi/tech/1698705458/429
430: デフォルトの名無しさん (ワッチョイ c5f3-8JDH) [sage] 2024/08/27(火) 17:14:33.06 ID:K2iTXH930 まぁ普通にSFINAEなり=delete指定なりコンセプトなりでオーバーロード候補から外す方が利用者視点でいえば自然だな http://mevius.5ch.net/test/read.cgi/tech/1698705458/430
431: デフォルトの名無しさん (ワッチョイ 0278-RCJX) [] 2024/08/27(火) 17:33:30.75 ID:K7dNHCWQ0 #include <iostream> #include <complex> template <class T> decltype(auto) f(T x) { decltype(abs(std::declval<T>())) w; w=abs(x); return w; } int main() { using namespace std; cout<<f(-1) << endl; cout<<f(2.f)<< endl; complex<double> z=complex<double>(1.0,1.0); cout<<f(z)<<endl; cin.get(); return 0; } いちかばちかでやったら、通りました。abs! Wh
o are you? sizeof演算子と同じくコンパイル時に評価されるんですか? というか、地味だけど declval が凄い。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/431
432: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-7Uxd) [sage] 2024/08/27(火) 18:27:19.33 ID:WfqXHPCU0 >>431 sizeof や decltype のオペランドは評価されないということになってる。 だからその文脈で関数を使う場合でもその関数が定義されている必要はない。 (宣言だけあればよい。) 評価されないけど実体化は起こるのでそのへんの理屈は複雑でよくわからん。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/432
433: ころころ (ワッチョイ 0202-3rb6) [sage] 2024/08/30(金) 02:40:03.60 ID:qLymVnYK0 decval使ったコード始めてみたかも http://mevius.5ch.net/test/read.cgi/tech/1698705458/433
434: デフォルトの名無しさん (ワッチョイ 0220-Fpn2) [sage] 2024/08/30(金) 05:15:18.21 ID:ZIPlhev80 相互参照わっかんねぇ http://mevius.5ch.net/test/read.cgi/tech/1698705458/434
435: デフォルトの名無しさん (ワッチョイ 5f2f-+rLF) [] 2024/09/02(月) 12:36:59.33 ID:bqeYsc0k0 相互参照は必要ない 最近はウェブプログラマのほうが賢くなった すそ野が広がると質が良くなるらしい http://mevius.5ch.net/test/read.cgi/tech/1698705458/435
436: デフォルトの名無しさん (ワッチョイ bf0a-5+wm) [sage] 2024/09/02(月) 13:00:06.45 ID:Rco2Fp/20 必要ない理由ぐらい言ったら? http://mevius.5ch.net/test/read.cgi/tech/1698705458/436
437: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e732-CMA8) [sage] 2024/09/02(月) 14:42:22.37 ID:o+5p2SR60 プログラムの文法要素が相互参照になっている状況という意味? たとえば前方宣言が必要な場合とか。 それとも (実行時の) データ構造が相互参照ということ? たとえば循環構造の後始末のやり方がわからんとか。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/437
438: デフォルトの名無しさん (ワッチョイ 0701-+rOo) [sage] 2024/09/02(月) 19:52:42.06 ID:cn5uZ01w0 >>435 その「相互参照」って何? http://mevius.5ch.net/test/read.cgi/tech/1698705458/438
439: デフォルトの名無しさん (アウアウエー Sa1f-XN8b) [] 2024/09/05(木) 00:06:16.92 ID:/oUqYYg3a 相互参照も自己参照も一緒 自己参照なんて参照してるのは自己ではない ホントの意味での自己参照は循環参照 http://mevius.5ch.net/test/read.cgi/tech/1698705458/439
440: デフォルトの名無しさん (ワッチョイ 5f00-+rLF) [] 2024/09/05(木) 18:17:57.29 ID:xTcyjaky0 shared_ptrを使いたくなったら設計を見直すべき http://mevius.5ch.net/test/read.cgi/tech/1698705458/440
441: デフォルトの名無しさん (ワッチョイ 277f-jESi) [sage] 2024/09/06(金) 07:27:10.33 ID:Qb4sTpDj0 >>440 それは無理があるんじゃないのかね。 データ共有とかインターフェイス共有とか本質的に所有者が複数存在するオブジェクトはsharedptr使うべきかと。 設計ではモジュール間の疎結合・インターフェイスの汎用化を重視すべきで、そのためにはデータの共有方法が重要になる。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/441
442: デフォルトの名無しさん (ブーイモ MM7f-5+wm) [sage] 2024/09/06(金) 11:54:45.03 ID:onD85wsiM >>440 マルチスレッドセーフ考えたら使わざるを得ない場合は多々ある 言ってる意味がわからないならお前は経験不足 http://mevius.5ch.net/test/read.cgi/tech/1698705458/442
443: デフォルトの名無しさん (ワッチョイ e7df-UdSI) [] 2024/09/06(金) 22:35:55.77 ID:0hxwMUxG0 recurcive_mutexが欲しくなったら設計を見直したい、なら分かる気もする http://mevius.5ch.net/test/read.cgi/tech/1698705458/443
444: デフォルトの名無しさん (ワッチョイ 0753-60ma) [sage] 2024/09/07(土) 11:45:08.02 ID:Zy1zUumM0 C++11あたりから「生ポは使うな」みたいな極論で分かった気になってる思い上がった初心者が増えたからなぁ http://mevius.5ch.net/test/read.cgi/tech/1698705458/444
445: デフォルトの名無しさん (ワッチョイ bfac-jESi) [sage] 2024/09/07(土) 11:58:09.00 ID:UFsx2JaR0 >>444 生ポ使うよりかスマートポインタの参照を使った方がマシだったりするからなぁ。スマートポインタがスタックフレームにあるなら安全だし。 スタック変数専用仮引数とかあればもっと安全になるのになぁ。 仮引数の種類はもっとあっていいと思う。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/445
446: デフォルトの名無しさん (ワッチョイ 27ea-60ma) [sage] 2024/09/07(土) 16:26:14.57 ID:lSV8lU690 >>445 考え方にもよるだろうけど、確保も解放も所有もしない関数でスマポ受け取る必要あるか? 特定の用途で管理されている特定のポインタしか許容しない、という意図ならスマポの参照でもいいだろうけど、汎用性は無いよね 生ポ受け取る場合暗黙のキャストも効かないし http://mevius.5ch.net/test/read.cgi/tech/1698705458/446
447: デフォルトの名無しさん (ワッチョイ 8763-0xUn) [sage] 2024/09/07(土) 20:17:38.39 ID:Ci+xhqlU0 >>442 むしろshared_ptr<T>でスレッド間共有オブジェクトを保持するのは 生ポに対するshared_ptr<T>のメリットが無い…… 可能な限りスレッド間共有なんてことはやめてconstオブジェクトのコピーにするのが正義…… >>439 自己参照ではないが前方宣言が必須の例、 class TreeNode; class TreeNode { std::shared_ptr<TreeNode> m_pLeft; std::shared_ptr<TreeNode> m_pRight; public: TreeNode();
... }; http://mevius.5ch.net/test/read.cgi/tech/1698705458/447
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 555 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.046s