!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part164
https://mevius.5ch.net/test/read.cgi/tech/1683600652/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C++相談室 part165
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ efda-9b8G)
2023/10/31(火) 07:37:38.52ID:+ZyYyqMO0337デフォルトの名無しさん (ブーイモ MMde-FHn0)
2024/06/06(木) 15:53:22.90ID:Vp529NVwM フル手書き前提がくそださい
338デフォルトの名無しさん (ワッチョイ fe2c-7W3t)
2024/06/06(木) 19:13:19.37ID:FMMlTunO0 fstreamなんだったらfstreamのメンバで書くのがいいんじゃない
(1)は#include <ios>が要るし、
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
(2)は「basic_」の6文字×フラグの数 だけ長いし、
(3)も同様でありなおかつ>>337に従ったとき
use binary = std::fstream::binary;
use ibinary = std::ifstream::binary;
use obinary = std::ofstream::binary;
となってしまい、
どれもこれもコード量最小化原則的にビミョーなことに……
ていうかなんで同じことをするのに複数の書き方があるのかっていうか、
Perlじゃあるまいし……
340デフォルトの名無しさん (ワッチョイ d68d-vvKF)
2024/06/06(木) 23:54:13.70ID:7ZzCG2hU0 iostreamはまあしゃーない…
341デフォルトの名無しさん (ワッチョイ a97c-3xqL)
2024/06/07(金) 02:20:24.96ID:GhXFHGen0 C++の悪評の4割くらいはiostreamのせいだからな
342デフォルトの名無しさん (ワッチョイ a944-l7CW)
2024/06/07(金) 04:24:11.05ID:qf+nnTv50 ここでCmakeとNinjaについて聞くのダメ?
どーも関係がよくわからなくて?
どーも関係がよくわからなくて?
343はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:26:04.94ID:zM43Xr/H0 >>342
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
そういう雑多な話題のちょうどよいスレは見当たらんし、単発で終わる質問程度なら許容されると思うが……。
質問の内容が漠然としているなら丁寧な回答は得られないと思う。
「よくわからない」という状況になるときってのは大抵の場合に関連する前提知識が足りてないので
質問が連鎖的に発生してダラダラ続いたりするから。
344はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-zlCG)
2024/06/07(金) 05:36:24.41ID:zM43Xr/H0345デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/07(金) 13:37:29.47ID:kav19u0f0 copilotで補完でok
346デフォルトの名無しさん (ワッチョイ 6af0-AYul)
2024/06/07(金) 17:07:58.06ID:NFmVQMC40 バカの解決策
347デフォルトの名無しさん (ブーイモ MMea-FHn0)
2024/06/07(金) 21:12:45.28ID:70o6R+hDM また時代に取り残されるじじい
348デフォルトの名無しさん (ワッチョイ 1563-WQ8n)
2024/06/07(金) 21:48:19.45ID:ORLoeNdF0349デフォルトの名無しさん (ワッチョイ fee5-FHn0)
2024/06/08(土) 01:03:51.86ID:k3Jnk/Aj0 静的解析で文句言われる可能性あるからやめときな
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
頻発するならスニペット作ればいいだけ
そういう表面的なことにこだわる奴は三流
350デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 04:26:59.39ID:RJYm8+UN0 lldb v14.0.0 で正しくプロセスを実行できません
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
apt insrall でインストールしたもので, 環境はwsl 1 です
具体的には下のサイトのIssue Encountered:と全く同じ症状です
https://stackoverflow.com/questions/78275920/troubleshoot-lldb-on-ubuntu-wsl
改めて書きますと Hello World 表示だけのソースを clang でコンパイルし,
lldb で読み込み run させると
Process 20784 launched: '/home/Hustler/c++/move/move' (x86_64)
と表示されたまま応答がなくなり 放置すると(サイトでは強制終了させてるようですが)
Process 20784 exited with status = -1 (0xffffffff) lost connection
となってコマンド入力待ち状態となります
ちなみにプログラムはそのまま実行して正しく動作しますし gdb でも何の問題もありません
これに関して何か情報をお持ちの方いますか?
351デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 05:11:57.08ID:RJYm8+UN0 今やってみたのですが
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
lldb-14をuninstall(remove)し lldb-15をインストールしてみましたが
状況は改善しませんでした
352はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 15:07:14.43ID:bthWHIYm0 WSL1 は (ある程度) Linux 互換のシステムコールを windows 内に実装することで実現していて Linux カーネルそのものではないので色々と不足がある。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
(そのかわり Windows と親和性がある部分もある。)
WSL1 で用意してない Linux の機能に依存したアプリケーションは動かない。
まともな互換性が必要ならWSL2 を使いなさいという話なので手間をかけて WSL1 を積極的にはサポートしないと思う。
353デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 20:56:05.63ID:RJYm8+UN0354デフォルトの名無しさん (ワッチョイ 6363-vt9G)
2024/06/09(日) 21:14:14.41ID:VES2dE5O0 WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
ターゲット機を別にするとかWSL2にするとかじゃね?
ターゲット機を別にするとかWSL2にするとかじゃね?
355デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 21:36:35.88ID:RJYm8+UN0 >>354
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
>WSLはlldbが使うシステムコールが足りてないって昔から言われていたかと
なるほどTHXです
clang使ってなかったので全然わかりませんでした
動かないlldbもさんざんggったんだけど system call未実装にはたどり着けませんでした
ようやくすっきりしました
356はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-Oh5j)
2024/06/09(日) 22:04:05.34ID:bthWHIYm0 ざっとググってみた感じたと wsl1 では procfs が提供する情報が少ないのが lldb が動かない直接の原因みたいな数年前の情報は見つかる。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
内部構造がまるで違うはずなのに表面的なインターフェースは互換にするなんてのは無理のある話なので互換性が「ある程度」にとどまるのは仕方ない。
357デフォルトの名無しさん (ワッチョイ f344-7AaF)
2024/06/09(日) 22:18:48.29ID:RJYm8+UN0 んー
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
clangちょっと調べたかったんで
Visual Studioにclangインスコして調べますわ
できるならwslでやるのが手っ取り早いんですが
Q9550とQ9550sしか持ってないもんで
以来CPUの爆値上がりと最近の円の爆下がりで新しく組めてないんですわ
ダイサイズ変わらないのにCPU 3万ー> 10万とか購買意欲が萎える
358デフォルトの名無しさん (ブーイモ MM1f-vt9G)
2024/06/10(月) 18:15:47.68ID:bkv2YMA2M359350 (ワッチョイ f344-7AaF)
2024/06/10(月) 21:38:00.71ID:gvR5xwnw0 自己レスです
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
その後 Visual Studioのインストールオプションでclangを選択し
正しく動作することは確認したのですが...
今や誰でもロハで使えるインテルコンパイラがとっくの昔にllvm化されてたんですね
clangに拘りがなければ x86/x64のwin/linux/wsl は素直にopenAPI使っとくのが幸せかも.
ちなみにwsl 1にlinux版をインストールしましたが
コンパイラicxもデバッガgdb-opwnapiも何の問題もなく動いてます(今のところは)
なので
Visual Studio はインストールオプションのclang は外してもとに戻し
wsl は
>apt remove clang clang-15
>apt remove lldb lldb-15
しときました
360350 (ワッチョイ f344-7AaF)
2024/06/11(火) 06:20:17.73ID:Ip4/j3Hv0 ☓ openAPI
◯ oneAPI
◯ oneAPI
361あぼーん
NGNGあぼーん
362あぼーん
NGNGあぼーん
363デフォルトの名無しさん (ワッチョイ 43d7-pk1M)
2024/07/13(土) 19:06:26.39ID:Dtkl2SPB0 若者のBoost離れ
364デフォルトの名無しさん (ワッチョイ 0501-twcF)
2024/07/13(土) 19:56:34.01ID:vwgbCsGD0 と言いますと?
365デフォルトの名無しさん (ワッチョイ f5f9-pk1M)
2024/07/13(土) 21:42:42.00ID:Rh1MnFN10 VS17.10.xでBoostがビルドできなくなってるのに
誰も触れない
誰も触れない
366デフォルトの名無しさん (ワッチョイ f5f9-pk1M)
2024/07/13(土) 21:47:29.39ID:Rh1MnFN10 MSVC143から144に変わったせいでビルドできないらしいですよ
367デフォルトの名無しさん (ワッチョイ e91c-hIhh)
2024/07/16(火) 12:22:56.57ID:gS8T2k/f0 >>342
CMakeとNinjaはC++の話題なのでOKです
CMakeとNinjaはC++の話題なのでOKです
368デフォルトの名無しさん (ワッチョイ 4901-V77j)
2024/07/27(土) 17:57:44.53ID:KDd62vAV0 C++、
型の指定が、めんどい
速いぐらいしか、利点ないよな
型の指定が、めんどい
速いぐらいしか、利点ないよな
369デフォルトの名無しさん (ワッチョイ 7b95-4q6c)
2024/07/27(土) 20:53:02.50ID:eNksZtKQ0 顧客目線に立てない三流の感想
370デフォルトの名無しさん (ワッチョイ 4901-7phL)
2024/07/27(土) 21:03:15.66ID:zOSUCWw50 >>368
auto使えば?
auto使えば?
371デフォルトの名無しさん (ワッチョイ 1379-xel+)
2024/07/27(土) 23:40:34.69ID:iHlVB6Tw0 ランタイムに依存しない(し難い)のが最大の利点だろうに
さらに大抵のアーキテクチャには用意されてるからクロスプラットフォームの観点でもなんだかんだ最強なんだよ
むしろ最近はChatGPTが他の言語で書いたやつまで適当に書き直してくれるのもあって最強度がより高まってきてると感じるね
さらに大抵のアーキテクチャには用意されてるからクロスプラットフォームの観点でもなんだかんだ最強なんだよ
むしろ最近はChatGPTが他の言語で書いたやつまで適当に書き直してくれるのもあって最強度がより高まってきてると感じるね
372デフォルトの名無しさん (ワッチョイ 8e95-N8l3)
2024/07/28(日) 00:00:39.51ID:ePI6t8jD0 全く同意できんな
むしろ環境依存上等で使うのがC/C++だろ
パッケージシステムも標準がないしビルド環境もばらばら
どこが最強やねん
標準ライブラリで完結するようなしょぼいプログラムなら他の言語使ったほうが楽
むしろ環境依存上等で使うのがC/C++だろ
パッケージシステムも標準がないしビルド環境もばらばら
どこが最強やねん
標準ライブラリで完結するようなしょぼいプログラムなら他の言語使ったほうが楽
373デフォルトの名無しさん (ワッチョイ bdf0-+IYp)
2024/07/28(日) 00:11:55.23ID:4HqkcgMt0 型の指定のサンプル
GetProcAddressに変換をかけるマクロ
#define ENTRY_INTERFACE(api) api = (decltype(api)) GetProcAddress(hInst,"_INTERFACE_"#api)
ね?簡単でしょ?
GetProcAddressに変換をかけるマクロ
#define ENTRY_INTERFACE(api) api = (decltype(api)) GetProcAddress(hInst,"_INTERFACE_"#api)
ね?簡単でしょ?
374デフォルトの名無しさん (ワッチョイ 5d01-viEi)
2024/07/28(日) 12:00:20.72ID:x9q80Pnt0375デフォルトの名無しさん (ワッチョイ aa3e-cE1m)
2024/07/28(日) 17:36:32.24ID:9wLF96CX0 >>374
あとテンプレートを使ったダックタイプとかも便利。
あとテンプレートを使ったダックタイプとかも便利。
376デフォルトの名無しさん (オッペケ Sr05-viEi)
2024/07/28(日) 21:14:24.07ID:roXukc4Cr377デフォルトの名無しさん (ワッチョイ 4132-nuT0)
2024/07/29(月) 08:53:31.23ID:cQQT2a1I0 実践に入る前に言語の入門は読んだほうが良いと思う。
基礎を積まずに実践しようとするのは無謀。
基礎を積まずに実践しようとするのは無謀。
378デフォルトの名無しさん (ワッチョイ 9a05-pVLH)
2024/07/29(月) 15:25:34.30ID:heyNGOtI0 なんでも、まずは改造から入るんだぜ
こうですか、うんたぶんこう
こうですか、うんたぶんこう
379デフォルトの名無しさん (ワッチョイ 4132-nuT0)
2024/07/29(月) 19:25:02.89ID:cQQT2a1I0 C++ には未規定がやたらたくさんあるんだ。
実際の挙動から仕様を想像しようとすると意味不明でグダグダやねん。
実際の挙動から仕様を想像しようとすると意味不明でグダグダやねん。
380デフォルトの名無しさん (ブーイモ MM9a-N8l3)
2024/07/29(月) 20:07:37.15ID:Nl7D5VelM ネットでいくらでも勉強できるだろ
書籍なんかいらん
書籍なんかいらん
381デフォルトの名無しさん (ワッチョイ aa3e-cE1m)
2024/07/29(月) 20:36:26.35ID:9/o4+28+0 結局ライブラリが重要だから、作りたいアプリで流行っているライブラリの入門をやるのがいい。
作りたいアプリそのものじゃなくても、類似アプリを作るのはやる気に繋がる。
作りたいアプリそのものじゃなくても、類似アプリを作るのはやる気に繋がる。
382デフォルトの名無しさん (オッペケ Sr05-viEi)
2024/07/29(月) 22:02:41.02ID:8hMQwTW/r >>377
github にあがってるやつを、理解しようとして、助けになる本は、結局ない希ガス
実際、実践的なものがないので、文法理解で終わってしまうという
https://github.com/TadaoYamaoka/cmajiang
これ、再利用して、アプリを作りたいのだが
github にあがってるやつを、理解しようとして、助けになる本は、結局ない希ガス
実際、実践的なものがないので、文法理解で終わってしまうという
https://github.com/TadaoYamaoka/cmajiang
これ、再利用して、アプリを作りたいのだが
383デフォルトの名無しさん (ワッチョイ 4132-nuT0)
2024/07/29(月) 22:18:19.65ID:cQQT2a1I0384デフォルトの名無しさん (ワッチョイ 0168-qw7+)
2024/07/29(月) 23:36:56.61ID: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)
https://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/
が参考になりそう
立直麻雀のシミュレーターなら 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)
https://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/
が参考になりそう
385デフォルトの名無しさん (ワッチョイ 0168-qw7+)
2024/07/29(月) 23:43:38.11ID:7XbSB18u0 >>382
書くのを忘れてた
cmajiang の元ネタ majiang-core は作者が解説本を出してる
実際買ってみたけど、やっぱりソースコードだけ読むより分かりやすい
https://www.shuwasystem.co.jp/book/9784798067889.html
ブログでも解説されてるけど、お目当ての記事を探すのが大変だし本の方が見やすいと思った
https://blog.kobalab.net/
書くのを忘れてた
cmajiang の元ネタ majiang-core は作者が解説本を出してる
実際買ってみたけど、やっぱりソースコードだけ読むより分かりやすい
https://www.shuwasystem.co.jp/book/9784798067889.html
ブログでも解説されてるけど、お目当ての記事を探すのが大変だし本の方が見やすいと思った
https://blog.kobalab.net/
386デフォルトの名無しさん (ワッチョイ bdf0-+IYp)
2024/07/30(火) 12:23:26.36ID:8UDCP+we0 >>379
未規定というか、C++11よりも古い規格のは、古参でないと扱いが難しいからね
そういう古い規格のものが仕事で入ってい来たりすると新人は頭悩ますかもしれんね
03~11まで結構間に空いてるしね
未規定というか、C++11よりも古い規格のは、古参でないと扱いが難しいからね
そういう古い規格のものが仕事で入ってい来たりすると新人は頭悩ますかもしれんね
03~11まで結構間に空いてるしね
387デフォルトの名無しさん (ワッチョイ 5d01-viEi)
2024/07/30(火) 23:52:38.43ID:KT8SFJ0h0388デフォルトの名無しさん (ワッチョイ 1bef-BWtz)
2024/08/04(日) 06:24:46.59ID: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);
}
例えば以下の例で、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);
}
389はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a932-NesV)
2024/08/04(日) 10:12:57.69ID:w7HjtqNP0390デフォルトの名無しさん (ワッチョイ a94a-ImVy)
2024/08/04(日) 14:50:32.12ID:ao1w9dwD0 それはラムダ式を使う理由とズレてるな
A側で判定が必要なものならラムダ式の引数もしくはfuncAの引数で渡すべき
A側は受け取るものを「intをひとつ受け取ってvoidを出力する関数」として抽象化してるんだから、それ以外のことは知れないし、知るべきではない
Aは渡された関数が何であろうとintを一つ渡すだけで、その詳細 (関数がどのような値や参照をキャプチャしてるのか、渡した引数がどのように使われるのか) には触れられない
ラムダ式を使うのはこのような抽象化が目的のはずだから、キャプチャした値を知りたいというのは用途から外れるかと思う
A側で判定が必要なものならラムダ式の引数もしくはfuncAの引数で渡すべき
A側は受け取るものを「intをひとつ受け取ってvoidを出力する関数」として抽象化してるんだから、それ以外のことは知れないし、知るべきではない
Aは渡された関数が何であろうとintを一つ渡すだけで、その詳細 (関数がどのような値や参照をキャプチャしてるのか、渡した引数がどのように使われるのか) には触れられない
ラムダ式を使うのはこのような抽象化が目的のはずだから、キャプチャした値を知りたいというのは用途から外れるかと思う
391デフォルトの名無しさん (ワッチョイ 9b72-3sGu)
2024/08/04(日) 18:55:04.35ID:knGBcNlu0 なんか最近自分でで適切なインターフェースを定義して使うって発想がなくなってる気がする
ひたすらありものを繋ぐだけで作り切るみたいな
ひたすらありものを繋ぐだけで作り切るみたいな
392デフォルトの名無しさん (ワッチョイ c1f0-3TXu)
2024/08/04(日) 19:21:38.37ID:oxQURbTu0 仕組みを追求することをせずにどっかから完成した㌬をドッキングするだけの作業は情報収集力さえあれば組み込み系の作業員でもできるし己のチカラにはならんのよな
で、いろんなもの付け合わせていった結果、とんでもない容量のものが出来上がる上におまえそれメンテとかどうするんだよって方向に走ってって…あとは想像のとおりに
で、いろんなもの付け合わせていった結果、とんでもない容量のものが出来上がる上におまえそれメンテとかどうするんだよって方向に走ってって…あとは想像のとおりに
393デフォルトの名無しさん (ブーイモ MM8b-3sGu)
2024/08/04(日) 19:54:18.08ID:wSg2UiB1M オブジェクト指向オワコン論からの風潮
394デフォルトの名無しさん (ワッチョイ 1320-cRFB)
2024/08/04(日) 21:00:47.00ID:YVKn/U480 なんでオワコンなの?
395デフォルトの名無しさん (ワッチョイ c1f0-3TXu)
2024/08/06(火) 01:29:43.68ID:DDRjgUjC0 全然関係ないよな
取って貼っ付ける行為とオブジェクト指向は
全体の概要設計を把握してメンテ出来ていれば何の問題もない
取って貼っ付ける行為とオブジェクト指向は
全体の概要設計を把握してメンテ出来ていれば何の問題もない
396青木康善 (ワッチョイ 59d4-ANSA)
2024/08/07(水) 04:36:25.01ID:S6qXQ6lv0 素晴らしいなあみなさん。早すぎる!C plus plusは!
397デフォルトの名無しさん (ワッチョイ 5347-eg/E)
2024/08/07(水) 09:54:05.95ID:+pgWMXtY0 JavaはCの20倍速いを知らん人か
398デフォルトの名無しさん (アウアウエー Sa23-LX2u)
2024/08/07(水) 17:07:58.21ID:RPpAsXPKa399青木康善 (ワッチョイ 0bc8-ANSA)
2024/08/08(木) 00:15:58.93ID:Qfze0mfg0 マジっすか?Cの20倍?しかし、専門学校の先生に、青木!バカもん!プログラミング言語Cが一冊で事足りる、と言われても、高校数学でつまづいて大鬱病になったんで、問題が解けない。。。有隣堂本店さんで、リッチーの本置いているから、いつか買います!
400デフォルトの名無しさん (ワッチョイ 31fe-/5UW)
2024/08/08(木) 04:05:43.03ID:G3QDAupS0 今のANSI対応版は易しくなってると思うけどな。
不安ならアンサーブックとセットで買えば良いベ
不安ならアンサーブックとセットで買えば良いベ
401デフォルトの名無しさん (ブーイモ MM33-DGdp)
2024/08/08(木) 16:07:46.41ID:fgfi2g+JM VMのオーバーヘッドがあるのに20倍って?
あるいは20倍時間が掛かる?
あるいは20倍時間が掛かる?
402青木康善 (ワッチョイ 31e4-ANSA)
2024/08/09(金) 13:02:28.92ID:FZEpuz0a0 いや、プログミング言語は、駿台電子は、国語の倒置法なんです。夜間の一年で、javaからで、二年でCなんです。いや、アンサーブックは、池袋ジュンク堂本店さんには、置いてなかったような。。。。。ありがたいというか、ビックリ。。。。マジか。。。機械語を仕事でプログラミングしていた先生が、喫煙所で、青木、お前、一つのことを本当に深く考えたことがあるか?と質問してくれた恩師なんです。
403デフォルトの名無しさん (ワッチョイ 5384-eg/E)
2024/08/10(土) 12:16:45.89ID:xFKQiXk00 スカイネットの誕生日
404デフォルトの名無しさん (スフッ Sd33-QylA)
2024/08/10(土) 23:52:09.93ID:oQf4NdPPd 御巣鷹山ノボレ
405デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 08:35:54.88ID:yYuYqoCz0 すみません。教えて下さい。
template<class T, class U>void (T& x, const U& y)
{
x=y;
...
}
double ←complex<double> の代入がコンパイルエラーとなるconceptの書き方あるんでしょうか?
complex<double> ← doubleの代入ではエラーが出てほしくないです。
template<class T, class U>void (T& x, const U& y)
{
x=y;
...
}
double ←complex<double> の代入がコンパイルエラーとなるconceptの書き方あるんでしょうか?
complex<double> ← doubleの代入ではエラーが出てほしくないです。
406デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 09:05:25.59ID:yYuYqoCz0 あ、上では関数名fが抜けてましたね.concept使わずとも
template<class T> void f(complex<T>& x, const T& y)とすればいいでしょうけど、
y=xのときはどうかとか、あるいは complex<double>←float の代入はokにしたいとか、
いろいろ考えているとテンプレート関数なのに関数のオーバーロードが増えてしまって面倒だなと思ったものですから。
template<class T> void f(complex<T>& x, const T& y)とすればいいでしょうけど、
y=xのときはどうかとか、あるいは complex<double>←float の代入はokにしたいとか、
いろいろ考えているとテンプレート関数なのに関数のオーバーロードが増えてしまって面倒だなと思ったものですから。
407デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 09:23:02.26ID:yYuYqoCz0 y=xのときは忘れてください。(f(complex<T>& y, const T& x)とすればいいだけ)。どういう状況のためにconceptが必要なのか要点がまとまっていませんね。失礼しました。
408デフォルトの名無しさん (ワッチョイ 7ff0-aWDb)
2024/08/24(土) 09:53:34.49ID: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;
...
}
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;
...
}
409デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 11:11:32.60ID:yYuYqoCz0 && は右辺値参照ではなくてandの意味なんですね。std::is_same<double,T>はdouble型とT型が一致するかどうかを調べるヘルパー変数テンプレート、::value は trueかfalseのいずれかの値をとる定数ですか。static_assertは自分でエラーメッセージを作れるのがいいですね。完全にわかっていないですが、勉強します。ヒントありがとうございました。
410デフォルトの名無しさん (ワッチョイ 1f23-dwWB)
2024/08/24(土) 11:44:22.45ID: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),"絶対にゆるさない!絶対ニダ!!");
ともあれ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),"絶対にゆるさない!絶対ニダ!!");
411デフォルトの名無しさん (ワッチョイ 7ff0-aWDb)
2024/08/24(土) 12:20:38.61ID:PPcTgFGr0 !抜けてたわ
スマソ
スマソ
412デフォルトの名無しさん (ワッチョイ 7ff0-aWDb)
2024/08/24(土) 12:40:45.95ID:PPcTgFGr0 // こういう書き方もある
if const_expr ( std::is_same<double,T>::value && std::is_same<complex<T>,U>::value ) {
//許されない処理
static_assert(false,"許さんぞ!!");
}else {
//正常処理
}
if const_expr ( std::is_same<double,T>::value && std::is_same<complex<T>,U>::value ) {
//許されない処理
static_assert(false,"許さんぞ!!");
}else {
//正常処理
}
413デフォルトの名無しさん (ワッチョイ 7ff0-aWDb)
2024/08/24(土) 12:43:11.34ID:PPcTgFGr0 また間違えたw
× const_expr
● constexpr
× const_expr
● constexpr
414デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 14:40:14.03ID: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>>::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
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>>::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
415デフォルトの名無しさん (ワッチョイ 7f78-/FHh)
2024/08/24(土) 15:09:12.28ID:yYuYqoCz0 std::is_same<T,double>::valueの代わりにstd::same_as<T,double>でも良いみたいですね.
416デフォルトの名無しさん (ワッチョイ 9f63-rdaS)
2024/08/24(土) 16:42:04.52ID: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
※ 個人の感想です。
/*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
※ 個人の感想です。
417デフォルトの名無しさん (ワッチョイ 9f63-rdaS)
2024/08/24(土) 16:48:40.66ID: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
で済む
実際デストラクタが十中八九virtualではないし、
>>416の最後の
#define complex dbg_complex
みたいな穴だらけの置換手段が嫌ならもうstd::complex<double> を普段からcomplexdbl という別名にすると決めてまう
すると
#ifdef NDEBUG
using complexdbl = std::complex<double>;
#else
using complexdbl = dbg_complex;
#endif
で済む
418デフォルトの名無しさん (ワッチョイ ff67-kHtd)
2024/08/24(土) 18:35:31.16ID:BJpt+Mj00 >>412
これかなり新しめのコンパイラじゃないと動かないので注意
これかなり新しめのコンパイラじゃないと動かないので注意
419デフォルトの名無しさん (ワッチョイ 1f23-dwWB)
2024/08/24(土) 19:16:42.78ID:6PXbzil00 行うべき解放処理が無い上ポリモーフィズムも不要なら、別にデストラクタがvirtualである必要は無いぞ
このケースで継承すべきかどうかはまた別として
このケースで継承すべきかどうかはまた別として
420デフォルトの名無しさん (ワッチョイ 1fbe-3Zrt)
2024/08/24(土) 23:53:59.32ID:4DIR6G6I0 >>412
constexpr if が使える (= C++17以上) なら std::is_same<T, U>::value よりも std::is_same_v<T, U> を使う方がシンプルだと思う
constexpr if が使える (= C++17以上) なら std::is_same<T, U>::value よりも std::is_same_v<T, U> を使う方がシンプルだと思う
421デフォルトの名無しさん (ワッチョイ 02f0-HfY5)
2024/08/25(日) 00:16:13.89ID:LfSHCV3h0 ま、お好きなの使えいいんじゃないんすか~
こちとら例文示しているだけで極めているワケじゃないからぬ
こちとら例文示しているだけで極めているワケじゃないからぬ
422はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-7Uxd)
2024/08/25(日) 01:15:32.96ID: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 を指定したときでも新しい挙動になる。
テンプレート型引数に require 節などで制約を付けた場合に制約に合致しなければオーバーロード解決候補から除外されるが、 static_assert や if constexpr での判定は解決が終わってテンプレートが実体化されるときに判定される。
つまり、より優先順位の低い候補に当てはめたいかもしれない場合は static_assert や if constexpr での判定をすべきではない。
状況によって使い分けがある。
それと >>418 が注意しているのは、テンプレートはテンプレート引数に依存しない部分は実体化されなくても検証されるルールだから。
(Two phase name lookup について調べてみて。)
つまり static_assert(false, ほにゃらら) と書いてあったらそのテンプレートが使われるかどうかに関係なく問答無用でエラーとして報告されていた。
新しい仕様では static_assert は実体化のときまで検証しないように挙動が改められたのだが、これは欠陥報告の形で問題提起されて過去の仕様に遡って修正されるので C++11 からこの仕様だったことになった。
新しいコンパイラでは C++11 を指定したときでも新しい挙動になる。
423デフォルトの名無しさん (ワッチョイ 0278-RCJX)
2024/08/25(日) 01:34:45.73ID:GxcwnqZY0 まあ、そんな小難しいこと言われても。C++が嫌われる理由だわ
424デフォルトの名無しさん (ワッチョイ 02f0-HfY5)
2024/08/25(日) 02:05:31.18ID:LfSHCV3h0 実体化ってどっちみちコンパイルするときにエラー発生するんだから結果かわらねぇだろバカがよう
425デフォルトの名無しさん (ワッチョイ c5a7-8JDH)
2024/08/25(日) 06:41:14.01ID:n8ainESh0 static_assert(false, "")は何かしらダミーの値入れて回避してたけど修正されてたんだ、知らんかった
426デフォルトの名無しさん (ワッチョイ 02f0-HfY5)
2024/08/26(月) 00:27:52.82ID: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;
...
}
//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;
...
}
427デフォルトの名無しさん (ワッチョイ 2963-G6Q9)
2024/08/27(火) 07:16:06.25ID:NdPbjHCm0 特定の引数型についてテンプレート展開を阻止したいんなら
特殊化してその中にstatic_assert(false, "*** ERR ***")書いても昔は駄目だったんか恐ろしい……
特殊化してその中にstatic_assert(false, "*** ERR ***")書いても昔は駄目だったんか恐ろしい……
428デフォルトの名無しさん (ワッチョイ 2963-G6Q9)
2024/08/27(火) 07:35:09.57ID:NdPbjHCm0 しかしまあ特殊化してテンプレート引数の型Tについて
態と存在しないメソッドを呼ぶように書いたらその特殊化ケースについて展開を阻止できうる(適当
クラス内でint型定数が欲しかったら古き良き enum { ONE, TWO, THREE } で十分やし
同じことをやる手段を増やせば良いってもんじゃないぞPerlじゃあるまいし……
態と存在しないメソッドを呼ぶように書いたらその特殊化ケースについて展開を阻止できうる(適当
クラス内でint型定数が欲しかったら古き良き enum { ONE, TWO, THREE } で十分やし
同じことをやる手段を増やせば良いってもんじゃないぞPerlじゃあるまいし……
429デフォルトの名無しさん (アウアウエー Sa0a-PBPb)
2024/08/27(火) 14:55:30.59ID:oHcafaf7a perlの面白仕様
430デフォルトの名無しさん (ワッチョイ c5f3-8JDH)
2024/08/27(火) 17:14:33.06ID:K2iTXH930 まぁ普通にSFINAEなり=delete指定なりコンセプトなりでオーバーロード候補から外す方が利用者視点でいえば自然だな
431デフォルトの名無しさん (ワッチョイ 0278-RCJX)
2024/08/27(火) 17:33:30.75ID: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! Who are you? sizeof演算子と同じくコンパイル時に評価されるんですか? というか、地味だけど declval が凄い。
#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! Who are you? sizeof演算子と同じくコンパイル時に評価されるんですか? というか、地味だけど declval が凄い。
432はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4d32-7Uxd)
2024/08/27(火) 18:27:19.33ID:WfqXHPCU0 >>431
sizeof や decltype のオペランドは評価されないということになってる。
だからその文脈で関数を使う場合でもその関数が定義されている必要はない。 (宣言だけあればよい。)
評価されないけど実体化は起こるのでそのへんの理屈は複雑でよくわからん。
sizeof や decltype のオペランドは評価されないということになってる。
だからその文脈で関数を使う場合でもその関数が定義されている必要はない。 (宣言だけあればよい。)
評価されないけど実体化は起こるのでそのへんの理屈は複雑でよくわからん。
434デフォルトの名無しさん (ワッチョイ 0220-Fpn2)
2024/08/30(金) 05:15:18.21ID:ZIPlhev80 相互参照わっかんねぇ
435デフォルトの名無しさん (ワッチョイ 5f2f-+rLF)
2024/09/02(月) 12:36:59.33ID:bqeYsc0k0 相互参照は必要ない
最近はウェブプログラマのほうが賢くなった
すそ野が広がると質が良くなるらしい
最近はウェブプログラマのほうが賢くなった
すそ野が広がると質が良くなるらしい
436デフォルトの名無しさん (ワッチョイ bf0a-5+wm)
2024/09/02(月) 13:00:06.45ID:Rco2Fp/20 必要ない理由ぐらい言ったら?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 今猛烈に食べたいもの挙げてけwwwwwwww
- 橋下徹「口だけ番長の日本が中国に喧嘩負け。なんとカッコ悪い日本か!」高市にバチーン!✴ [153490809]
- 【高市早苗】習近平激怒か [115996789]
- 🏡
- 今猛烈に食べたいもの挙げてけwwwwwwww
