※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/
テンプレここまで
C++相談室 part154
レス数が1000を超えています。これ以上書き込みはできません。
2021/01/08(金) 17:54:00.55ID:0DW9z0rL
2デフォルトの名無しさん
2021/01/08(金) 17:56:28.28ID:GG1sOSQC おつかれー
2021/01/08(金) 19:34:40.54ID:hBRzO/B9
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
2021/01/08(金) 19:38:13.11ID:8XBZO/70
operator->*を好き勝手にオーバーロードするのは
C++厨二病なら誰しもが通る道だと思ってる
C++厨二病なら誰しもが通る道だと思ってる
2021/01/08(金) 20:05:42.45ID:gKD5AY0L
厨二病以下だね沼二病か幼長病レベル
2021/01/08(金) 20:33:39.47ID:eZ2LT3hD
>>3
お前が死ね
お前が死ね
7デフォルトの名無しさん
2021/01/08(金) 20:55:30.03ID:lmjqKHzd だって演算子オーバーロード楽しいし!
それSpirit作者のジョエルさんにも言えるの?
それSpirit作者のジョエルさんにも言えるの?
2021/01/08(金) 21:03:27.15ID:NkKDsd1u
% を三次元ベクトルのクロス積にするのはかつて自分も思いついたけど、勧められないって立場の人も居て
演算子オーバーロードが自然かそうでないかってのは人に拠るなと思った
自分の価値観で言えばiostreamの >> とかってあんまり自然じゃないが
他に何がいいかって言われてもないので仕方ない
演算子オーバーロードが自然かそうでないかってのは人に拠るなと思った
自分の価値観で言えばiostreamの >> とかってあんまり自然じゃないが
他に何がいいかって言われてもないので仕方ない
2021/01/08(金) 21:08:29.47ID:gKD5AY0L
<filesystem>のディレクトリ区切りがoperator/なのとかオモロイやん
10デフォルトの名無しさん
2021/01/08(金) 21:17:01.55ID:U7HVBqAl 絵文字プログラミングが来る
なので独自オペレータは出来た方がいい
なので独自オペレータは出来た方がいい
2021/01/08(金) 21:44:49.24ID:gxkYqo9D
12デフォルトの名無しさん
2021/01/09(土) 00:35:22.39ID:8yDnsj0x キーワードも再定義可能にしてホスイ
2021/01/09(土) 01:15:10.33ID:CT/R4i5r
#defineでイケるやろ
14デフォルトの名無しさん
2021/01/09(土) 01:39:13.52ID:InkVVK6p #define private public
ってテクニックのことか。
ってテクニックのことか。
2021/01/09(土) 04:17:16.54ID:kjQQkk+g
2021/01/09(土) 09:21:23.56ID:c2CH7ey/
キーワードをdefineするのは規格上は未定義動作
でもだいたい通っちゃうな
でもだいたい通っちゃうな
2021/01/09(土) 09:27:02.27ID:lvRTpcj7
その条文どこだっけ
2021/01/09(土) 10:07:37.60ID:c2CH7ey/
この辺かなC++20ドラフトより
16.5.1.2 Headers [headers]
8 Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standard library headers.
(標準ライブラリはキーワードをマクロにすんな)
16.5.4.3.2 Macro names [macro.names]
2 A translation unit shall not #define or #undef names lexically identical to keywords, to the identifiers listed in Table 4, or to the attribute-tokens described in 9.12, except that the names likely and unlikely may be defined as function-like macros (15.6).
(キーワード・文脈依存キーワード・予約済み属性トークン(ただしlikelyとunlikelyを除く)をdefineやundefすんな)
16.5.1.2 Headers [headers]
8 Identifiers that are keywords or operators in C++ shall not be defined as macros in C++ standard library headers.
(標準ライブラリはキーワードをマクロにすんな)
16.5.4.3.2 Macro names [macro.names]
2 A translation unit shall not #define or #undef names lexically identical to keywords, to the identifiers listed in Table 4, or to the attribute-tokens described in 9.12, except that the names likely and unlikely may be defined as function-like macros (15.6).
(キーワード・文脈依存キーワード・予約済み属性トークン(ただしlikelyとunlikelyを除く)をdefineやundefすんな)
2021/01/09(土) 11:17:12.79ID:lvRTpcj7
thx
20デフォルトの名無しさん
2021/01/09(土) 20:30:21.03ID:w9vYk25X >>13
何言ってんだおめー;;;
何言ってんだおめー;;;
2021/01/09(土) 21:18:55.59ID:jpx8Mcv4
C++はプリプロセッサが発展する方向にいかなくて本当に良かった
プリプロセッサを吸収して凄いことになってる気はするが
プリプロセッサを吸収して凄いことになってる気はするが
2021/01/09(土) 21:24:33.16ID:lvRTpcj7
禿の方針だからね
スコープに従わない反逆者の排除は
スコープに従わない反逆者の排除は
2021/01/09(土) 21:37:52.40ID:Te5slSqE
(でも楽しいよね
(コンパイル直前のコードが数個のプリミティブにまで還元されちまう楽しい言語もあるしな))
(コンパイル直前のコードが数個のプリミティブにまで還元されちまう楽しい言語もあるしな))
2021/01/09(土) 22:11:02.76ID:w9vYk25X
プリプロセッサはC言語の目的(OSを様々なプラットフォームに移植可能な共通ソースコードとして書く)ための
必要欠く書くべからざるしくみとして導入され、できた時点で仕様としてはほぼ過不足なかった
という印象
そういう目的のブツなので、キーワードの再定義には全く不向き
必要欠く書くべからざるしくみとして導入され、できた時点で仕様としてはほぼ過不足なかった
という印象
そういう目的のブツなので、キーワードの再定義には全く不向き
2021/01/10(日) 07:00:15.18ID:NGSbpihh
プリプロセスおもしろいやん
俺プリプロセス大好き
俺プリプロセス大好き
26デフォルトの名無しさん
2021/01/10(日) 07:04:45.26ID:pzwk9NYM 最近は#includeと#defineしか使ってない。
27デフォルトの名無しさん
2021/01/10(日) 08:03:37.57ID:pzwk9NYM #defineじゃなくて#pragma onceだった。
2021/01/10(日) 10:29:09.95ID:eq9L0D9i
どうやったらその2つを取り違えできるんだww
ほんとにつかってる??
ほんとにつかってる??
2021/01/10(日) 10:29:46.47ID:Cbi+hphF
#pragma onceとか#inlude_nextとか標準に入れてほしくはある
2021/01/10(日) 10:45:39.55ID:J1w4FPK7
#pragma onceはもう標準のつもりで使ってるわ
2021/01/10(日) 11:35:58.46ID:MuZPu68S
>>25
そういう時期もあったな…(遠い目)
そういう時期もあったな…(遠い目)
32デフォルトの名無しさん
2021/01/10(日) 11:49:17.12ID:WbJbdET/ #pragma便利よね ライブラリのリンク指定とかも
33はちみつ餃子 ◆8X2XSCHEME
2021/01/10(日) 11:50:54.98ID:smlN1G6e2021/01/10(日) 11:53:18.07ID:5+d8OMjE
シフト演算なんてほとんど使わんしなあ
2021/01/10(日) 11:57:06.83ID:uVXyGOJo
ファイルパスってチェーンしたいものの筆頭格だから演算子にするのは妥当だと思うけど
36デフォルトの名無しさん
2021/01/10(日) 12:20:31.40ID:pzwk9NYM >>28
使ってるわい。
使ってるわい。
37デフォルトの名無しさん
2021/01/10(日) 12:20:58.71ID:pzwk9NYM とはいえレスくれてありがとうw
2021/01/10(日) 12:38:01.52ID:stlWAB5c
39デフォルトの名無しさん
2021/01/10(日) 23:28:34.84ID:9cXVj8qL mutexって同時だとどうなるの?
40デフォルトの名無しさん
2021/01/10(日) 23:32:27.11ID:9cXVj8qL 信用して使うしかないけど…本当に同時で来たら…どうなるのかなぁ…と思って…。
2021/01/10(日) 23:43:03.84ID:1knBg1rC
同時に入ろうとしたら同時に入るのではない別の世界線に分岐するから
結局同時にならない
結局同時にならない
2021/01/11(月) 00:43:54.84ID:KM6/Ii6v
posix平行宇宙論
43デフォルトの名無しさん
2021/01/11(月) 00:44:15.09ID:AtO8PUuj それだと…CPUの負荷や調子によって…同時になるって…事だよ…。
44デフォルトの名無しさん
2021/01/11(月) 00:45:46.62ID:AtO8PUuj mutex…危ういな…どうしよう…。運に任せて…諦めるか…。
45デフォルトの名無しさん
2021/01/11(月) 00:54:29.81ID:AtO8PUuj 運任せは辛い…。
46デフォルトの名無しさん
2021/01/11(月) 01:30:50.91ID:AtO8PUuj https://stackoverflow.com/questions/7373202/what-happens-if-two-theads-lock-a-mutex-concurrently
大丈夫だと言っているが…ほんまかいな…と思います…迷信はつきもの。
大丈夫だと言っているが…ほんまかいな…と思います…迷信はつきもの。
2021/01/11(月) 01:37:51.07ID:KM6/Ii6v
テストプログラム作ってさっさと検証しろ無能
2021/01/11(月) 01:59:20.31ID:3nmpeNiQ
>>46
信用できないならソースやアセンブリ読めよ。ここで名無しに答えてもらっても、信用できないんだろ?
信用できないならソースやアセンブリ読めよ。ここで名無しに答えてもらっても、信用できないんだろ?
49デフォルトの名無しさん
2021/01/11(月) 03:08:34.69ID:KSKcxhht MutexはOSに依存するので絶対に大丈夫ということはないですが、数々のトラブルを引き起こし最も懸念されたLinuxが安定してきてるので、現在では実用上問題がないレベルにあると思います。
2021/01/11(月) 03:36:14.65ID:dLrb5ZQk
マルチCPUでバスリクエストが同時に出た場合の制御なんて明確に定義されてんだろうが
OS依存だハード依存だと逃げているから見えない不安に怯えることになるんだよ
OS依存だハード依存だと逃げているから見えない不安に怯えることになるんだよ
51デフォルトの名無しさん
2021/01/11(月) 06:01:13.69ID:vFi9Z+AQ LinuxのMutexって使いにくいよね
俺はWindowsから入ったからMutexって名前付きが当たり前だと思ってたんだけどLinuxのMutexには名前がない
どうやって複数のプロセス間で同じMutexを使うんだよ・・・って悩んだ
共有メモリなんかでMutexのアドレスを受け渡しするらしいんだけどさ
面倒くさくなってLinux版の同期制御はファイルロックにしちゃった。。
俺はWindowsから入ったからMutexって名前付きが当たり前だと思ってたんだけどLinuxのMutexには名前がない
どうやって複数のプロセス間で同じMutexを使うんだよ・・・って悩んだ
共有メモリなんかでMutexのアドレスを受け渡しするらしいんだけどさ
面倒くさくなってLinux版の同期制御はファイルロックにしちゃった。。
52デフォルトの名無しさん
2021/01/11(月) 06:47:08.93ID:KSKcxhht LinuxのファイルロックはNFSで(※私たちにはバグのように見える)仕様通りの動作をするので気を付けたほうが良いですよ。
ユーザーが指定したファイルやディレクトリを不用意に使用すると再現性の無いバグに悩まされます。
ユーザーが指定したファイルやディレクトリを不用意に使用すると再現性の無いバグに悩まされます。
53デフォルトの名無しさん
2021/01/11(月) 06:56:23.61ID:vFi9Z+AQ >>52
アドバイスありがとう
Linuxで共有メモリの使い方もよく分からなくて
共有メモリも書いてる途中で読み取りされたら困るから
「書いたよー」「読み終わったよー」ってプロセス間同期したいんだけどMutex受け渡しの前に同期処理って・・・
それで共有メモリの読み書きをファイルロックで同期してMutexを渡すかなーって考えてるうちに
もうファイルロックだけでいいんじゃないかってなってしまった
一般的にはどうやってやるのがよかったんだろ?
アドバイスありがとう
Linuxで共有メモリの使い方もよく分からなくて
共有メモリも書いてる途中で読み取りされたら困るから
「書いたよー」「読み終わったよー」ってプロセス間同期したいんだけどMutex受け渡しの前に同期処理って・・・
それで共有メモリの読み書きをファイルロックで同期してMutexを渡すかなーって考えてるうちに
もうファイルロックだけでいいんじゃないかってなってしまった
一般的にはどうやってやるのがよかったんだろ?
54デフォルトの名無しさん
2021/01/11(月) 07:35:12.79ID:KSKcxhht2021/01/11(月) 08:06:23.60ID:RSMcM3e3
ちょっとググっただけだけどそんなに難しいかなぁ?
https://www.geekpage.jp/programming/linux-network/book/07/7-41.php
https://www.geekpage.jp/programming/linux-network/book/07/7-41.php
56デフォルトの名無しさん
2021/01/11(月) 08:06:43.86ID:vFi9Z+AQ >>54
ありがとう ちょと安心した
ありがとう ちょと安心した
57デフォルトの名無しさん
2021/01/11(月) 08:16:58.50ID:vFi9Z+AQ >>55
コード見てみましたけどMutexの作成と共有メモリの書き込みが終わってからforkしてますね
forkした親と子ならそれでもいいんでしょうけど
実際は親子ではないプロセス間でMutex使いたくなったりするじゃないですか
Mutexが作成される前や共有メモリへの書き込み完了前にスレーブがMutexを要求しに来ると困ります
コード見てみましたけどMutexの作成と共有メモリの書き込みが終わってからforkしてますね
forkした親と子ならそれでもいいんでしょうけど
実際は親子ではないプロセス間でMutex使いたくなったりするじゃないですか
Mutexが作成される前や共有メモリへの書き込み完了前にスレーブがMutexを要求しに来ると困ります
2021/01/11(月) 08:38:54.12ID:WYfXTDe9
2021/01/11(月) 08:48:31.88ID:3OtB0f6U
mutexじゃなくて名前付きセマフォなら普通にプロセス間で使えなかったっけ?
2021/01/11(月) 09:14:02.58ID:RSMcM3e3
61デフォルトの名無しさん
2021/01/11(月) 09:22:15.64ID:KSKcxhht >>60
Linuxではファイルロックで良いよ。
Linuxではファイルロックで良いよ。
62デフォルトの名無しさん
2021/01/11(月) 09:28:25.14ID:vFi9Z+AQ セマフォのほうには名前付きあったんですね見落としてました
ありがとう!
ありがとう!
63デフォルトの名無しさん
2021/01/11(月) 09:39:24.93ID:vFi9Z+AQ あと別のところでソケットを排他リソースで使うというアイデアを教えてもらったことあります
同じポート番号をバインドできるのは1つだけだからこれを排他に使うという案
同じポート番号をバインドできるのは1つだけだからこれを排他に使うという案
64デフォルトの名無しさん
2021/01/11(月) 09:52:46.06ID:KSKcxhht 3年ぶりの建設的なスレだな。
2021/01/11(月) 10:09:50.89ID:RSMcM3e3
>>61
ファイルロックはロックしたままプロセス死ぬとリブートしても解消できないのがね
ファイルロックはロックしたままプロセス死ぬとリブートしても解消できないのがね
2021/01/11(月) 10:39:47.37ID:sBoV/AFh
67デフォルトの名無しさん
2021/01/11(月) 11:25:14.07ID:vFi9Z+AQ >>65
それはファイルロック(flock関数)ではなく、単純にファイルの存在チェックをしているだけじゃないですか?
flockを使ったファイルロックならプロセス異常終了時にOSによってロックが解放されます
それはファイルロック(flock関数)ではなく、単純にファイルの存在チェックをしているだけじゃないですか?
flockを使ったファイルロックならプロセス異常終了時にOSによってロックが解放されます
68デフォルトの名無しさん
2021/01/11(月) 12:46:20.78ID:vpEQZDgx ミックスジュースよりセックスジュースが好きですね
2021/01/11(月) 14:25:33.73ID:EL34sMb+
唐突に何いいだすねん君は!
(‘д‘⊂彡☆))Д´)パーン <ミックスジュースよりセックスジュースが好きですね
(‘д‘⊂彡☆))Д´)パーン <ミックスジュースよりセックスジュースが好きですね
2021/01/11(月) 14:41:16.25ID:dLrb5ZQk
ラブジュースだろ
71デフォルトの名無しさん
2021/01/11(月) 16:14:45.22ID:AtO8PUuj 39です…。
mutexの信頼性をずーと疑ってたら…POSIXスレッド…pthread_mutex_lockに行き着きました…
ブロックもするそうです…ソース見てたら…カーネルの様です…pthread_mutex_lock_fullであれば…atomic_compare_and_exchange_val_acq…などもあります…テストアンドセットです…
アトミック操作です…しかし…普通にmutexを実装してpthread_mutex_lock_fullが呼ばれるかは…
分かりません…どんなmutexライブラリも最終的に…このカーネルを呼んでるだけだと思います…
呼ばれてるのは…fullではなく…弱い方のpthread_mutex_lockだと仮定しても…カーネルを疑うなんて…
本当に…ナンセンスな話なので…一応…信用して使うことにします…。
mutexの信頼性をずーと疑ってたら…POSIXスレッド…pthread_mutex_lockに行き着きました…
ブロックもするそうです…ソース見てたら…カーネルの様です…pthread_mutex_lock_fullであれば…atomic_compare_and_exchange_val_acq…などもあります…テストアンドセットです…
アトミック操作です…しかし…普通にmutexを実装してpthread_mutex_lock_fullが呼ばれるかは…
分かりません…どんなmutexライブラリも最終的に…このカーネルを呼んでるだけだと思います…
呼ばれてるのは…fullではなく…弱い方のpthread_mutex_lockだと仮定しても…カーネルを疑うなんて…
本当に…ナンセンスな話なので…一応…信用して使うことにします…。
72デフォルトの名無しさん
2021/01/11(月) 16:55:02.21ID:AtO8PUuj 39です…。
結局…fullでなくても…atomic_exchange_acqが呼ばれているようです…アトミック操作です…。
なので…みなさん…安心して使いましょう…。
結局…fullでなくても…atomic_exchange_acqが呼ばれているようです…アトミック操作です…。
なので…みなさん…安心して使いましょう…。
73デフォルトの名無しさん
2021/01/11(月) 16:56:14.48ID:KSKcxhht >>72
そこでやめずに、atomic_exchange_acqの中まで追いかけてみませんか?
そこでやめずに、atomic_exchange_acqの中まで追いかけてみませんか?
74デフォルトの名無しさん
2021/01/11(月) 16:56:26.10ID:AtO8PUuj2021/01/11(月) 21:32:01.48ID:KM6/Ii6v
Debian woody の頃まで posix thread は使い物にならなかったが Debian etch からようやく使い物になった印象だな
当時から利用している身にしては
当時から利用している身にしては
76デフォルトの名無しさん
2021/01/12(火) 05:50:41.37ID:pJAexhLb わりと最近ですね。
77デフォルトの名無しさん
2021/01/12(火) 07:34:00.56ID:V95G+u6D woodyって20年くらい前だっけ
最初はJavaVMもグリーンスレッドというVM内の仮想スレッド実装だったんだよね
あれもOSネイティブのスレッドが信用されてなかったからなのかな
もちろん、現在のJavaVMはOSのネイティブスレッド使う実装になってるけどね
最初はJavaVMもグリーンスレッドというVM内の仮想スレッド実装だったんだよね
あれもOSネイティブのスレッドが信用されてなかったからなのかな
もちろん、現在のJavaVMはOSのネイティブスレッド使う実装になってるけどね
78デフォルトの名無しさん
2021/01/12(火) 07:44:47.10ID:pJAexhLb Javaといえばブラック何とかプロジェクトがSUNに文句言ってなかったっけ?
79デフォルトの名無しさん
2021/01/12(火) 07:45:53.88ID:pJAexhLb Etchが2007年と書いてあるな。
2021/01/12(火) 09:08:57.41ID:e5lAHXYT
設計思想的なことについて質問があります。
クラスの使い方がよく分かりません。
僕が今何かを作ろうと思ったら、関数の集まりが引数や返り値のやり取りを通じて協調するような設計をしてしまいます。
この引数や返り値が多く複雑になったりしてきたらクラスを用いた設計を考える、という理解は正しいでしょうか?
クラスの使い方がよく分かりません。
僕が今何かを作ろうと思ったら、関数の集まりが引数や返り値のやり取りを通じて協調するような設計をしてしまいます。
この引数や返り値が多く複雑になったりしてきたらクラスを用いた設計を考える、という理解は正しいでしょうか?
2021/01/12(火) 09:22:47.73ID:XkW3hQXX
2021/01/12(火) 13:35:30.39ID:lxco4c0J
個人的には、一度無理にでも概念(ウインドウとか表示とか作ってるソフトの主要な概念)をクラス名にして作ってみるといいとおも
やってるうちに慣れてくる
やってるうちに慣れてくる
83デフォルトの名無しさん
2021/01/12(火) 14:01:10.35ID:V95G+u6D そうだね
なにかを題材にしてオブジェクト指向やってみるのがいいと思う
でもウインドウはどうかなー そもそもUIツールキットをある程度知らないといけないし
GUIってオブジェクト指向らしからぬ部分も多いので
もっとビジネスロジック中心の題材がいいと思うよ たとえば掲示板システムとか
板には複数のスレがあって、各スレの中には複数のレスが並んでて、スレの書き込むメソッドでレスが1つ増えてーみたいな
なにかを題材にしてオブジェクト指向やってみるのがいいと思う
でもウインドウはどうかなー そもそもUIツールキットをある程度知らないといけないし
GUIってオブジェクト指向らしからぬ部分も多いので
もっとビジネスロジック中心の題材がいいと思うよ たとえば掲示板システムとか
板には複数のスレがあって、各スレの中には複数のレスが並んでて、スレの書き込むメソッドでレスが1つ増えてーみたいな
2021/01/12(火) 17:32:55.18ID:+0XoTmdG
>>82
初歩的な質問なのですが、クラスってモノじゃなくて概念でも良いのでしょうか
つまり、歩く人のプログラムを作るとき、人というクラスが歩くというメソッドを持っていても良いし、歩くというクラスが一歩進むというメソッドを持っていても良いのでしょうか
言語の仕様上はもちろんどちらでも良いと思いますが、どちらの設計の方が筋が良いということはないと思って良いですか?
初歩的な質問なのですが、クラスってモノじゃなくて概念でも良いのでしょうか
つまり、歩く人のプログラムを作るとき、人というクラスが歩くというメソッドを持っていても良いし、歩くというクラスが一歩進むというメソッドを持っていても良いのでしょうか
言語の仕様上はもちろんどちらでも良いと思いますが、どちらの設計の方が筋が良いということはないと思って良いですか?
2021/01/12(火) 17:34:51.31ID:fQCYjk84
ナントカ系の関数群みたいに相互に関連し合っているものを
暗黙じゃなく明確化するのがクラスだよ
暗黙じゃなく明確化するのがクラスだよ
87デフォルトの名無しさん
2021/01/12(火) 17:38:10.34ID:V95G+u6D >>85
「歩く」をクラスにするよりは「歩ける」をインターフェースにしたらどうかな
人間クラスに「歩ける」インターフェースを実装することで「歩く」メソッドがあることを保証できる
対象ドメインをどのようにモデル化するかは状況や要件次第
「歩く」をクラスにするよりは「歩ける」をインターフェースにしたらどうかな
人間クラスに「歩ける」インターフェースを実装することで「歩く」メソッドがあることを保証できる
対象ドメインをどのようにモデル化するかは状況や要件次第
2021/01/12(火) 19:05:06.19ID:mPDSlMxM
メタファとして生き物がよく用いられるけどなんだかなあっていつも思う
2021/01/12(火) 19:50:41.34ID:YNFRivpW
>>87
「歩け」インターフェースを定義したらインスタンスが歩ける想定であることは自明なのでは…
ちなメソッドは一般にオブジェクトの状態変化を引き起こすブツなので
命令型プログラミングの範疇であり命令形で命名すうるが正しい
※ 個人の感想です
「歩け」インターフェースを定義したらインスタンスが歩ける想定であることは自明なのでは…
ちなメソッドは一般にオブジェクトの状態変化を引き起こすブツなので
命令型プログラミングの範疇であり命令形で命名すうるが正しい
※ 個人の感想です
2021/01/12(火) 19:52:42.41ID:YNFRivpW
しかしインスタンスの生成というプロセスは関数型プログラミングから拝借しており、
命令型と関数型のいいとこ取りしようとして失敗した
classベースのオブジェクト志向は
命令型と関数型のいいとこ取りしようとして失敗した
classベースのオブジェクト志向は
91デフォルトの名無しさん
2021/01/12(火) 19:58:16.79ID:GTfU1r+6 何ベースのが成功なの?
2021/01/13(水) 09:25:15.89ID:X1FbeZvQ
場合によっては歩くクラスもありだと思うよ。
ゲームで次の行動を一つずつ記憶させたい場合とか。
commandパターン、mementoパターンでググって
ゲームで次の行動を一つずつ記憶させたい場合とか。
commandパターン、mementoパターンでググって
93デフォルトの名無しさん
2021/01/13(水) 09:45:27.73ID:D0cZCa+j 歩くということは、位置が変化する。
現在位置は人オブジェクトのプロパティなのか?
それでええのか?
現在位置は人オブジェクトのプロパティなのか?
それでええのか?
2021/01/13(水) 11:14:57.57ID:XODVGtfI
2021/01/13(水) 12:34:30.18ID:QVnLWQ3q
96デフォルトの名無しさん
2021/01/13(水) 13:12:01.01ID:D0cZCa+j >>94
じゃあ将棋の駒オブジェクトはプロパティとして位置を持っているのか?
じゃあ将棋の駒オブジェクトはプロパティとして位置を持っているのか?
97デフォルトの名無しさん
2021/01/13(水) 14:09:32.74ID:D0cZCa+j 俺の考えるOOシステムでは、駒オブジェクトは盤面オブジェクトやルールブックオブジェクトへの参照を持っいる。
駒オブジェクトへ前へ3移動とメッセージを送ると、駒オブジェクトはルールブックオブジェクトと盤面オブジェクトを用いて、移動可能であれば盤面オブジェクトへ自身を移動するようメッセージングする。
駒オブジェクトへ前へ3移動とメッセージを送ると、駒オブジェクトはルールブックオブジェクトと盤面オブジェクトを用いて、移動可能であれば盤面オブジェクトへ自身を移動するようメッセージングする。
2021/01/13(水) 15:31:14.00ID:Dg6tKq+M
intを継承してmyintクラスを作ることは可能ですか?
2021/01/13(水) 15:38:23.35ID:CyYDkVRJ
システム次第でしょ。
もしも将棋の駒が自律歩行多脚戦車だったら、GPSシステムがすべての位置情報を管理してるなんておかしいし。
もしも将棋の駒が自律歩行多脚戦車だったら、GPSシステムがすべての位置情報を管理してるなんておかしいし。
100デフォルトの名無しさん
2021/01/13(水) 15:38:43.61ID:D0cZCa+j enum class なら可能。
101デフォルトの名無しさん
2021/01/13(水) 20:01:32.91ID:D0cZCa+j C++はテンプレートがあるので設計の詳細を先送りできる。
その特徴を生かせるように、プッシュ型を流行らせませんか?
プッシュ型は、前提が少ないので、利用者が自由に組み合わせることが出来ます。
これは、インターフェースによって事前に詳細を設計してしまう方式と真逆かもしれないが、組み合わせによって機能を作ることが出来まっする。
その特徴を生かせるように、プッシュ型を流行らせませんか?
プッシュ型は、前提が少ないので、利用者が自由に組み合わせることが出来ます。
これは、インターフェースによって事前に詳細を設計してしまう方式と真逆かもしれないが、組み合わせによって機能を作ることが出来まっする。
102デフォルトの名無しさん
2021/01/13(水) 21:14:51.93ID:XHABqTxh プッシュ型って何?
103デフォルトの名無しさん
2021/01/14(木) 06:54:42.42ID:mrWYZ3Pm Caper や Bison でプッシュ型を調べてみるとわかると思います。
104デフォルトの名無しさん
2021/01/14(木) 06:59:25.06ID:mrWYZ3Pm あらゆるソフトウェアで使いまわされるライブラリにおいて、詳細が既に決まっているのは不自由なことです。
105デフォルトの名無しさん
2021/01/14(木) 07:12:21.89ID:FFXK54Rt templateと比べてプッシュ型の利点が分からん。
106デフォルトの名無しさん
2021/01/14(木) 07:23:48.43ID:mrWYZ3Pm >>105
プッシュ型はパーサーでよく使われます。
ユーザーが柔軟性を求めるからです。
Caperはプッシュ型、Bisonはパーサー側が文字を読む方式ですが、オプションとしてプッシュ型を選べます。
パーサにおいてプッシュ型とは、(パーサではなく)パーサを呼び出す側が文字を送り込みます。
それによって何が起きるでしょうか?
従来のパーサーは状態と共に行番号を保存します。
プッシュ型の場合、行番号を保存するのは呼び出し側です。
パーサーが読む文字とは何でしょうか?
プッシュ型において、Cではint、C++ではユニコード。コードポイントです。
文字デコードを行うのは、呼び出し側です。
では従来のパーサでは?
行番号を管理するためには、文字デコードもパーサーの仕事です。
つまりパーサーは大きな塊でアリ、組み合わせる部品ではありません。
プッシュ型はパーサーでよく使われます。
ユーザーが柔軟性を求めるからです。
Caperはプッシュ型、Bisonはパーサー側が文字を読む方式ですが、オプションとしてプッシュ型を選べます。
パーサにおいてプッシュ型とは、(パーサではなく)パーサを呼び出す側が文字を送り込みます。
それによって何が起きるでしょうか?
従来のパーサーは状態と共に行番号を保存します。
プッシュ型の場合、行番号を保存するのは呼び出し側です。
パーサーが読む文字とは何でしょうか?
プッシュ型において、Cではint、C++ではユニコード。コードポイントです。
文字デコードを行うのは、呼び出し側です。
では従来のパーサでは?
行番号を管理するためには、文字デコードもパーサーの仕事です。
つまりパーサーは大きな塊でアリ、組み合わせる部品ではありません。
107デフォルトの名無しさん
2021/01/14(木) 07:27:04.63ID:mrWYZ3Pm プッシュ型はUNIXに通じるものがありますが、UNIXでは実現されませんでした。
108デフォルトの名無しさん
2021/01/14(木) 07:47:44.25ID:mrWYZ3Pm パーサーは本来、構文解析が仕事です。
しかし、現状多くのパーサーは、構文解析以外の機能を密に結合している。
本来の仕事以外は分離して、小さな部品にすることで再利用性が高まる。
という感じですかね。
これはテンプレートと同じでもろ刃の剣でもあるんですよ。
詳細を設計しないんですから。
しかし、STLの寿命の長さを見て分かる通り、詳細が設計されていないという事は利用者が自由に設計できるという事で、使い出があるんです。
しかし、現状多くのパーサーは、構文解析以外の機能を密に結合している。
本来の仕事以外は分離して、小さな部品にすることで再利用性が高まる。
という感じですかね。
これはテンプレートと同じでもろ刃の剣でもあるんですよ。
詳細を設計しないんですから。
しかし、STLの寿命の長さを見て分かる通り、詳細が設計されていないという事は利用者が自由に設計できるという事で、使い出があるんです。
109デフォルトの名無しさん
2021/01/14(木) 07:48:23.53ID:mrWYZ3Pm もちろん、パーサーに限った話ではないですよ。
例です。
例です。
110デフォルトの名無しさん
2021/01/14(木) 09:22:59.17ID:EIDQMz1r みんながみんなパーサーを開発する側じゃないからなー
もっと身近な例はないですか?
このようなデザインパターンがプッシュ型だとこうなる、みたいな
もっと身近な例はないですか?
このようなデザインパターンがプッシュ型だとこうなる、みたいな
111デフォルトの名無しさん
2021/01/14(木) 09:29:21.76ID:mrWYZ3Pm112デフォルトの名無しさん
2021/01/14(木) 10:01:10.49ID:mp+NLhBe >>111
身近な例はないかという問いに対しその回答は意味不明では?
身近な例はないかという問いに対しその回答は意味不明では?
113デフォルトの名無しさん
2021/01/14(木) 10:15:16.01ID:mrWYZ3Pm まあそうですね。
すいませんでした。
すいませんでした。
114デフォルトの名無しさん
2021/01/14(木) 10:22:13.84ID:FFXK54Rt 身近な例で利点があるなら広めるのに協力するのもいいが今の時点で利点が分からん。
115デフォルトの名無しさん
2021/01/14(木) 15:40:36.18ID:qrpkNJTC 別にC++だけの問題じゃないんだけど…質問…例えば…エクスプローラのようにファイル一覧出すじゃん…
画像や動画は…サムネイルを出すじゃん…このサムネイルは非同期で更新になるじゃん…
一度開いたら…キャッシュから読み込みたいじゃん…このキャッシュの保存ってさぁ…一意にするのに…
ファイルパス・更新日時・サイズである程度一意になるけど…完璧な一意ではないじゃん…
同じ名前・同じ更新日時・同じサイズで上書きされたら、前の画像がサムネイルに出るじゃん…
どうすんの?
画像や動画は…サムネイルを出すじゃん…このサムネイルは非同期で更新になるじゃん…
一度開いたら…キャッシュから読み込みたいじゃん…このキャッシュの保存ってさぁ…一意にするのに…
ファイルパス・更新日時・サイズである程度一意になるけど…完璧な一意ではないじゃん…
同じ名前・同じ更新日時・同じサイズで上書きされたら、前の画像がサムネイルに出るじゃん…
どうすんの?
116デフォルトの名無しさん
2021/01/14(木) 15:42:53.95ID:qrpkNJTC キャッシュなんてそんなものだから…それでいいのかなぁ…
117デフォルトの名無しさん
2021/01/14(木) 15:53:35.11ID:mp+NLhBe その気持ち悪い「...」をやめてくれ
118デフォルトの名無しさん
2021/01/14(木) 15:55:13.17ID:EIDQMz1r ファイルパスと更新日時で一意になると考えていいでしょ
コンテンツが変更されれば更新日時が進むという前提で
それさえも許せないクリティカルなシステムならファイルの全バイト列から衝突率の低いハッシュ作るとかファイル読むのと変わらんことになる
クリティカルなシステムではキャッシュ使わんな
コンテンツが変更されれば更新日時が進むという前提で
それさえも許せないクリティカルなシステムならファイルの全バイト列から衝突率の低いハッシュ作るとかファイル読むのと変わらんことになる
クリティカルなシステムではキャッシュ使わんな
119デフォルトの名無しさん
2021/01/14(木) 16:05:02.51ID:qrpkNJTC なるほど…。
120はちみつ餃子 ◆8X2XSCHEME
2021/01/14(木) 16:09:33.34ID:9qLPLWCT https://martinfowler.com/bliki/TwoHardThings.html
> There are only two hard things in Computer Science: cache invalidation and naming things.
計算機科学においては二つの難しいことがあります。
キャッシュの無効化と名前の付け方です。
> There are only two hard things in Computer Science: cache invalidation and naming things.
計算機科学においては二つの難しいことがあります。
キャッシュの無効化と名前の付け方です。
121はちみつ餃子 ◆8X2XSCHEME
2021/01/14(木) 16:16:29.09ID:9qLPLWCT ファイルシステムによるけど iノード番号だったり
それに近い管理機構で一意に特定できる場合もあるんじゃないの。
サムネイルくらいなら雑でいいやという割り切りもあると思うけど、
ある程度は不整合がないようにする努力もしてると思う。
それに近い管理機構で一意に特定できる場合もあるんじゃないの。
サムネイルくらいなら雑でいいやという割り切りもあると思うけど、
ある程度は不整合がないようにする努力もしてると思う。
122デフォルトの名無しさん
2021/01/14(木) 23:16:54.98ID:9gUF6PTW 特徴的な文体はblogでも見た!
123デフォルトの名無しさん
2021/01/14(木) 23:49:25.09ID:9gUF6PTW スヌープとLRUでおk
この2つでダメだという香具師は、
スヌーピングのロジック設計をサボっているか、
メモリをケチって必要量に未達なだけ
この2つでダメだという香具師は、
スヌーピングのロジック設計をサボっているか、
メモリをケチって必要量に未達なだけ
124デフォルトの名無しさん
2021/01/16(土) 08:13:56.08ID:dLwYQ6PK おはようございますみなさま、質問させてください
ユーザー定義クラスを作成し、循環参照を防止するためweak_ptrをメンバに持たせています。
そして任意の処理でshared_ptrをweak_ptrに代入し使用したいと思っておりました。
しかし、メンバ関数内部でweak_ptrを使用すると、式にはポインタ型が必要です、旨のエラーが出てしまいます。
調べてみたところ、lock()でshared_ptrに再度権利委譲するとshared_ptr側から動くのですが、私が初心者な事もあり何か釈然としません(我が儘でしょうか……)
一度weak_ptrに落とし込んだものを再度shared_ptrに戻す部分が引っかかっているのだと思います(気にしすぎですかね)
そこでお聞きしたいのですが、クラス内部で動的に定めたいと思っているweak_ptrを使う際に、これ以外の方法はありますでしょうか?
それとも上記の通りlock()で一時的なshared_ptrに束縛した方がいいのでしょうか?
朝から長文失礼しました
ユーザー定義クラスを作成し、循環参照を防止するためweak_ptrをメンバに持たせています。
そして任意の処理でshared_ptrをweak_ptrに代入し使用したいと思っておりました。
しかし、メンバ関数内部でweak_ptrを使用すると、式にはポインタ型が必要です、旨のエラーが出てしまいます。
調べてみたところ、lock()でshared_ptrに再度権利委譲するとshared_ptr側から動くのですが、私が初心者な事もあり何か釈然としません(我が儘でしょうか……)
一度weak_ptrに落とし込んだものを再度shared_ptrに戻す部分が引っかかっているのだと思います(気にしすぎですかね)
そこでお聞きしたいのですが、クラス内部で動的に定めたいと思っているweak_ptrを使う際に、これ以外の方法はありますでしょうか?
それとも上記の通りlock()で一時的なshared_ptrに束縛した方がいいのでしょうか?
朝から長文失礼しました
125デフォルトの名無しさん
2021/01/16(土) 08:49:06.94ID:ld2GCDwz ロックしないと知らない間に参照先のshared_ptrで持ってるオブジェクトが破壊されてても文句言えないけどそれでもいいの?
weak_ptrってそういうものだぞ
weak_ptrってそういうものだぞ
126デフォルトの名無しさん
2021/01/16(土) 09:17:41.99ID:dLwYQ6PK127デフォルトの名無しさん
2021/01/19(火) 02:35:16.36ID:y82ZfCrD 移譲って要は継承せずにオブジェクトとして使うってことですよね?
なぜ「移譲」なんてわけわからない名前がついてるんですか?
なぜ「移譲」なんてわけわからない名前がついてるんですか?
128デフォルトの名無しさん
2021/01/19(火) 04:45:45.04ID:KGVX5wki 移譲じゃなくて委譲な。
転送でもいいと思うよ
転送でもいいと思うよ
129デフォルトの名無しさん
2021/01/19(火) 07:52:05.16ID:Uy0+fZqK 代理、丸投げ
130デフォルトの名無しさん
2021/01/19(火) 09:18:39.64ID:xem4SJ/U 日本語の問題だけど移譲は同じレベルに権限等を移すこと、委譲は下のレベルに移すことらしい
委譲は継承より権限の制限があるという含みがあるんだと思う
あくまで人間の組織での比喩なんだろうけど
委譲は継承より権限の制限があるという含みがあるんだと思う
あくまで人間の組織での比喩なんだろうけど
131デフォルトの名無しさん
2021/01/19(火) 09:54:48.36ID:QmODXpTw 名前付けるほどのことか?と問われればたしかにそう思う
クラス内で他のクラスオブジェクトを使ってるだけw
クラス内で他のクラスオブジェクトを使ってるだけw
132デフォルトの名無しさん
2021/01/19(火) 11:29:25.06ID:Bl6CuSRR 移譲コンストラクタってC++11まで存在しなかったの?
133はちみつ餃子 ◆8X2XSCHEME
2021/01/19(火) 11:40:18.61ID:Zp03eKCw134デフォルトの名無しさん
2021/01/19(火) 16:38:03.96ID:8JRMUdmW C++03の頃のプログラミングめちゃくちゃ大変そうだね・・・
135デフォルトの名無しさん
2021/01/19(火) 20:00:27.80ID:rn87bDt4 「オブジェクト指向?じゃあ継承しなきゃ!共通実装はみんな継承でポリモにしろ!」みたいなノリのクソ設計が溢れかえった時期があって
カウンターとして無理に継承せんでもオブジェクト持って使えばええんやでっていう事に名前付けたのが委譲とかコンポジションとか
しょうもないんだけど継承教に対抗するには名前が必要だったんよ
カウンターとして無理に継承せんでもオブジェクト持って使えばええんやでっていう事に名前付けたのが委譲とかコンポジションとか
しょうもないんだけど継承教に対抗するには名前が必要だったんよ
136はちみつ餃子 ◆8X2XSCHEME
2021/01/19(火) 21:06:03.25ID:Zp03eKCw137デフォルトの名無しさん
2021/01/19(火) 22:52:29.91ID:Bl6CuSRR テンプレート使わなければC++03でもいける(かも)
138デフォルトの名無しさん
2021/01/19(火) 23:09:23.44ID:7+t4BBWY なんか、ここはどこ私はだあれなやついるなw
なんでテンプレートが出てくるのか
なんでテンプレートが出てくるのか
139デフォルトの名無しさん
2021/01/19(火) 23:29:07.70ID:LToFUUAC C++03にはテンプレート無いしな
140デフォルトの名無しさん
2021/01/19(火) 23:43:32.07ID:7+t4BBWY 何を狙ってボケてんのかわからん
解説求む
解説求む
141デフォルトの名無しさん
2021/01/20(水) 19:27:35.22ID:kPiTytYK142デフォルトの名無しさん
2021/01/20(水) 19:33:42.85ID:kPiTytYK あ、委譲コンストラクタが無くても、の話であって03と11がどうこうじゃないよ
143デフォルトの名無しさん
2021/01/20(水) 21:35:54.62ID:UBOdXm83 constメンバの初期化をしたいとき
初期化リストで初期化すれば良いっていやー良いが
コンストラクタ毎に初期化リストを書かねばならない
メドイ…
初期化リストで初期化すれば良いっていやー良いが
コンストラクタ毎に初期化リストを書かねばならない
メドイ…
144デフォルトの名無しさん
2021/01/20(水) 21:36:27.27ID:UBOdXm83 あと参照メンバも…!
145デフォルトの名無しさん
2021/01/20(水) 21:47:26.52ID:MvJ8v0/f >>141
C++03で何が困るって、<system_error>や<filesystem>や<execution>みたいのがなかったことだよ
新機能を乱発してプログラマを喜ばせるのを慎むというハゲの主張はわかるが
あまりにも保守的すぎて現実から乖離し始めていた
C++03で何が困るって、<system_error>や<filesystem>や<execution>みたいのがなかったことだよ
新機能を乱発してプログラマを喜ばせるのを慎むというハゲの主張はわかるが
あまりにも保守的すぎて現実から乖離し始めていた
146デフォルトの名無しさん
2021/01/20(水) 21:48:56.40ID:MvJ8v0/f <valarray>の立場がなくなるから<execution>をためらうとか本末転倒だろうが
147デフォルトの名無しさん
2021/01/20(水) 21:57:51.96ID:kPiTytYK148デフォルトの名無しさん
2021/01/20(水) 23:00:47.64ID:UBOdXm83149デフォルトの名無しさん
2021/01/21(木) 02:42:42.14ID:/P5UVCOb まるで Perl はプログラミング言語界の外に居るような言い方ね。
150デフォルトの名無しさん
2021/01/21(木) 06:07:35.61ID:lL8gSm1b なんだろう、スクリプト言語とかコンパイラ言語とかいうのかね
151デフォルトの名無しさん
2021/01/21(木) 07:17:30.26ID:/ZdL1i9k 厄介者のperl
152デフォルトの名無しさん
2021/01/21(木) 07:40:13.27ID:Z8coO7Zb perlは遊び道具としては面白いのかもしれないけど本番で使うにはちょっと…
153デフォルトの名無しさん
2021/01/21(木) 08:36:52.78ID:RnFvGHUF Git for windowsと一緒にインストールされる遊び道具、という世界観ですね。大切にしなさい。
154デフォルトの名無しさん
2021/01/21(木) 08:52:53.32ID:2LdLfW0X へー、findやopensslは便利に使ってたけどperlまで入ってたのか。
まぁ、もう使うことはないだろうけど。
まぁ、もう使うことはないだろうけど。
155デフォルトの名無しさん
2021/01/21(木) 09:35:52.84ID:RnFvGHUF Perlを厄介と考えるPGのほうがPerlよりも先に厄介払いされる。若いくせに向学心がないことが垣間見える。
156デフォルトの名無しさん
2021/01/21(木) 10:09:36.15ID:rjSQv0Wq 向学心とかw
むしろperl使ったことあるからこその意見だろ
むしろperl使ったことあるからこその意見だろ
157デフォルトの名無しさん
2021/01/21(木) 10:25:31.85ID:RnFvGHUF Perlを難しいと思うようだとあまり伸びしろがないね。職業変えたほうがいいかもね。正直でごめんね。
158デフォルトの名無しさん
2021/01/21(木) 10:51:23.68ID:/0jxrBnU >>155はマジで言ってるのか
10年くらい眠ってたのか?
10年くらい眠ってたのか?
159デフォルトの名無しさん
2021/01/21(木) 11:09:21.23ID:rjSQv0Wq 最近のモダン(この言い方自体が既に古いがw)な言語使ったことないんじゃね?
あとそれなりの規模の開発したことないんだろうね
perlは書捨てのツール作ったりするには便利だったけど今更新規で使うことはないわ
あとそれなりの規模の開発したことないんだろうね
perlは書捨てのツール作ったりするには便利だったけど今更新規で使うことはないわ
160デフォルトの名無しさん
2021/01/21(木) 15:15:36.61ID:upjC6TmF Perlの開発者ってタッチタイピングできなかったのかな?
なんであんなに1文字の特殊変数だらけの言語作っちゃったの?キーボード入力が楽になるとか思っちゃったのかな?
結果は可読性の低いクソースコードが量産されただけだったよね
なんであんなに1文字の特殊変数だらけの言語作っちゃったの?キーボード入力が楽になるとか思っちゃったのかな?
結果は可読性の低いクソースコードが量産されただけだったよね
161デフォルトの名無しさん
2021/01/21(木) 16:04:26.02ID:eIfq2EBT162デフォルトの名無しさん
2021/01/21(木) 16:22:10.60ID:jCImDRpq >16 :デフォルトの名無しさん:2006/03/10(金) 22:15:19
>>>10
>> こんな変数名があちこちに散らばっているのがPerl
>
>大学の研究室のボスは、特殊変数の表をふ〜んと2分ほど眺めて完全に暗記した。
>
>そういうレベルの人たちのための言語なんだなと思って、トイレで血の涙を流した。
>>>10
>> こんな変数名があちこちに散らばっているのがPerl
>
>大学の研究室のボスは、特殊変数の表をふ〜んと2分ほど眺めて完全に暗記した。
>
>そういうレベルの人たちのための言語なんだなと思って、トイレで血の涙を流した。
163デフォルトの名無しさん
2021/01/21(木) 16:57:53.30ID:eIfq2EBT 表を見た直後なら、俺も暗記してるぞ。
しばらくたったら忘れる。
短期記憶と長期記憶の違いだ。
しばらくたったら忘れる。
短期記憶と長期記憶の違いだ。
164デフォルトの名無しさん
2021/01/21(木) 18:03:23.48ID:ukSw99eK Perlはglobが使えるようになったらuse strictの下でも参照渡しとかできてC++的に組めるようになるからおk
しかしglobを使うことと理解することは別宇宙の話なのであった
しかしglobを使うことと理解することは別宇宙の話なのであった
165デフォルトの名無しさん
2021/01/21(木) 18:10:26.51ID:ukSw99eK 正確には型グロブ、
166デフォルトの名無しさん
2021/01/21(木) 18:24:32.27ID:RnFvGHUF このスレ、初心者多すぎ。丸暗記なんて誰もしないぞ。何のためにオンラインヘルプあると思ってんだろう。
辞書持ち込み禁止に慣れた学生の気分なのかな。
辞書持ち込み禁止に慣れた学生の気分なのかな。
167デフォルトの名無しさん
2021/01/21(木) 18:26:55.41ID:RnFvGHUF 自身の理解力のなさを胡麻化すために大げさな言い回ししているように見える。マジでPGむいてないから転職したほうがいいよ。
168デフォルトの名無しさん
2021/01/21(木) 18:30:55.76ID:RnFvGHUF >>160 みたいな己の能力のなさを棚に上げておおげさな物言いをする人には調査の仕事を振ることすらできないんだが。
169デフォルトの名無しさん
2021/01/21(木) 19:06:10.15ID:/ZdL1i9k https://descartes-search.com/media/5-programming-languages-you-wont-use-2030/
Perlファンたちはその堅牢なパフォーマンスとスケーラビリティを主張するが、すでにPythonのような他の言語に代替され始めている。10年後にはその信者の数も減り、永久に消え去ることだろうw
Perlファンたちはその堅牢なパフォーマンスとスケーラビリティを主張するが、すでにPythonのような他の言語に代替され始めている。10年後にはその信者の数も減り、永久に消え去ることだろうw
170デフォルトの名無しさん
2021/01/21(木) 19:17:51.03ID:RnFvGHUF ちょっとしたことをやるのに適しているのがスクリプト言語なのに、そのスクリプト言語の初歩にさえつまづいてしまう人はPGに向いてないんだよ。
正直でごめんね。Perlだけの話してるわけじゃないんだわ。
正直でごめんね。Perlだけの話してるわけじゃないんだわ。
171デフォルトの名無しさん
2021/01/21(木) 21:03:47.74ID:ukSw99eK172デフォルトの名無しさん
2021/01/21(木) 21:28:48.83ID:cjnTDlz3 人って第一印象が重要でしょ。
言語もそうだと思うの。
Perlだけの話をするけど、Perlは第一印象で損してる感じ。
PG経験あれば直感的に避けようとする人も少なくないのでは?
言語もそうだと思うの。
Perlだけの話をするけど、Perlは第一印象で損してる感じ。
PG経験あれば直感的に避けようとする人も少なくないのでは?
173はちみつ餃子 ◆8X2XSCHEME
2021/01/21(木) 21:30:02.98ID:ooF1treM174デフォルトの名無しさん
2021/01/21(木) 21:40:40.11ID:RnFvGHUF >>172
ドルマークを多用するPerlはシェルスクリプトに慣れた人にはむしろ入りやすいはずだけどね。
ドルマークを多用するPerlはシェルスクリプトに慣れた人にはむしろ入りやすいはずだけどね。
175デフォルトの名無しさん
2021/01/21(木) 21:46:06.32ID:6tk1Snw3 あわしろ氏はJavaはオワコンこれからはPerlと言ってるけどな。
176デフォルトの名無しさん
2021/01/21(木) 22:21:06.42ID:rjSQv0Wq なんでこの人自分以外はperl使えない前提なんだろ…
177デフォルトの名無しさん
2021/01/21(木) 22:23:21.95ID:RnFvGHUF 知っている人も多いと思うけど、bash/zsh向けに便利な入力補完ツール fzf が存在する。
そのGitHubにはfzfにPerlを併用するサンプルコードが散見される。
https://github.com/junegunn/fzf/wiki/Examples
今やPerlは、sedやawkより多機能なちょっとしたテキスト改変ツールとして、Perl本来の役割に回帰している。
PerlをCGIを書くための言語と思っている人にはPerlがオワコンに見えるかもしれないが、現実は違う。
そのGitHubにはfzfにPerlを併用するサンプルコードが散見される。
https://github.com/junegunn/fzf/wiki/Examples
今やPerlは、sedやawkより多機能なちょっとしたテキスト改変ツールとして、Perl本来の役割に回帰している。
PerlをCGIを書くための言語と思っている人にはPerlがオワコンに見えるかもしれないが、現実は違う。
178デフォルトの名無しさん
2021/01/21(木) 22:35:21.87ID:RnFvGHUF python3が入っていない環境はわりとあるけどperlが入っていない環境はまずない。
179デフォルトの名無しさん
2021/01/21(木) 22:35:36.69ID:Z9MWAls1 なんでC++スレでPerl, Perlと連呼するんだろう
おおかた、その心理を察することができるので草生えるwww
おおかた、その心理を察することができるので草生えるwww
180デフォルトの名無しさん
2021/01/21(木) 22:41:15.38ID:RnFvGHUF 本スレテーマであるC++やJavaなどのコンパイル言語のコーディングの生産性を高めるにはスクリプト言語の有効活用が欠かせない。
makeやantではかゆい所に手が届かないもどかしさは今も昔も同じなんだよ。
makeやantではかゆい所に手が届かないもどかしさは今も昔も同じなんだよ。
181デフォルトの名無しさん
2021/01/21(木) 22:54:28.47ID:H50jUx0j >>168
Perl狂信者かよ
Perl狂信者かよ
182デフォルトの名無しさん
2021/01/21(木) 22:59:11.40ID:/ZdL1i9k うかつにもPerl厨の秘口を突いてしまった
183デフォルトの名無しさん
2021/01/21(木) 23:06:26.51ID:rjSQv0Wq184デフォルトの名無しさん
2021/01/22(金) 00:49:01.09ID:di1fs6eX たしかルビーの素となった言語がペールでは?
185デフォルトの名無しさん
2021/01/22(金) 01:19:07.37ID:55qwSi9o macOSのソフトウェア更新ツールHomebrewはRuby製。マカーがいる限りRubyは不滅。
186デフォルトの名無しさん
2021/01/22(金) 13:19:25.84ID:pJ+Dy7HC187デフォルトの名無しさん
2021/01/22(金) 13:20:41.30ID:pJ+Dy7HC188デフォルトの名無しさん
2021/01/22(金) 14:12:04.30ID:aLDuncuZ189デフォルトの名無しさん
2021/01/22(金) 14:18:28.68ID:WLGQ46hZ C++のところで延々と続けるのもなんだけど、TECOってのは相当複雑怪奇だったみたいね
190デフォルトの名無しさん
2021/01/22(金) 22:15:36.76ID:HHqIRAh/ C++が今後関数型プログラミングを言語としてサポートしていくことはありますか?
191デフォルトの名無しさん
2021/01/22(金) 22:18:18.81ID:3W/g7okM <functinal>で足りるんじゃね?
192デフォルトの名無しさん
2021/01/22(金) 22:50:10.68ID:LtnZZu+T193デフォルトの名無しさん
2021/01/22(金) 23:49:36.96ID:LcAiXyQN >>192
C++の「マルチパラダイム」の中に関数型が今後入ることはあるか (あるいはもう入ってるか) という質問なんですが、変なことを聞いていますか?
C++の「マルチパラダイム」の中に関数型が今後入ることはあるか (あるいはもう入ってるか) という質問なんですが、変なことを聞いていますか?
194デフォルトの名無しさん
2021/01/23(土) 00:00:03.65ID:rMuiLyZn ぅえ?
195デフォルトの名無しさん
2021/01/23(土) 01:38:03.71ID:PXGkLjAZ もう入ってるでしょ?
196デフォルトの名無しさん
2021/01/23(土) 04:37:52.61ID:Vx6mcd5N Perlのソース汚いイメージしかないけどな
197デフォルトの名無しさん
2021/01/23(土) 07:19:17.61ID:E7+6hgZm std::functionとラムダ式で関数はほぼ第一級オブジェクトとして扱えるからC++はとっくに関数型言語ですよ
モナドだってやろうと思えば作れるよ
モナドだってやろうと思えば作れるよ
198デフォルトの名無しさん
2021/01/23(土) 13:50:31.25ID:1/fAmr9E じゃーHaskellにできることはC++でもできるし、同じように書けるって言うのかい
200デフォルトの名無しさん
2021/01/23(土) 14:06:29.89ID:pKYkJfCY201はちみつ餃子 ◆8X2XSCHEME
2021/01/23(土) 14:54:28.68ID:Q+Wu8A2P202デフォルトの名無しさん
2021/01/23(土) 16:26:10.57ID:LPDMRZtK203デフォルトの名無しさん
2021/01/23(土) 18:58:05.34ID:C4WlxIYr204デフォルトの名無しさん
2021/01/24(日) 11:36:54.35ID:wSlEv8S7 Rubyは関数型ωωω
205デフォルトの名無しさん
2021/01/24(日) 12:17:53.22ID:/MPXRGah カオスコードって意味ならc++とperlが双璧だわな。rubyは別の意味で糞だが。
206デフォルトの名無しさん
2021/01/24(日) 14:46:51.42ID:bXJjYU1w rubyの糞とrailsの糞がかけ合わさって悪臭漂う糞になる
207デフォルトの名無しさん
2021/01/24(日) 21:13:47.08ID:hPeuQsPP 肛門を保護するために出る粘液はイイ匂いがするので、化学的に類似品が合成され、香水の原料になっています。
ウンコは臭いですが、ウンコの周りには良いものがあるかもしれない。
ウンコは臭いですが、ウンコの周りには良いものがあるかもしれない。
208デフォルトの名無しさん
2021/01/24(日) 23:17:47.88ID:bXJjYU1w Co-mon++
209デフォルトの名無しさん
2021/01/25(月) 00:51:35.02ID:h/LmkNzq210デフォルトの名無しさん
2021/01/25(月) 09:53:48.54ID:RU5Fvovq やだこのスレホモ臭い
211デフォルトの名無しさん
2021/01/25(月) 10:13:42.80ID:uSgkqdKl と言いつつ嬉しそうな吉宗であった。
212デフォルトの名無しさん
2021/01/25(月) 13:06:55.63ID:sPc2eBUP PerlとC++は、見づらいソースコードに慣れる能力を鍛えてくれる。
Perlをオワコン扱いする人は情弱である。
Perlをオワコン扱いする人は情弱である。
213デフォルトの名無しさん
2021/01/25(月) 13:11:37.73ID:54hHF458 厄介者のperl厨
214デフォルトの名無しさん
2021/01/25(月) 13:34:11.10ID:lM5Uli0g 糞コードに触れるとアンチパターンがわかるというのは確かにあるが、それを人に勧めるのは気がひける。
215デフォルトの名無しさん
2021/01/25(月) 13:48:32.46ID:sPc2eBUP まずい酒の味を知らない者には、うまい酒の味を見分けることはできない。
216デフォルトの名無しさん
2021/01/25(月) 21:12:20.67ID:bQwFUjl3 美味い酒の味を知ったら不味い酒は飲めん
217デフォルトの名無しさん
2021/01/25(月) 22:13:56.33ID:IR169uBT 酒は飲まんからようわからん
218デフォルトの名無しさん
2021/01/25(月) 22:56:10.85ID:sPc2eBUP まずい酒を飲めなくなることは、プログラミングに置きかえればクソコードのメンテナンスができなくなることを意味しており、スキル低下でしかない。
219デフォルトの名無しさん
2021/01/25(月) 23:11:18.97ID:bBvI6B4m まずい酒はわかるけどうまい酒はマジわからん…
220デフォルトの名無しさん
2021/01/25(月) 23:57:21.75ID:sPc2eBUP うまい酒については「水のように飲みやすい」というほめ表現もあるが、なら水飲んどけよという話でもある。
221デフォルトの名無しさん
2021/01/25(月) 23:57:36.36ID:t4dFVxvz <body>
!unti {nuritakuri}
<body/>
!unti {nuritakuri}
<body/>
222デフォルトの名無しさん
2021/01/26(火) 00:02:06.39ID:Qnn6Y+tc <head>
<bukkake> seisi <bukkake/>
<strong> naaaaaaaaa!!!<strong/>
<head/>
<bukkake> seisi <bukkake/>
<strong> naaaaaaaaa!!!<strong/>
<head/>
223デフォルトの名無しさん
2021/01/26(火) 02:05:34.14ID:wg8lZWjJ >>220
ほんまこれ
前にカエルの肉を食ったやつが「ほんと鶏肉とおんなじようなもんだから!食べてみて!」
ってしつこいんだが、だったら鶏肉でいいだろなんでわざわざゲテモノ食わにゃならんのか??となる
ほんまこれ
前にカエルの肉を食ったやつが「ほんと鶏肉とおんなじようなもんだから!食べてみて!」
ってしつこいんだが、だったら鶏肉でいいだろなんでわざわざゲテモノ食わにゃならんのか??となる
224デフォルトの名無しさん
2021/01/26(火) 03:51:19.13ID:uiGtA95I 寄生虫が良い風味出すから。
225デフォルトの名無しさん
2021/01/26(火) 06:09:38.08ID:ZRZozNwf macOSのHomebrewいいね。Perlが最新の5.32.1に即対応。人柱上等なところに惚れる。
226デフォルトの名無しさん
2021/01/26(火) 07:49:52.25ID:ZI8ZD6Xl 安めの食材や有り合わせでうまいもん作れる腕があっても
腐ったものはどうにもできない
例えるなら、これだろ
腐ったものはどうにもできない
例えるなら、これだろ
227デフォルトの名無しさん
2021/01/26(火) 07:59:37.62ID:xVPuSdRM >>220
酔える水なら。
酔える水なら。
228デフォルトの名無しさん
2021/01/26(火) 11:52:17.15ID:XuLptVzr229デフォルトの名無しさん
2021/01/26(火) 13:45:24.16ID:uiGtA95I ちょっと腐ったほうが柔らかくなってアミノ酸も多いよ。
熟成させたと言えばグルメも安心だし。
熟成させたと言えばグルメも安心だし。
230デフォルトの名無しさん
2021/01/26(火) 13:48:13.24ID:uiGtA95I 野菜は立てておくと腐らないんだけど、その代わり成長するからね。
光合成できるかも?と思ってなけなしの養分使って葉を伸ばすんだろうけど、光合成は出来ません。
光合成できるかも?と思ってなけなしの養分使って葉を伸ばすんだろうけど、光合成は出来ません。
231デフォルトの名無しさん
2021/01/26(火) 13:54:11.58ID:uiGtA95I 野菜の活〆を発明したら儲かるだろな。
放射線以外で。
放射線以外で。
232デフォルトの名無しさん
2021/01/26(火) 21:06:31.25ID:Du8Hqhh0 いいかげんスレ違い。
233デフォルトの名無しさん
2021/01/26(火) 21:46:24.92ID:ZRZozNwf プリプロセッサマクロだらけの“汚い”コードを否定したらC/C++の強みを失うことになる。
JavaやC#はプリプロセッサマクロが貧弱なのが玉にキズだ。
JavaやC#はプリプロセッサマクロが貧弱なのが玉にキズだ。
234デフォルトの名無しさん
2021/01/26(火) 21:51:10.66ID:ZRZozNwf pybind11スレがないこんな世の中じゃ〜Python〜
まぁマクロの塊のような代物だが。
まぁマクロの塊のような代物だが。
235デフォルトの名無しさん
2021/01/27(水) 06:03:44.65ID:yQalyIAE C++はコミュニティで発言力のある人が大抵率直にものを言い過ぎる、悪く言えば口が悪いので忌み嫌われてるとこある
236デフォルトの名無しさん
2021/01/27(水) 07:30:48.85ID:eLUquqZ0237デフォルトの名無しさん
2021/01/27(水) 07:48:28.28ID:4l9V085Z でも、Linux板なんか失敗したボランティアの住所載せて、放火しろとは言ってませんよ??言ってませんよ??・・・などの書き込みあるからな。
それに比べれはだいぶ良識的では?
それに比べれはだいぶ良識的では?
238デフォルトの名無しさん
2021/01/27(水) 11:26:52.94ID:cJSBZXf9 C/C++のプリプロセッサも貧弱すぎ
239デフォルトの名無しさん
2021/01/27(水) 17:43:27.13ID:nPuTGnvU C++例外のスタック情報がとれないのはC++の欠点。
例外でスタック情報を使えるJava/C#/Python/Perlはエライ。
例外でスタック情報を使えるJava/C#/Python/Perlはエライ。
240デフォルトの名無しさん
2021/01/27(水) 21:51:38.91ID:NT655YPf おまえは二度とC++使うな
241デフォルトの名無しさん
2021/01/27(水) 23:04:53.57ID:TqcnYSNG >>239
スタックフレーム作ればイケるってば
スタックフレーム作ればイケるってば
242デフォルトの名無しさん
2021/01/28(木) 09:07:27.76ID:dmDIUcy2 >>235
例えば誰?
例えば誰?
243はちみつ餃子 ◆8X2XSCHEME
2021/01/28(木) 10:23:46.51ID:vBYpvnJx244デフォルトの名無しさん
2021/01/28(木) 10:52:39.05ID:dNWrUHbO >>223
フグは豚肉に触感似てるけどフグの方が美味い
フグは豚肉に触感似てるけどフグの方が美味い
245デフォルトの名無しさん
2021/01/28(木) 10:54:00.53ID:dNWrUHbO >>228
日本で感染爆発が起きてないのは以前からジビエが流行してたからか
日本で感染爆発が起きてないのは以前からジビエが流行してたからか
246デフォルトの名無しさん
2021/01/28(木) 10:55:14.42ID:dNWrUHbO >>230-231
白菜は外の皮じゃなくて中の芯から先に食べろと言われている
白菜は外の皮じゃなくて中の芯から先に食べろと言われている
247デフォルトの名無しさん
2021/01/28(木) 11:40:01.79ID:eLxqvNeX >>200
ユニコ時代だからAPLよりずっと先行ってるぞ
組み込み演算子で∩∉とか集合論の記号採用してたりアトミックな演算子は⚛++とか洒落効いてたりする
一方で古代perlのプレフィックスは緩和されてる
ユニコ時代だからAPLよりずっと先行ってるぞ
組み込み演算子で∩∉とか集合論の記号採用してたりアトミックな演算子は⚛++とか洒落効いてたりする
一方で古代perlのプレフィックスは緩和されてる
248デフォルトの名無しさん
2021/01/28(木) 11:51:37.25ID:eLxqvNeX ∅∘∩ ⊍∪ ⊖ ⊎ ∖≅ ∈ ∉ ∋ ∌ ≡
≢ ⊂ ⊄ ⊃ ⊅ ⊆ ⊈ ⊇ ⊉ ≼ ≽.«»≠
他組み込みではこんな感じか
>= やらよりmずっと可読性高いと思う、エディタもvimとか高機能なのなら問題なかろう
文字を表示してくれるのは特に便利
≢ ⊂ ⊄ ⊃ ⊅ ⊆ ⊈ ⊇ ⊉ ≼ ≽.«»≠
他組み込みではこんな感じか
>= やらよりmずっと可読性高いと思う、エディタもvimとか高機能なのなら問題なかろう
文字を表示してくれるのは特に便利
249デフォルトの名無しさん
2021/01/28(木) 11:58:59.45ID:kskG1wa2 >>245
さすがにコウモリはどこの地方でも食わんだろ
さすがにコウモリはどこの地方でも食わんだろ
250デフォルトの名無しさん
2021/01/28(木) 17:23:15.04ID:8Al9oSyF なんでプリミティブ型って継承できんの?
252デフォルトの名無しさん
2021/01/28(木) 17:41:41.73ID:GsoT0xyU クラスAのオブジェクトをクラスBのメンバにするときってどうやってAのコンストラクタ呼ぶの?
class B{
A a;
public:
B(){
// この辺でAのコンストラクタを呼びたい
}
};
class B{
A a;
public:
B(){
// この辺でAのコンストラクタを呼びたい
}
};
253デフォルトの名無しさん
2021/01/28(木) 17:48:00.82ID:WrE+/6so254デフォルトの名無しさん
2021/01/28(木) 18:07:20.07ID:IHrlZHr2 >>243
gdbはおいとくとして、Visual StudioってC++例外のスロー位置を追跡できたっけ?
gdbはおいとくとして、Visual StudioってC++例外のスロー位置を追跡できたっけ?
255デフォルトの名無しさん
2021/01/28(木) 18:50:38.47ID:Hqj+H5f7256デフォルトの名無しさん
2021/01/28(木) 18:54:30.61ID:IHrlZHr2 あとで再初期化したくなること多いから、結局コンストラクタの実装を別の関数に分離すること多いよね。
コンストラクタの種類が増えたら使いまわしたくなるし。
コンストラクタの種類が増えたら使いまわしたくなるし。
257デフォルトの名無しさん
2021/01/28(木) 19:24:37.48ID:q3mIN91/ >>243
デバッガ使いこなせないとか話にならんだろ・・
デバッガ使いこなせないとか話にならんだろ・・
258デフォルトの名無しさん
2021/01/28(木) 19:28:49.13ID:IHrlZHr2 デバッガやシンボルがない環境でもスタックトレースできたほうが良いと思うけどね。
後発言語の生産性の高さはこの辺の充実ぶりにあるでしょ。
後発言語の生産性の高さはこの辺の充実ぶりにあるでしょ。
259デフォルトの名無しさん
2021/01/28(木) 19:42:24.27ID:IHrlZHr2 他プロセスと連携するシステムにはデバッガを当てにくい事が多い。
タイミング依存の不具合を追跡する場合、デバッガがまったく役に立たない。
タイミング依存の不具合を追跡する場合、デバッガがまったく役に立たない。
260デフォルトの名無しさん
2021/01/28(木) 20:25:47.81ID:eBfsAdOM >>258
その手の生産性と成果物の効率はトレードオフでどっちを重視するかが違うだけでしょ
その手の生産性と成果物の効率はトレードオフでどっちを重視するかが違うだけでしょ
261デフォルトの名無しさん
2021/01/28(木) 20:36:13.14ID:IHrlZHr2 デバッガ使いこなすとか言って悦に入ってる人と会話が噛み合わないんだが。
262デフォルトの名無しさん
2021/01/28(木) 20:36:14.66ID:yp+dwtvR >>258
だよね
むしろデバッガをアタッチできる環境ならスタックトレースはなくてもなんとかなる
ユーザー環境でスタックトレースがテキストファイルに落ちるようになってるとトラブルシューティングがしやすい
だよね
むしろデバッガをアタッチできる環境ならスタックトレースはなくてもなんとかなる
ユーザー環境でスタックトレースがテキストファイルに落ちるようになってるとトラブルシューティングがしやすい
263デフォルトの名無しさん
2021/01/28(木) 21:29:31.41ID:oPlwADge >>261
ここほとんどアマチュアの人だから許してやろうやw
ここほとんどアマチュアの人だから許してやろうやw
264デフォルトの名無しさん
2021/01/28(木) 21:48:11.74ID:q3mIN91/265デフォルトの名無しさん
2021/01/28(木) 21:51:13.66ID:q3mIN91/266デフォルトの名無しさん
2021/01/28(木) 21:51:23.69ID:oPlwADge いやごめん、俺は流れは一切追ってなくて他意はないよ
茶化したかっただけ
気にしないで
茶化したかっただけ
気にしないで
267デフォルトの名無しさん
2021/01/28(木) 23:50:09.41ID:g6qVZG7L 発狂やないかw
Perlの人かな
Perlの人かな
268デフォルトの名無しさん
2021/01/28(木) 23:53:15.94ID:RfcrpqT0 >>253,255
じゃあ、Bを構築してしばらく経ってからわかる情報を使ってAを構築したいとき、Aのインスタンスをメンバとして持つのは不可能ということですか?
ポインタで持つ以外の方法はない (想定されてない?) のでしょうか
constなメンバ変数を初期化するときも近いことを思います
じゃあ、Bを構築してしばらく経ってからわかる情報を使ってAを構築したいとき、Aのインスタンスをメンバとして持つのは不可能ということですか?
ポインタで持つ以外の方法はない (想定されてない?) のでしょうか
constなメンバ変数を初期化するときも近いことを思います
269デフォルトの名無しさん
2021/01/29(金) 00:10:27.15ID:ZIYbfTXe >>268
そういうコンストラクタ制約を持つクラスはけっこう多い。
WindowsのC++向けGDI+ライブラリのクラス群はまさにこれが当てはまる。
広範に存在している以上は受け入れるしかない。
今時は標準でshared_ptrなどの共有ポインタクラスを使えるので、さほど問題にならないでしょ。
そういうコンストラクタ制約を持つクラスはけっこう多い。
WindowsのC++向けGDI+ライブラリのクラス群はまさにこれが当てはまる。
広範に存在している以上は受け入れるしかない。
今時は標準でshared_ptrなどの共有ポインタクラスを使えるので、さほど問題にならないでしょ。
270デフォルトの名無しさん
2021/01/29(金) 00:19:48.35ID:SRnp44iw >>268
Aに引数なしのコンストラクタ、コピーorムーブ代入演算子があるなら、後で作って代入でもいいけど
まぁ特に理由なければ(スマート)ポインタで持った方が無難だし楽
constはどうしようもない
Aに引数なしのコンストラクタ、コピーorムーブ代入演算子があるなら、後で作って代入でもいいけど
まぁ特に理由なければ(スマート)ポインタで持った方が無難だし楽
constはどうしようもない
271デフォルトの名無しさん
2021/01/29(金) 00:22:16.89ID:MWSZTtHp >>268
「Bを構築してしばらく経ってからわかる情報」を返すヘルパー関数を作って初期化リストの中で呼べばいいじゃない
「Bを構築してしばらく経ってからわかる情報」を返すヘルパー関数を作って初期化リストの中で呼べばいいじゃない
272デフォルトの名無しさん
2021/01/29(金) 07:49:13.10ID:/axUqcOX データメンバをconstってあんまりやらないな
publicに晒すとかじゃなきゃメンバ関数を
constにするだけで足りるから
あ、staticメンバのconstはよくやるけどね
publicに晒すとかじゃなきゃメンバ関数を
constにするだけで足りるから
あ、staticメンバのconstはよくやるけどね
273デフォルトの名無しさん
2021/01/29(金) 08:02:53.38ID:1V7SRlCX >>251
ある
実装は同じunsigned longでも意味が違うから別クラスとして扱いたいときとか
private継承できたらナア……
現状(C++03)はプリミティブ型と同じ演算子(のうちの当座のアプリケーションで使うやつ)をいちいち実装したクラスを作って
NDEBUGマクロで実装を切り替えるみたいな涙ぐましい努力が要る
ある
実装は同じunsigned longでも意味が違うから別クラスとして扱いたいときとか
private継承できたらナア……
現状(C++03)はプリミティブ型と同じ演算子(のうちの当座のアプリケーションで使うやつ)をいちいち実装したクラスを作って
NDEBUGマクロで実装を切り替えるみたいな涙ぐましい努力が要る
274デフォルトの名無しさん
2021/01/29(金) 08:05:13.74ID:1V7SRlCX 訂正orz
誤: private継承
正: public継承かつoperator unsigned long()はprivateかつunsigned longからの構築はexplicit
誤: private継承
正: public継承かつoperator unsigned long()はprivateかつunsigned longからの構築はexplicit
275デフォルトの名無しさん
2021/01/29(金) 08:08:37.91ID:1V7SRlCX メンバをconstにして代入演算子を定義せずにいるとデフォルトの代入演算子をが定義できないとコンパイラに文句を言われる俺環、
276デフォルトの名無しさん
2021/01/29(金) 09:20:50.39ID:koPyq8om277デフォルトの名無しさん
2021/01/29(金) 12:20:22.74ID:c2S2Mocm メンバ変数のconstはポインタ型ならすることあるけど、値で持つメンバ変数はあんまり意味なくない?
constなくても勝手に外部から書き換えられないように、ちゃんと隠蔽しとけばいいだけでしょ
constなくても勝手に外部から書き換えられないように、ちゃんと隠蔽しとけばいいだけでしょ
278デフォルトの名無しさん
2021/01/29(金) 12:35:16.78ID:2DekME/2 >>277
class内の処理においても変更しないつもりだ、変更されることはない、と明示することで意識しておかなければならないことを少し軽減できるのだから、無駄ではないと思う。
手間をかけずにconstにできるならしておけばいいし、逆に無理して複雑なことをしてまでconstにする必要はないという程度のことかと思う。
class内の処理においても変更しないつもりだ、変更されることはない、と明示することで意識しておかなければならないことを少し軽減できるのだから、無駄ではないと思う。
手間をかけずにconstにできるならしておけばいいし、逆に無理して複雑なことをしてまでconstにする必要はないという程度のことかと思う。
279デフォルトの名無しさん
2021/01/29(金) 12:55:03.34ID:c2S2Mocm280はちみつ餃子 ◆8X2XSCHEME
2021/01/29(金) 14:10:30.45ID:heeNhc25281デフォルトの名無しさん
2021/01/29(金) 16:04:20.47ID:5pIDnM+S >>251
3値のboolean作るときってboolean継承すべき?
3値のboolean作るときってboolean継承すべき?
282デフォルトの名無しさん
2021/01/29(金) 16:07:44.73ID:5pIDnM+S283デフォルトの名無しさん
2021/01/29(金) 16:10:21.66ID:5pIDnM+S >>259
COMサーバーというかDX用にフィルタ書いてると訳判らなくなった
COMサーバーというかDX用にフィルタ書いてると訳判らなくなった
284デフォルトの名無しさん
2021/01/29(金) 16:56:37.48ID:RxAp4EkX285デフォルトの名無しさん
2021/01/29(金) 17:20:59.69ID:ADFs+h5F boostにtriboolってのがあるな
286はちみつ餃子 ◆8X2XSCHEME
2021/01/29(金) 17:23:22.91ID:t7wU8l8M >>281
仮に真偽値型を継承可能であったとして、三値型が真偽値型を継承するのはおかしいだろう。
場合によって柔軟な判断が必要な場合はあるものの、
継承は is-a 関係を表したいときに限ったほうがよろしいというのが一般的な設計原則だと思うが。
仮に真偽値型を継承可能であったとして、三値型が真偽値型を継承するのはおかしいだろう。
場合によって柔軟な判断が必要な場合はあるものの、
継承は is-a 関係を表したいときに限ったほうがよろしいというのが一般的な設計原則だと思うが。
287デフォルトの名無しさん
2021/01/29(金) 17:25:47.23ID:GtDK4kd8 nullableか、DBのフィールド値?
288デフォルトの名無しさん
2021/01/29(金) 18:57:54.24ID:ZIYbfTXe はちみつ餃子「スタックトレースできないならデバッガ当てればいいじゃない」
289デフォルトの名無しさん
2021/01/29(金) 19:41:08.91ID:rAmh2V0K 典型的な円楕円問題だな
290デフォルトの名無しさん
2021/01/29(金) 19:56:26.71ID:ZIYbfTXe テンプレートを使えば、クラス継承に依存しない記述が可能。
iostreamが黒歴史扱いである現実を踏まえての話。
iostreamが黒歴史扱いである現実を踏まえての話。
291デフォルトの名無しさん
2021/01/29(金) 21:24:08.77ID:WFMo+mcm とりあえずiostream批判しとけば訳知り顔ができた気に浸れる浅はかなやつ
292デフォルトの名無しさん
2021/01/29(金) 21:35:39.96ID:nnAlz0gZ c++ニワカあるあるだよなw
iostreamとりあえず批判奴w
iostreamとりあえず批判奴w
293デフォルトの名無しさん
2021/01/29(金) 21:39:11.47ID:ZIYbfTXe iostreamは使いもしないメンバ変数を継承することを強要される悪い手本でしょ。
294デフォルトの名無しさん
2021/01/29(金) 22:16:38.63ID:WFMo+mcm 何も説得力を示さずに突然「悪い」と言い出す
295デフォルトの名無しさん
2021/01/30(土) 01:56:51.26ID:SJAC6oP5 iostreamはクソなのは正解だが別に批判するようなことでもない
なぜなら使わなければいいだけの話だからだ
なぜなら使わなければいいだけの話だからだ
296デフォルトの名無しさん
2021/01/30(土) 02:06:50.03ID:OHt9F1SU 無理にクラス継承を使わずオーバーライド関数とそれを使うテンプレート関数を充実させたほうが幸せになれる。
297デフォルトの名無しさん
2021/01/30(土) 02:41:04.49ID:PJvUkb6d 別に無理して継承を使っているわけではない
どっかの馬の骨が気に入らんからといって
あれを使うなこれを使うなと言われるほうが無理そのものだ
どっかの馬の骨が気に入らんからといって
あれを使うなこれを使うなと言われるほうが無理そのものだ
298デフォルトの名無しさん
2021/01/30(土) 02:53:37.72ID:OHt9F1SU 例えば、ファイルに書き込む処理があったとする。
ファイルハンドルとして有名な型としては、int型、FILE*型、iostream型、Win32APIのHANDLE型などがあげられる。
これらを派生クラスに閉じ込めて抽象化するよりも、関数名が同じになるオーバーライド関数を作ってテンプレート関数から呼んだ方がはるかに楽。
int WriteBuffer(int fp, const char* buffer);
int WriteBuffer(FILE* fp, const char* buffer);
int WriteBuffer(ostream& fp, const char* buffer);
int WriteBuffer(HANDLE fp, const char* buffer);
template<typename FILE_OBJECT>
void WriteContent(FILE_OBJECT o)
{
WriteBuffer(o, "write test1");
WriteBuffer(o, "write test2");
}
ファイルハンドルとして有名な型としては、int型、FILE*型、iostream型、Win32APIのHANDLE型などがあげられる。
これらを派生クラスに閉じ込めて抽象化するよりも、関数名が同じになるオーバーライド関数を作ってテンプレート関数から呼んだ方がはるかに楽。
int WriteBuffer(int fp, const char* buffer);
int WriteBuffer(FILE* fp, const char* buffer);
int WriteBuffer(ostream& fp, const char* buffer);
int WriteBuffer(HANDLE fp, const char* buffer);
template<typename FILE_OBJECT>
void WriteContent(FILE_OBJECT o)
{
WriteBuffer(o, "write test1");
WriteBuffer(o, "write test2");
}
299デフォルトの名無しさん
2021/01/30(土) 03:53:39.52ID:ULcRPxme ドヤってるところすまんがそれオーバーライドじゃない
300デフォルトの名無しさん
2021/01/30(土) 04:01:05.04ID:PJvUkb6d プゲラ
301デフォルトの名無しさん
2021/01/30(土) 05:45:11.84ID:SLqQC90z フリー関数とクラスメンバでは、インテリセンスが効くか効かないかの違いもある。
302デフォルトの名無しさん
2021/01/30(土) 05:52:17.44ID:OHt9F1SU そんなあなたに名前空間
303デフォルトの名無しさん
2021/01/30(土) 06:06:53.60ID:SLqQC90z クラスの場合、名前空間を書かなくても、インテリセンスが効く。
304デフォルトの名無しさん
2021/01/30(土) 06:47:43.00ID:budoESfZ コンストラクタの初期化リストで
class A{
int x;
public:
A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか
class A{
int x;
public:
A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか
305デフォルトの名無しさん
2021/01/30(土) 07:04:07.72ID:ULcRPxme 自分は普通にその書き方してる
避ける人も居るっぽいけど好きなようにすればいい
避ける人も居るっぽいけど好きなようにすればいい
306デフォルトの名無しさん
2021/01/30(土) 09:09:49.20ID:PHKUCpSE iostreamマンセーバカってのは型安全ならどんな仕様でも良いと思ってるカスが多いからな。
型安全は評価する一項目に過ぎないってのに。
型安全は評価する一項目に過ぎないってのに。
307デフォルトの名無しさん
2021/01/30(土) 09:29:38.23ID:vDjChjwr iostreamは整形のための情報をわざわざ状態として持たされるのがクソ
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど
308デフォルトの名無しさん
2021/01/30(土) 09:38:20.91ID:2pTx0la6 でも状態もってなかったら記述が煩雑になりすぎない?
HTMLのマークアップとまでは言わんまでも
HTMLのマークアップとまでは言わんまでも
309デフォルトの名無しさん
2021/01/30(土) 09:59:20.80ID:OHt9F1SU 整形設定を記憶する変数インスタンスをiostreamインスタンスと分離すべきって話でしょ。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。
310デフォルトの名無しさん
2021/01/30(土) 10:06:40.70ID:OHt9F1SU というか他のオブジェクト指向言語だと整形情報がFormatterクラスとかに分離されているのが普通だし。
311デフォルトの名無しさん
2021/01/30(土) 10:32:05.24ID:PJvUkb6d FORTRANのFORMAT文が好きな人をどうこうしようとは思わない
312デフォルトの名無しさん
2021/01/30(土) 10:40:52.47ID:hVJYorL3 初歩的な質問なのですが、stringクラスの内部バッファはデストラクタで破棄されるため自分では一切管理しなくていいという認識で良いのでしょうか?
313デフォルトの名無しさん
2021/01/30(土) 11:17:24.76ID:SLqQC90z アロケータによるけど、普通は管理しなくて良いのでは?
314デフォルトの名無しさん
2021/01/30(土) 12:47:13.80ID:EWZvTk3z >>308
状態持ってても無駄に煩雑(複雑ではない)
状態持ってても無駄に煩雑(複雑ではない)
315デフォルトの名無しさん
2021/01/30(土) 12:57:10.51ID:8FYOnD7D iostream 型安全なのはいいけど、char/signed char/unsigned char ぜんぶ文字扱いするのはやめて欲しかった。
316デフォルトの名無しさん
2021/01/30(土) 13:18:35.30ID:SLqQC90z 単項プラスで。
317はちみつ餃子 ◆8X2XSCHEME
2021/01/30(土) 13:18:38.04ID:4OMKN/Z4 >>309
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。
iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。
iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。
>>304
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません
319デフォルトの名無しさん
2021/01/30(土) 15:08:20.24ID:S5wIZr5N C++でのメンバ変数は、標準的には m_xと書く。
320デフォルトの名無しさん
2021/01/30(土) 16:04:40.96ID:0ahE8ZR3321デフォルトの名無しさん
2021/01/30(土) 16:41:05.48ID:SLqQC90z MicrosoftとAdobeがその書き方多いですね。
322デフォルトの名無しさん
2021/01/30(土) 17:13:12.28ID:S5wIZr5N なお、_x は、命名規約上、禁止。先頭が _ の名前はコンパイラなどの
システム予約なため。
システム予約なため。
323デフォルトの名無しさん
2021/01/30(土) 17:14:26.98ID:2r/QlSUC そうだったっけ?
324はちみつ餃子 ◆8X2XSCHEME
2021/01/30(土) 17:19:55.79ID:4OMKN/Z4 >>304
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。
C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
https://google.github.io/styleguide/cppguide.html#Variable_Names
その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
https://stroustrup.com/bs_faq2.html#Hungarian
どちらの習慣が圧倒的優勢ということはないと思う。
>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。
ただし、
・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前
は名前の種類やスコープにかかわらずどこでも予約されている。
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。
C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
https://google.github.io/styleguide/cppguide.html#Variable_Names
その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
https://stroustrup.com/bs_faq2.html#Hungarian
どちらの習慣が圧倒的優勢ということはないと思う。
>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。
ただし、
・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前
は名前の種類やスコープにかかわらずどこでも予約されている。
325デフォルトの名無しさん
2021/01/30(土) 17:30:01.20ID:2r/QlSUC 互いの信仰を侵害してはならないがチーム内では統一されている必要がある
規約の背景は明確である必要がある
規約の背景は明確である必要がある
326デフォルトの名無しさん
2021/01/30(土) 18:08:50.99ID:OHt9F1SU >>317
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。
327デフォルトの名無しさん
2021/01/30(土) 18:30:25.89ID:PJvUkb6d ios_baseで統一する形に変わっただけ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ
328デフォルトの名無しさん
2021/01/30(土) 18:36:35.02ID:OHt9F1SU パイプ処理をostream系で書く奇特な人ってどのくらいいるの?
329デフォルトの名無しさん
2021/01/30(土) 18:41:09.24ID:OHt9F1SU pythonは定数がないから全部大文字の変数は定数のようにみなしましょう的な談合がある。
330デフォルトの名無しさん
2021/01/30(土) 19:00:34.72ID:0ahE8ZR3 定数というか型もない
>>322
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥
332デフォルトの名無しさん
2021/01/30(土) 20:32:34.21ID:PJvUkb6d data_
size_
size_
333デフォルトの名無しさん
2021/01/31(日) 03:18:57.87ID:6QCY/vGM334デフォルトの名無しさん
2021/01/31(日) 06:52:18.40ID:gXTMTlGe HTTPサーバーのサンプルで、関数型言語がCを凌駕して、C実装の作者が??になってるやり取りをどこかで見たのですが、わかる方いらっしゃいませんか?
おそらくC++は簡単に勝てるはずなんですが。
おそらくC++は簡単に勝てるはずなんですが。
335デフォルトの名無しさん
2021/01/31(日) 07:27:56.74ID:fCVb5Gn/ dmrが?
336デフォルトの名無しさん
2021/01/31(日) 09:14:46.77ID:bSEeGU13 >>333
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?
337デフォルトの名無しさん
2021/01/31(日) 09:22:03.74ID:fCVb5Gn/338デフォルトの名無しさん
2021/01/31(日) 10:19:42.43ID:BqL9JwJS339デフォルトの名無しさん
2021/01/31(日) 10:23:16.43ID:BqL9JwJS >>331
_で始めると激しくコンパイラ依存になる
_で始めると激しくコンパイラ依存になる
340デフォルトの名無しさん
2021/01/31(日) 10:50:22.50ID:BqL9JwJS >>334
Erlang?
Erlang?
341はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 10:57:57.30ID:+XHxoAeu >>339
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。
現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。
現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。
342デフォルトの名無しさん
2021/01/31(日) 11:04:21.78ID:fCVb5Gn/343デフォルトの名無しさん
2021/01/31(日) 11:29:10.73ID:2WBeknRq344デフォルトの名無しさん
2021/01/31(日) 12:10:02.04ID:gXTMTlGe345デフォルトの名無しさん
2021/01/31(日) 13:12:26.22ID:ZnRwde8F >>341
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
https://stackoverflow.com/questions/25090635/use-and-in-c-programs
「Here's what the C standard says (section 7.1.3):
1. All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
2. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
訳:
1. アンダースコアで始まって直後に英大文字が続くか、または、アンダースコアが連続して
続く識別子は、いかなる使用も予約されている。
2. アンダースコアで始まる全ての識別子は、通常または、タグ名前空間における
ファイルスコープの識別子として常に予約されている。
1. の方は、_XXX か、__xxx は予約されていると言うことですが、
2. の方は、_xxx の形式は、例え xxx の部分の先頭が小文字であっても、ファイルスコープにおける
識別子として予約されており、ローカル変数名としては使うべきではないということだと思われます。
また、C++の方では、
https://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier
*Reserved in any scope, including for use as implementation macros:
10. identifiers beginning with an underscore followed immediately by an uppercase letter
11. identifiers containing adjacent underscores (or "double underscore")
*Reserved in the global namespace:
12. identifiers beginning with an underscore
この12.の書き方が(あなたに)誤解を招いた気がします。
また、11.によれば、xxx__yyy のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
https://stackoverflow.com/questions/25090635/use-and-in-c-programs
「Here's what the C standard says (section 7.1.3):
1. All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.
2. All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
訳:
1. アンダースコアで始まって直後に英大文字が続くか、または、アンダースコアが連続して
続く識別子は、いかなる使用も予約されている。
2. アンダースコアで始まる全ての識別子は、通常または、タグ名前空間における
ファイルスコープの識別子として常に予約されている。
1. の方は、_XXX か、__xxx は予約されていると言うことですが、
2. の方は、_xxx の形式は、例え xxx の部分の先頭が小文字であっても、ファイルスコープにおける
識別子として予約されており、ローカル変数名としては使うべきではないということだと思われます。
また、C++の方では、
https://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier
*Reserved in any scope, including for use as implementation macros:
10. identifiers beginning with an underscore followed immediately by an uppercase letter
11. identifiers containing adjacent underscores (or "double underscore")
*Reserved in the global namespace:
12. identifiers beginning with an underscore
この12.の書き方が(あなたに)誤解を招いた気がします。
また、11.によれば、xxx__yyy のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
346デフォルトの名無しさん
2021/01/31(日) 13:18:09.37ID:ZnRwde8F >>337
それは問題ではないんだけど、
#define a(x) { int _x = 1; _x = x * 2; printf("%d",_x);}
のようなマクロが有ったとすれば、
int y = 5;
a(y); // 10 と表示される。
と
int _x = 5;
a(_x); // 2 と表示される。
それは問題ではないんだけど、
#define a(x) { int _x = 1; _x = x * 2; printf("%d",_x);}
のようなマクロが有ったとすれば、
int y = 5;
a(y); // 10 と表示される。
と
int _x = 5;
a(_x); // 2 と表示される。
347デフォルトの名無しさん
2021/01/31(日) 13:42:32.29ID:Rr91L/mp int と自作クラス A の pair を priority_queue に入れようと思ったら pair<int, A> に対する less の定義(?)が要るって言われました
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか
また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか
また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか
348デフォルトの名無しさん
2021/01/31(日) 14:05:10.94ID:WjHCKOmN いろんな見解があってややこしいから、安全側に倒して「_で始まる名前は一切使うな」でいいと思ってる
コンパイラ実装するような奴以外はそれで困らんやろ
コンパイラ実装するような奴以外はそれで困らんやろ
349デフォルトの名無しさん
2021/01/31(日) 14:10:22.05ID:gXTMTlGe 【HOW】予約済みの席に座る方法【TO】
350デフォルトの名無しさん
2021/01/31(日) 14:15:41.43ID:WjHCKOmN >>347
using Aitem = std::pair<int, A>;
using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }>
Aqueue your_queue;
using Aitem = std::pair<int, A>;
using Aqueue = std::priority_queue<Aitem>, std::vector<Aitem>, [](const Aitem& lhs, const Aitem& rhs){ return lhs.first < rhs.first; }>
Aqueue your_queue;
351デフォルトの名無しさん
2021/01/31(日) 14:54:17.91ID:bSEeGU13 >>345
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる
352デフォルトの名無しさん
2021/01/31(日) 15:06:11.72ID:gXTMTlGe 盛 り 上 が っ て ま い り ま し た ↑
353デフォルトの名無しさん
2021/01/31(日) 15:07:16.87ID:gXTMTlGe SRELLって知ってますか?
354デフォルトの名無しさん
2021/01/31(日) 15:15:54.45ID:ZnRwde8F >>351
undersocre で始まる識別子は、Cの仕様ではこうなっています:
「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
「undersocre で始まる識別子はfile scopeでは使用してはいけない」
とは言っておらず。
「undersocre で始まる識別子はfile scopeの識別子として使用される
ことが予約されている」
と言っています。
with file scope
の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、
その直後にも in が使われているので in が二重に使われるのを避けたのかも
知れません。
undersocre で始まる識別子は、Cの仕様ではこうなっています:
「All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces.」
「undersocre で始まる識別子はfile scopeでは使用してはいけない」
とは言っておらず。
「undersocre で始まる識別子はfile scopeの識別子として使用される
ことが予約されている」
と言っています。
with file scope
の前置詞がなぜ in ではなく with になっているかは私には分かりかねますが、
その直後にも in が使われているので in が二重に使われるのを避けたのかも
知れません。
355デフォルトの名無しさん
2021/01/31(日) 15:18:08.68ID:gXTMTlGe inを踏むとか言ってみたくなるじゃないか。
責任とれ。
責任とれ。
356デフォルトの名無しさん
2021/01/31(日) 15:18:17.21ID:ZnRwde8F どうやら、
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。
357デフォルトの名無しさん
2021/01/31(日) 15:41:47.21ID:bSEeGU13 >>354
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。
358デフォルトの名無しさん
2021/01/31(日) 16:03:58.33ID:fCVb5Gn/ >>346
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ
359デフォルトの名無しさん
2021/01/31(日) 16:08:45.08ID:q0ry4PhJ STLコンテナの継承ってしない方が良いんですかね?
たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?
行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?
行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか
360デフォルトの名無しさん
2021/01/31(日) 16:16:47.40ID:WjHCKOmN arrayは仮想デストラクタ持ってないからポリモは出来ない
データ構造使うだけなら必要ない
やめとけ
データ構造使うだけなら必要ない
やめとけ
361デフォルトの名無しさん
2021/01/31(日) 16:20:57.91ID:NgKJGEE4 かか関数型マクロなら不用意に定義されていても
int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
typedef double a;
とかされていた場合は知らんが、
int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
typedef double a;
とかされていた場合は知らんが、
362デフォルトの名無しさん
2021/01/31(日) 16:21:36.60ID:2wqasnUt 好きにしたら?
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし
363デフォルトの名無しさん
2021/01/31(日) 16:22:25.80ID:q0ry4PhJ364はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:27:00.30ID:+XHxoAeu365デフォルトの名無しさん
2021/01/31(日) 16:27:38.50ID:X7lGC0go case by case だろうけど
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い
366デフォルトの名無しさん
2021/01/31(日) 16:30:29.11ID:X7lGC0go [][][]だと3引数になるの?
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う
367デフォルトの名無しさん
2021/01/31(日) 16:31:13.60ID:NgKJGEE4 std::array<std::vector<double> > x;
みたいな
みたいな
368デフォルトの名無しさん
2021/01/31(日) 16:32:01.22ID:NgKJGEE4 ジャグ配列になってしまう…orz
369デフォルトの名無しさん
2021/01/31(日) 16:32:06.68ID:fCVb5Gn/ 継承といえば
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく
370デフォルトの名無しさん
2021/01/31(日) 16:34:24.04ID:ZnRwde8F371はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:34:43.94ID:+XHxoAeu372デフォルトの名無しさん
2021/01/31(日) 16:36:28.41ID:ZnRwde8F373デフォルトの名無しさん
2021/01/31(日) 16:38:11.57ID:q0ry4PhJ374デフォルトの名無しさん
2021/01/31(日) 16:43:15.04ID:fCVb5Gn/375はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 16:45:04.61ID:+XHxoAeu376デフォルトの名無しさん
2021/01/31(日) 16:51:19.01ID:ZnRwde8F >>370
[補足]
マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が
気を利かせたつもりで次のようなマクロを書いたとする:
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
作者の意図としては、
char *ptr1, *ptr2;
b(*ptr1++, *ptr2++);
のような場合にも正しく動作するようにしたいということで、
この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、
ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を
組むことが出来る。
一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、
int _x=1;
int _y=2;
b(_y,_x);
とすると、このマクロは誤動作し、
int x=1;
int y=2;
b(y,x);
と書いたときと結果が変わってくる。
[補足]
マクロ引数が二重に評価されてしまうのを防ぐため、マクロ作者が
気を利かせたつもりで次のようなマクロを書いたとする:
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
作者の意図としては、
char *ptr1, *ptr2;
b(*ptr1++, *ptr2++);
のような場合にも正しく動作するようにしたいということで、
この場合は、*ptr1++, *ptr2++ は、それぞれ1回ずつ評価されるので、
ptr1, ptr2 は、それぞれ 1ずつ前に進むので、アプリ作者の意図を
組むことが出来る。
一方、使う側が命名規約に従わず、アプリのローカル変数で_x,_yを定義し、
int _x=1;
int _y=2;
b(_y,_x);
とすると、このマクロは誤動作し、
int x=1;
int y=2;
b(y,x);
と書いたときと結果が変わってくる。
377デフォルトの名無しさん
2021/01/31(日) 16:55:15.98ID:wwbd/Qx2 こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね
378デフォルトの名無しさん
2021/01/31(日) 16:57:55.61ID:ZnRwde8F379デフォルトの名無しさん
2021/01/31(日) 17:00:34.53ID:ZnRwde8F [補足]
なお、Cの伝統だと、
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
ではなく、
#define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0)
と書く。
こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作
をしない。
なお、Cの伝統だと、
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); }
ではなく、
#define b(x,y) do {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } while(0)
と書く。
こうしておくと、このマクロを{}ブロックを伴わないif文に書いたときに異常動作
をしない。
380はちみつ餃子 ◆8X2XSCHEME
2021/01/31(日) 17:08:36.84ID:+XHxoAeu >>378
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。
そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。
そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。
381デフォルトの名無しさん
2021/01/31(日) 17:11:34.77ID:ziXVeJXQ382デフォルトの名無しさん
2021/01/31(日) 17:14:33.59ID:fCVb5Gn/383デフォルトの名無しさん
2021/01/31(日) 17:15:05.39ID:ZnRwde8F >>380
「All identifiers that begin with an underscore are always reserved
for use as identifiers with file scope in both the ordinary and
tag name spaces.」
「file scopeを持つ識別子として使用されるために予約されている」
だべ?
block scopeを持つ識別子として使用されたら、話がおかしいと思うが。
「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。
「All identifiers that begin with an underscore are always reserved
for use as identifiers with file scope in both the ordinary and
tag name spaces.」
「file scopeを持つ識別子として使用されるために予約されている」
だべ?
block scopeを持つ識別子として使用されたら、話がおかしいと思うが。
「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。
384デフォルトの名無しさん
2021/01/31(日) 17:15:45.54ID:fCVb5Gn/ int _x; //こんなのがあっても
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが
385デフォルトの名無しさん
2021/01/31(日) 17:19:07.49ID:ZnRwde8F >>382
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。
386デフォルトの名無しさん
2021/01/31(日) 17:20:06.45ID:ZnRwde8F387デフォルトの名無しさん
2021/01/31(日) 17:25:17.52ID:fCVb5Gn/ >>385
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ
388デフォルトの名無しさん
2021/01/31(日) 17:30:48.87ID:ZnRwde8F389デフォルトの名無しさん
2021/01/31(日) 17:37:15.73ID:2WBeknRq >>383
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの
390デフォルトの名無しさん
2021/01/31(日) 17:42:24.07ID:/1NNOLNs ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。
391デフォルトの名無しさん
2021/01/31(日) 17:45:15.36ID:fCVb5Gn/392デフォルトの名無しさん
2021/01/31(日) 17:51:16.48ID:/1NNOLNs C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。
ヘッダーに書くと影響範囲が大きいから。
ヘッダーに書くと影響範囲が大きいから。
393デフォルトの名無しさん
2021/01/31(日) 17:57:13.23ID:fCVb5Gn/ テンプレートなんか普通にヘッダに内容全部を書くが
マクロでバカやるやつがいなければ平和だよ
マクロでバカやるやつがいなければ平和だよ
394デフォルトの名無しさん
2021/01/31(日) 17:58:49.95ID:A8yllSCF ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。
395デフォルトの名無しさん
2021/01/31(日) 18:55:26.91ID:gXTMTlGe std::pair<>を継承してquadを作る場合どうなりますか?
396デフォルトの名無しさん
2021/01/31(日) 18:58:05.19ID:gXTMTlGe std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。
397デフォルトの名無しさん
2021/01/31(日) 19:37:14.68ID:/1NNOLNs std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。
398デフォルトの名無しさん
2021/01/31(日) 19:51:04.44ID:vFnk+kXo 順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか
399デフォルトの名無しさん
2021/01/31(日) 20:39:53.24ID:/1NNOLNs pairはSTLのアルゴリズムの恩恵を得るための物。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。
400デフォルトの名無しさん
2021/01/31(日) 21:08:09.18ID:vFnk+kXo set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?
401デフォルトの名無しさん
2021/01/31(日) 21:47:36.00ID:jyYnHelr set<int, vector<pair<int,int>*>>
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく
配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;
それならドでかい二次元配列に入れた方がラクかもしれない
連想配列でも出来る
map<int ,vector<pair<int,int>*>>>
静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる
全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く
402デフォルトの名無しさん
2021/01/31(日) 22:01:19.63ID:gvpDZJRs 構造体にしろよバカども
読みにくいだろ
読みにくいだろ
404デフォルトの名無しさん
2021/01/31(日) 23:01:41.96ID:eyFvwlDf googleスタイルガイドはそちらを推してるな
405デフォルトの名無しさん
2021/02/01(月) 01:17:42.16ID:FSry25xS >>391
int _x=_y;
int _y=_x;
ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目
で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、
int _x=引数の_y;
int _y=引数の_y;
となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。
int _x=_y;
int _y=_x;
ここの二行目の右辺の_xは、b(_y,_x)の第二引数の_xではなく、一行目
で宣言した_xになっているので、b(_y,_x)の第一引数の_yになる。つまり、
int _x=引数の_y;
int _y=引数の_y;
となるので、{}の中の_x, _yは、どちらも引数の_yの値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。
406デフォルトの名無しさん
2021/02/01(月) 01:19:32.38ID:FSry25xS407デフォルトの名無しさん
2021/02/01(月) 01:22:56.68ID:FSry25xS >>389
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。
なぜそんなルールにしたのかは分からんがな。
408デフォルトの名無しさん
2021/02/01(月) 03:22:30.15ID:fw9rYrIy409デフォルトの名無しさん
2021/02/01(月) 07:01:58.51ID:v6ebtUL1 >>400
unordered_map<int, int>
unordered_map<int, int>
410デフォルトの名無しさん
2021/02/01(月) 07:30:17.18ID:LhepLs74411デフォルトの名無しさん
2021/02/01(月) 07:38:30.21ID:LhepLs74 として安全に取り扱われる
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、
412デフォルトの名無しさん
2021/02/01(月) 08:09:47.67ID:v6ebtUL1 うちの若いのがあんなアホマクロ書いてたら張っ倒す
まあ、やらかしそうなのはいないけど
まあ、やらかしそうなのはいないけど
413デフォルトの名無しさん
2021/02/01(月) 09:26:53.82ID:5yr9aQzL414デフォルトの名無しさん
2021/02/01(月) 11:43:32.41ID:xFB8fPis 仕事に情熱が持てなくなった
415デフォルトの名無しさん
2021/02/01(月) 11:43:38.91ID:VhfMLcQM >>346
アホだ
アホだ
416デフォルトの名無しさん
2021/02/01(月) 12:06:54.06ID:ZelzH3+k417デフォルトの名無しさん
2021/02/01(月) 12:30:15.68ID:jyRtFT93 >>408
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。
418デフォルトの名無しさん
2021/02/01(月) 12:32:18.30ID:jyRtFT93 >>417
日本語で言うなら、「file scope 専用」。
日本語で言うなら、「file scope 専用」。
419デフォルトの名無しさん
2021/02/01(月) 12:46:40.95ID:/T40sBmV420デフォルトの名無しさん
2021/02/01(月) 12:55:04.41ID:ioMwojjO >>417
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?
421デフォルトの名無しさん
2021/02/01(月) 13:14:13.18ID:Z79JHlVc >>417
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ
422デフォルトの名無しさん
2021/02/01(月) 13:45:48.95ID:fos4FOVO 仕事に情熱が持てなくなった
423デフォルトの名無しさん
2021/02/01(月) 13:50:50.97ID:jyRtFT93 https://www.learncpp.com/cpp-tutorial/keywords-and-naming-identifiers/comment-page-2/
Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
Second, you should avoid naming your identifiers starting with an underscore, as these names are typically reserved for OS, library, and/or compiler use.
424デフォルトの名無しさん
2021/02/01(月) 14:08:01.06ID:fos4FOVO425デフォルトの名無しさん
2021/02/01(月) 14:13:00.08ID:fos4FOVO >>416
「コロナでゴロゴロ病」
「コロナでゴロゴロ病」
426デフォルトの名無しさん
2021/02/01(月) 15:47:43.70ID:Z79JHlVc >>423
そのサイトを紹介して何の証明になるの?
そのサイトを紹介して何の証明になるの?
427デフォルトの名無しさん
2021/02/01(月) 16:16:30.24ID:ZelzH3+k428デフォルトの名無しさん
2021/02/01(月) 16:22:14.79ID:ZelzH3+k C++ is the only real language for expert developers.
429デフォルトの名無しさん
2021/02/01(月) 16:55:19.50ID:fos4FOVO C/C++は好きだし比較的最強の部類だと思うけど
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想
430デフォルトの名無しさん
2021/02/01(月) 17:40:26.58ID:LhepLs74 システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、
431デフォルトの名無しさん
2021/02/01(月) 17:46:42.82ID:ZelzH3+k 中国人のありがたいお言葉ですぞ。
432デフォルトの名無しさん
2021/02/01(月) 18:02:36.06ID:jyRtFT93 大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人
やヨーロッパやアフリカが多いらしい。
やヨーロッパやアフリカが多いらしい。
433デフォルトの名無しさん
2021/02/01(月) 18:44:36.44ID:+21BJdPm いやrustが最強でしょww
434デフォルトの名無しさん
2021/02/01(月) 18:47:23.23ID:CDWd/LQ7 Goは駄目なん?
435デフォルトの名無しさん
2021/02/01(月) 18:57:50.94ID:0s4gr52A 自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?
436デフォルトの名無しさん
2021/02/01(月) 21:08:59.66ID:ZelzH3+k 検索するとひろみをお勧めしてくる時点で無理だった。
437デフォルトの名無しさん
2021/02/01(月) 21:34:17.50ID:ZelzH3+k しかもチップも取るんかーい!
438デフォルトの名無しさん
2021/02/01(月) 22:43:42.23ID:CtNYZU7D439デフォルトの名無しさん
2021/02/01(月) 22:46:24.33ID:FbSt8IWH 演算子オーバーロードは地雷度高い。
440デフォルトの名無しさん
2021/02/01(月) 22:53:14.56ID:CtNYZU7D まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね
441デフォルトの名無しさん
2021/02/01(月) 23:03:45.93ID:f9q1oLiO C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?
442デフォルトの名無しさん
2021/02/01(月) 23:11:37.27ID:ZelzH3+k 合ってます。
443デフォルトの名無しさん
2021/02/01(月) 23:17:45.03ID:f9q1oLiO444デフォルトの名無しさん
2021/02/02(火) 02:08:00.00ID:DmcXRB7X へ椅子ブックが少し綺麗になってます。
445デフォルトの名無しさん
2021/02/02(火) 02:10:27.05ID:DmcXRB7X RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。
凄いね。
446デフォルトの名無しさん
2021/02/02(火) 10:17:10.33ID:uFATDe77 ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?
447デフォルトの名無しさん
2021/02/02(火) 10:29:21.33ID:kGc73xZq 命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か
448デフォルトの名無しさん
2021/02/02(火) 12:37:23.36ID:vWAdhQ36449はちみつ餃子 ◆8X2XSCHEME
2021/02/02(火) 12:49:48.88ID:+MtixY9O450デフォルトの名無しさん
2021/02/02(火) 13:08:50.07ID:aIAA0dxH Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目
何が駄目といってまず名前が駄目
451デフォルトの名無しさん
2021/02/02(火) 13:45:57.34ID:8HFbTrXI GoはPC初心者用
昔でいういわばBASIC
昔でいういわばBASIC
452デフォルトの名無しさん
2021/02/02(火) 18:03:08.15ID:FSwj4KRK バレルシフタと単純ゲート
レイテンシも糞もねえだろ
レイテンシも糞もねえだろ
453デフォルトの名無しさん
2021/02/02(火) 18:11:36.53ID:8HFbTrXI でもその縛りプレイが大好きな変人も居る
454デフォルトの名無しさん
2021/02/02(火) 22:23:15.74ID:likaPPB8 operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く
455デフォルトの名無しさん
2021/02/02(火) 22:25:04.30ID:likaPPB8 インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg
シフト結果をテーブル化した方が速かったことg
456デフォルトの名無しさん
2021/02/02(火) 22:28:35.48ID:likaPPB8 あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…
457はちみつ餃子 ◆8X2XSCHEME
2021/02/03(水) 00:25:34.21ID:p0NvFN6a >>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。
458デフォルトの名無しさん
2021/02/03(水) 00:38:50.10ID:53EFMpkm ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。
459デフォルトの名無しさん
2021/02/03(水) 00:51:08.70ID:5b6XJ+8s >>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?
460はちみつ餃子 ◆8X2XSCHEME
2021/02/03(水) 00:54:51.58ID:p0NvFN6a 0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。
461デフォルトの名無しさん
2021/02/03(水) 01:01:02.57ID:+m9V7fCu >>458
具体例をお願いできますか?
具体例をお願いできますか?
462デフォルトの名無しさん
2021/02/03(水) 01:20:23.24ID:53EFMpkm コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。
463デフォルトの名無しさん
2021/02/03(水) 02:47:38.99ID:+m9V7fCu464デフォルトの名無しさん
2021/02/03(水) 06:01:31.58ID:QcjMAifW >>460
0x0000'ffffull
0x0000'ffffull
465デフォルトの名無しさん
2021/02/03(水) 06:29:42.77ID:y3dS6mbz unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…
466デフォルトの名無しさん
2021/02/03(水) 06:38:54.06ID:Nl+WsQpo >>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう
467デフォルトの名無しさん
2021/02/03(水) 10:23:38.02ID:q8Ed7guF 丸めと暗黙の型変換は違うものでは?
468デフォルトの名無しさん
2021/02/03(水) 11:47:09.95ID:HtH84Poo 丸めや打ち切りは浮動小数点数の概念やね
469デフォルトの名無しさん
2021/02/03(水) 13:02:19.58ID:53EFMpkm ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。
470デフォルトの名無しさん
2021/02/03(水) 14:45:43.48ID:J722wycU なにいってんだこいつ
471デフォルトの名無しさん
2021/02/03(水) 15:50:32.48ID:pE1foWCw472デフォルトの名無しさん
2021/02/03(水) 19:12:23.88ID:XaYGR0Wv そう?ポインタサイズくらいしか違いなくない?
473デフォルトの名無しさん
2021/02/03(水) 21:29:02.90ID:53EFMpkm まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。
474デフォルトの名無しさん
2021/02/03(水) 22:36:28.54ID:y3dS6mbz >>465の下の方のやつは符号拡張されたりする気がするorz
475デフォルトの名無しさん
2021/02/03(水) 22:40:25.83ID:Ea4RwHR/ >>424
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
> obj& operator [] (int i) {return elem[i];}
> もちろんelem[]の定義はobj elem[];
objは行列クラスで、elemはobjのメンバで行列要素を格納する一次元配列、で合ってますよね?
class obj{
array<int, ?> elem;
public:
obj& operator [] (int i) {return elem[i];}
};
ということですか?
476デフォルトの名無しさん
2021/02/04(木) 03:22:45.38ID:R0EDVzG0477デフォルトの名無しさん
2021/02/04(木) 04:17:06.60ID:SkZt7jTc478デフォルトの名無しさん
2021/02/04(木) 11:32:06.33ID:sIhIIpMX size_t型はSTLを使う人なら避けて通れない。
479デフォルトの名無しさん
2021/02/04(木) 11:40:48.70ID:ZzRKCYY/ >>471
それ本来そこにあった問題に気付いていないだけだったと思うぞ
それ本来そこにあった問題に気付いていないだけだったと思うぞ
480デフォルトの名無しさん
2021/02/04(木) 11:44:02.03ID:ZzRKCYY/481デフォルトの名無しさん
2021/02/04(木) 12:06:17.02ID:DWE1XJjK >>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが
482デフォルトの名無しさん
2021/02/04(木) 12:29:12.61ID:waKgX41w 一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};
でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。
483デフォルトの名無しさん
2021/02/04(木) 13:10:42.29ID:g2cSm/y9 malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?
vector ( または array ) をインスタンス化するにはどうすればよいですか?
484はちみつ餃子 ◆8X2XSCHEME
2021/02/04(木) 13:13:43.37ID:ttCVH4wp >>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。
https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ
だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。
提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript
485はちみつ餃子 ◆8X2XSCHEME
2021/02/04(木) 13:20:29.03ID:ttCVH4wp >>483
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。
でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。
でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。
486デフォルトの名無しさん
2021/02/04(木) 15:40:11.75ID:R0EDVzG0 >>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)
487デフォルトの名無しさん
2021/02/04(木) 16:48:02.49ID:DWE1XJjK488デフォルトの名無しさん
2021/02/04(木) 17:07:22.68ID:dB2jWvbu unique_ptr<Hoge[]> p(new Hoge[4]{a, b, c, d});
みたいな定義と同時に代入は出来るのですが
(各要素毎に Hoge(a), Hoge(b), Hoge(c), Hoge(d) になりました)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
だと引数無しのデフォルトコンストラクタが無いといけないし
(そもそも引数無しのデフォルトコンストラクタ作りたくない)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>({a, b, c, d});
とか
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4){a, b, c, d};
とかはコンパイル出来ませんでした
引数無しのデフォルトコンストラクタがあれば
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
p.reset(new Hoge[4]{a, b, c, d});
だとうまく逝きますが効率が悪い気がします
make_unique は使ってはいけないのでしょうか?
みたいな定義と同時に代入は出来るのですが
(各要素毎に Hoge(a), Hoge(b), Hoge(c), Hoge(d) になりました)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
だと引数無しのデフォルトコンストラクタが無いといけないし
(そもそも引数無しのデフォルトコンストラクタ作りたくない)
unique_ptr<Hoge[]> p = make_unique<Hoge[]>({a, b, c, d});
とか
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4){a, b, c, d};
とかはコンパイル出来ませんでした
引数無しのデフォルトコンストラクタがあれば
unique_ptr<Hoge[]> p = make_unique<Hoge[]>(4);
p.reset(new Hoge[4]{a, b, c, d});
だとうまく逝きますが効率が悪い気がします
make_unique は使ってはいけないのでしょうか?
489デフォルトの名無しさん
2021/02/04(木) 17:51:26.68ID:b9gCdorg >>487
485も見てねー
485も見てねー
490デフォルトの名無しさん
2021/02/04(木) 17:52:07.72ID:b9gCdorg まちがえた。484
491デフォルトの名無しさん
2021/02/04(木) 20:56:33.92ID:ZyzsEROR 配列のunique_ptrは色々と中途半端で使いづらいからオススメしない
492デフォルトの名無しさん
2021/02/04(木) 22:14:32.91ID:b9gCdorg493デフォルトの名無しさん
2021/02/04(木) 22:20:26.07ID:un3OWVjy494デフォルトの名無しさん
2021/02/04(木) 22:47:34.63ID:/RiZUiBF >>493
アドレスを整数に入れるのは過去の話じゃないぞ
アドレスを整数に入れるのは過去の話じゃないぞ
495デフォルトの名無しさん
2021/02/04(木) 22:51:09.67ID:sIhIIpMX intptr_t整数型を使ってたのっていつの時代?
496デフォルトの名無しさん
2021/02/04(木) 23:24:48.23ID:hMfhfQWp uintptr_tならいつもお世話になっております
497デフォルトの名無しさん
2021/02/05(金) 00:01:41.63ID:NIkVqohR この手合いのボケを量産するのはC++の害だな
498デフォルトの名無しさん
2021/02/05(金) 01:35:15.82ID:EB7VAtvO むしろCの害
499デフォルトの名無しさん
2021/02/05(金) 01:52:47.05ID:xbM9VFWh Rubyって結局勉強しないままPythonの時代になってしまったな
500デフォルトの名無しさん
2021/02/05(金) 04:42:48.12ID:ZuGfyZDY 同様にC++を勉強しないままRustの時代になる
501デフォルトの名無しさん
2021/02/05(金) 09:51:39.70ID:U76qOqQA >>488
https://www.it-swarm.jp.net/ja/c%2B%2B/new演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
https://ja.stackoverflow.com/questions/24876/make-uniqueの利点
https://www.it-swarm.jp.net/ja/c%2B%2B/new演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
https://ja.stackoverflow.com/questions/24876/make-uniqueの利点
502デフォルトの名無しさん
2021/02/05(金) 13:28:24.98ID:ou/gU5gH c++やらずにrustとか馬鹿量産するだけにしか思えんな。
503デフォルトの名無しさん
2021/02/05(金) 14:10:32.07ID:Xzu/prlh それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう
504デフォルトの名無しさん
2021/02/05(金) 14:17:08.86ID:M7C1cdPI ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに
505デフォルトの名無しさん
2021/02/05(金) 14:18:44.73ID:ou/gU5gH506デフォルトの名無しさん
2021/02/05(金) 15:14:07.00ID:zImWQG8r VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?
小まめにupdateしないからだろか?
507デフォルトの名無しさん
2021/02/05(金) 15:14:37.91ID:zImWQG8r Goは標準ライブラリが圧倒してる。
508デフォルトの名無しさん
2021/02/05(金) 15:18:44.78ID:zImWQG8r 半年に一度フルビルドみたいになってしまう。
509デフォルトの名無しさん
2021/02/05(金) 16:12:02.35ID:A9cGRDK5 Goは何がクソといってまず名前がクソ
510デフォルトの名無しさん
2021/02/05(金) 16:36:26.85ID:zImWQG8r C++は基本だから、義務教育で習得するべき。
511デフォルトの名無しさん
2021/02/05(金) 16:50:43.11ID:/MNAnFTn 言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな
オマケで紹介される程度かな
512デフォルトの名無しさん
2021/02/05(金) 18:21:14.28ID:7P5D6x+s513デフォルトの名無しさん
2021/02/05(金) 19:09:46.26ID:AjJLCZml 仕事ができるのならw
514デフォルトの名無しさん
2021/02/05(金) 20:48:06.29ID:ou/gU5gH >>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。
515デフォルトの名無しさん
2021/02/05(金) 21:49:13.85ID:a81hUa+F というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。
516デフォルトの名無しさん
2021/02/05(金) 21:59:53.11ID:kFtfKVND お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ
それって不思議だわ
517デフォルトの名無しさん
2021/02/05(金) 22:34:33.49ID:EB7VAtvO Rustの名前は金属の錆じゃなくてサビ菌が由来
518デフォルトの名無しさん
2021/02/05(金) 22:36:07.20ID:NIkVqohR Rottenでいい
519デフォルトの名無しさん
2021/02/05(金) 22:48:47.57ID:a81hUa+F Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。
520デフォルトの名無しさん
2021/02/06(土) 03:04:22.39ID:kQVOjfvp 「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが
521デフォルトの名無しさん
2021/02/06(土) 04:45:05.79ID:oQfB5lBJ >>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う
522デフォルトの名無しさん
2021/02/06(土) 04:50:47.70ID:GfZyzG1j ブーリアン革命。
523デフォルトの名無しさん
2021/02/06(土) 05:13:59.88ID:oQfB5lBJ 革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ
524デフォルトの名無しさん
2021/02/06(土) 07:27:56.30ID:S9Y30hRK >>520
だとしたら胡散臭さ200%のカルトだな
だとしたら胡散臭さ200%のカルトだな
525デフォルトの名無しさん
2021/02/06(土) 09:31:12.13ID:rZdEmaWa >>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる
他言語も触ってみることをオススメする
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる
他言語も触ってみることをオススメする
526デフォルトの名無しさん
2021/02/06(土) 09:34:34.84ID:5Ze23T9D よくわからんが安全カミソリみたいなものかね?
527デフォルトの名無しさん
2021/02/06(土) 10:10:31.61ID:rZdEmaWa >>526
そんな感じ
まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
そんな感じ
まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う
528デフォルトの名無しさん
2021/02/06(土) 10:11:15.51ID:S9Y30hRK >>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容として良からぬ事を企むという次元には程遠いわけか
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容として良からぬ事を企むという次元には程遠いわけか
529デフォルトの名無しさん
2021/02/06(土) 10:12:54.42ID:rZdEmaWa >>528
投稿した瞬間の不意打ちレスワロス
投稿した瞬間の不意打ちレスワロス
530デフォルトの名無しさん
2021/02/06(土) 10:17:55.71ID:u/OM7jGY531デフォルトの名無しさん
2021/02/06(土) 11:01:19.43ID:PohEB++t >>504
Unity とか UE はきらい?
Unity とか UE はきらい?
532デフォルトの名無しさん
2021/02/06(土) 11:07:09.44ID:PohEB++t533デフォルトの名無しさん
2021/02/06(土) 11:09:03.81ID:gLiOOG5V rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう
534デフォルトの名無しさん
2021/02/06(土) 12:19:39.89ID:S9Y30hRK >>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ
535デフォルトの名無しさん
2021/02/06(土) 12:25:16.36ID:UXUwo66G それだけ無責任で信頼出来ない人間が多いって事だろ
536デフォルトの名無しさん
2021/02/06(土) 12:31:39.86ID:58EQLFGq 信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当
バグを流出させたら銃殺ぐらいが妥当
537デフォルトの名無しさん
2021/02/06(土) 12:53:16.04ID:DutNpJ49 >>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない
538デフォルトの名無しさん
2021/02/06(土) 13:19:02.89ID:Hu1Z4B3S >>534
負け犬の遠吠え
負け犬の遠吠え
539デフォルトの名無しさん
2021/02/06(土) 13:29:55.66ID:EjDQT0l8 >>460
「(type)~0」でどう?
「(type)~0」でどう?
540デフォルトの名無しさん
2021/02/06(土) 13:32:30.22ID:TGsCRbLO >>536
ハゲを流出させたら〜と空目した
ハゲを流出させたら〜と空目した
541デフォルトの名無しさん
2021/02/06(土) 13:33:33.54ID:rZdEmaWa >>538
しー!余計なことを言うんじゃないっ!
しー!余計なことを言うんじゃないっ!
542デフォルトの名無しさん
2021/02/06(土) 13:38:49.17ID:Hu1Z4B3S >>528はスマートポインタを知らなさそう
文章から溢れ出る無能感
文章から溢れ出る無能感
543デフォルトの名無しさん
2021/02/06(土) 13:44:48.20ID:S9Y30hRK 構ってちゃんは、スマポ憶えたてらしいなw
544デフォルトの名無しさん
2021/02/06(土) 13:46:38.15ID:gYQHLnIz 天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな
って豪語してたいつぞやの天才くんが帰ってきたのかな
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…
546デフォルトの名無しさん
2021/02/06(土) 13:53:43.56ID:ROiZJzWf コテハンでこの程度の文章も読めないのは
>>546
そりゃ馬鹿だからでしょう…
そりゃ馬鹿だからでしょう…
548デフォルトの名無しさん
2021/02/06(土) 13:59:04.79ID:aJ9IYVGP どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど
まぁ、荒れるから誰とは言わないけど
549デフォルトの名無しさん
2021/02/06(土) 14:05:03.59ID:fN0CSTPN 傲慢かましすぎもへりくだりすぎも良くない
550デフォルトの名無しさん
2021/02/06(土) 14:06:38.65ID:zTEH7215 >>548
すでに荒れる種をまいてるきみが一番有害
すでに荒れる種をまいてるきみが一番有害
551デフォルトの名無しさん
2021/02/06(土) 14:12:51.02ID:aJ9IYVGP >>550
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全然思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!!
だから!それ以上この話はやめろぉおおおお!!!
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全然思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!!
だから!それ以上この話はやめろぉおおおお!!!
552デフォルトの名無しさん
2021/02/06(土) 14:21:36.41ID:rZdEmaWa553デフォルトの名無しさん
2021/02/06(土) 14:56:25.58ID:58EQLFGq >>552が扱えるかどうかが天才か否かの基準か!
554デフォルトの名無しさん
2021/02/06(土) 15:01:56.11ID:S9Y30hRK 綺麗かどうかじゃない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない
555デフォルトの名無しさん
2021/02/06(土) 15:11:21.64ID:f5ipo2xA >>553
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する
556デフォルトの名無しさん
2021/02/06(土) 15:21:29.14ID:58EQLFGq 行政が法律に基づき行うなら問題無い
人が作った法律なら人が改正することができる
人が作った法律なら人が改正することができる
557デフォルトの名無しさん
2021/02/06(土) 15:22:17.24ID:S9Y30hRK スレ違い板違い失せろ
558デフォルトの名無しさん
2021/02/06(土) 15:28:25.66ID:58EQLFGq559デフォルトの名無しさん
2021/02/06(土) 15:30:29.13ID:f5ipo2xA 自作自演?
560デフォルトの名無しさん
2021/02/06(土) 16:36:26.06ID:oR/8CbQ7 やらかしちゃいましたねー
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました
こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました
こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう
561デフォルトの名無しさん
2021/02/06(土) 16:38:50.88ID:oR/8CbQ7562デフォルトの名無しさん
2021/02/06(土) 16:54:20.22ID:bwIKlxQ8 std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。
UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。
UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。
563はちみつ餃子 ◆8X2XSCHEME
2021/02/06(土) 17:05:10.96ID:N9CbrPsc >>562
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。
高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。
高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。
564蟻人間 ◆T6xkBnTXz7B0
2021/02/06(土) 17:07:58.83ID:gG6zzvvp >>562 Windowsだったら
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。
565デフォルトの名無しさん
2021/02/06(土) 17:41:00.54ID:GfZyzG1j スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。
事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。
事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。
566デフォルトの名無しさん
2021/02/06(土) 17:44:16.27ID:+KPQZs33567蟻人間 ◆T6xkBnTXz7B0
2021/02/06(土) 17:50:18.63ID:gG6zzvvp https://ja.wikipedia.org/wiki/UTF-8
>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。
>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。
568蟻人間 ◆T6xkBnTXz7B0
2021/02/06(土) 17:55:50.63ID:gG6zzvvp つまり、
uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}
uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}
569デフォルトの名無しさん
2021/02/06(土) 18:11:29.66ID:6eQmSTNr プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/453
UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています
こういう規則か?
https://mevius.5ch.net/test/read.cgi/tech/1594702426/453
UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています
こういう規則か?
570デフォルトの名無しさん
2021/02/06(土) 19:16:40.60ID:S9Y30hRK >>561
殺虫剤のパラドックスって知ってる?
殺虫剤のパラドックスって知ってる?
571デフォルトの名無しさん
2021/02/06(土) 20:33:00.74ID:zn5WrP4C >>570
恥の上塗り?w
ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
https://note.com/akiyama924/n/nc006015de2d2
恥の上塗り?w
ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
https://note.com/akiyama924/n/nc006015de2d2
572デフォルトの名無しさん
2021/02/06(土) 21:07:07.97ID:GfZyzG1j テストロボットだぞ、ガシャーン!ガシャーン!
573デフォルトの名無しさん
2021/02/06(土) 21:08:55.93ID:GfZyzG1j 片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。
なんでWindowsにこだわるんだろ。
なんでWindowsにこだわるんだろ。
574蟻人間 ◆T6xkBnTXz7B0
2021/02/06(土) 22:54:31.87ID:gG6zzvvp575デフォルトの名無しさん
2021/02/06(土) 23:50:48.27ID:58EQLFGq クレブナー基底で解くやつ!
576デフォルトの名無しさん
2021/02/07(日) 06:07:42.85ID:HYoiJUgB >>571
質問に答えてねw
質問に答えてねw
577デフォルトの名無しさん
2021/02/07(日) 06:47:27.09ID:jX/y7Db/578デフォルトの名無しさん
2021/02/07(日) 08:26:36.56ID:HYoiJUgB579デフォルトの名無しさん
2021/02/07(日) 08:29:49.52ID:p49/UnNX テストはやらないよりもやったほうがはるかに良い
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です
580デフォルトの名無しさん
2021/02/07(日) 08:49:47.79ID:m5BD34IK >>578
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ
581デフォルトの名無しさん
2021/02/07(日) 08:57:32.70ID:HYoiJUgB >>580
おまえさん、こう言ったんだぜ
> 不具合が流出しない仕組みを揃えておきましょう
流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある
揃えられるものなら揃えてみな
自分ができねえことを他人に言うな
おまえさん、こう言ったんだぜ
> 不具合が流出しない仕組みを揃えておきましょう
流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある
揃えられるものなら揃えてみな
自分ができねえことを他人に言うな
582デフォルトの名無しさん
2021/02/07(日) 09:11:28.01ID:p49/UnNX 人は思い込みを反証することで生きていける
だが完璧に反証できないこともある
ユニットテストはそのかけがえのないものを教えてくれた
だが完璧に反証できないこともある
ユニットテストはそのかけがえのないものを教えてくれた
583デフォルトの名無しさん
2021/02/07(日) 09:41:41.73ID:m5BD34IK584デフォルトの名無しさん
2021/02/07(日) 10:00:05.54ID:HYoiJUgB ああ、俺じゃないで逃げるのか
情けねえやつだな
情けねえやつだな
585デフォルトの名無しさん
2021/02/07(日) 10:07:20.85ID:jX/y7Db/586デフォルトの名無しさん
2021/02/07(日) 10:10:29.25ID:jX/y7Db/587デフォルトの名無しさん
2021/02/07(日) 10:13:42.72ID:2AGAGJ05 マスクも手洗いもコロナを100%防げるわけじゃないから
マスク付ける必要も手を洗う必要もないね
マスク付ける必要も手を洗う必要もないね
588デフォルトの名無しさん
2021/02/07(日) 10:20:21.65ID:HYoiJUgB テストツールいらねえなんて言ってねえぜ
テストツール万能論はアホの考えだと言っている
テストツール万能論はアホの考えだと言っている
589デフォルトの名無しさん
2021/02/07(日) 10:21:25.49ID:HYoiJUgB で、身に覚えのあるやつが返事してるから
ニヤニヤ笑ってるのさ
ニヤニヤ笑ってるのさ
590デフォルトの名無しさん
2021/02/07(日) 10:48:37.66ID:2AGAGJ05 「テストツール万能論」を主張したレスなんて一つも見えないんだけど
存在しないものを見てニヤニヤしてる変態こわい
存在しないものを見てニヤニヤしてる変態こわい
591デフォルトの名無しさん
2021/02/07(日) 10:56:59.83ID:HYoiJUgB それを>>587がぬかすとは笑止な
592デフォルトの名無しさん
2021/02/07(日) 11:11:45.24ID:0QEz1MW7 構い過ぎじゃね?
593デフォルトの名無しさん
2021/02/07(日) 11:52:54.07ID:jX/y7Db/594デフォルトの名無しさん
2021/02/07(日) 12:03:05.54ID:2AGAGJ05 ああ・・・そういうことね・・・すまん触るべきじゃなかった
595デフォルトの名無しさん
2021/02/07(日) 13:47:28.22ID:p49/UnNX すまんで済んだらユニットテストは要らんわ!
596デフォルトの名無しさん
2021/02/07(日) 14:09:34.56ID:qbLU6RFF 野菜食えで馬鹿みたいにブチギレるホリエと一緒やな
597デフォルトの名無しさん
2021/02/07(日) 15:05:54.73ID:HYoiJUgB598デフォルトの名無しさん
2021/02/07(日) 15:41:29.20ID:yi1XmM9H >>597
文章を字面通りにしか解釈できない人?
文章を字面通りにしか解釈できない人?
599デフォルトの名無しさん
2021/02/07(日) 16:31:48.90ID:jcLu/xd9 vectorを参照渡しするときの方法について教えてくください
class sansyo
{
private:
std::vector<short> _stdSansyo;
public:
void setSansyo(std::vector<short>& sansyo);
}
;void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = sansyo;
_stdSansyo[5] = 500;
}
int main()
{
std::vector<short> moto;
sansyo cSansyo;
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto);//ここで参照渡しのはず
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わっていない
}
}
こんなふうに、参照渡しにしてみたのですがどうも参照渡しになっていないでそのまま新しいvectorが作られちゃったぽいのですが
これだとメモリを倍使っちゃってるし、時間も掛かってますよね
どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう
class sansyo
{
private:
std::vector<short> _stdSansyo;
public:
void setSansyo(std::vector<short>& sansyo);
}
;void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = sansyo;
_stdSansyo[5] = 500;
}
int main()
{
std::vector<short> moto;
sansyo cSansyo;
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto);//ここで参照渡しのはず
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わっていない
}
}
こんなふうに、参照渡しにしてみたのですがどうも参照渡しになっていないでそのまま新しいvectorが作られちゃったぽいのですが
これだとメモリを倍使っちゃってるし、時間も掛かってますよね
どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう
601デフォルトの名無しさん
2021/02/07(日) 17:13:26.18ID:8CWTHaUD >>600
サンプル貼ってよ
サンプル貼ってよ
602デフォルトの名無しさん
2021/02/07(日) 17:21:04.63ID:jcLu/xd9 std::swapも右辺値参照も全然上手く行きそうになかっのたで
宣言をポインタにして
private:
std::vector<short> *_stdSansyo;
void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = &sansyo;
sansyo[6] = 100;
_stdSansyo->data()[5] = 50;
}
関数をこんなふうに書き換えたら、ちゃんと参照だけで動いたのでもういいや
けど右辺値参照とstd::swapの例も出してくれたらこれから色々いたスカリマス
宣言をポインタにして
private:
std::vector<short> *_stdSansyo;
void sansyo::setSansyo(std::vector<short>& sansyo)
{
_stdSansyo = &sansyo;
sansyo[6] = 100;
_stdSansyo->data()[5] = 50;
}
関数をこんなふうに書き換えたら、ちゃんと参照だけで動いたのでもういいや
けど右辺値参照とstd::swapの例も出してくれたらこれから色々いたスカリマス
603デフォルトの名無しさん
2021/02/07(日) 17:24:59.07ID:8CWTHaUD604デフォルトの名無しさん
2021/02/07(日) 17:28:56.01ID:yi1XmM9H >>599
参照渡し自体はできてるはず。
ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。
参照渡し自体はできてるはず。
ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。
605デフォルトの名無しさん
2021/02/07(日) 17:29:10.92ID:jX/y7Db/ >>598
もうそう言うことにしないと自我が保てないんだろw
もうそう言うことにしないと自我が保てないんだろw
606デフォルトの名無しさん
2021/02/07(日) 17:59:39.88ID:p49/UnNX sansyo::_stdSanshoをどうしても参照にしたいならこうするしか、
class sansho {
private:
std::vector<short> _stdSansyo;
public:
sansho(std::vector<short>& src) : _stdSansyo(src) { }
void setSansyo(std::vector<short>& sansyo);
};
void sansyo::setSansyo(std::vector<short>& sansyo) {
_stdSansyo[5] = 500;
}
int main() {
std::vector<short> moto;
sansyo cSansyo(moto); //ここで参照渡し
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto); // moto[5]に500が入りまくり
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わった!(予定
}
};
class sansho {
private:
std::vector<short> _stdSansyo;
public:
sansho(std::vector<short>& src) : _stdSansyo(src) { }
void setSansyo(std::vector<short>& sansyo);
};
void sansyo::setSansyo(std::vector<short>& sansyo) {
_stdSansyo[5] = 500;
}
int main() {
std::vector<short> moto;
sansyo cSansyo(moto); //ここで参照渡し
for (int i = 0; i < 10; i++) {
short tmp = i * 2;
moto.push_back(tmp);
}
cSansyo.setSansyo(moto); // moto[5]に500が入りまくり
for (int i = 0; i < 10; i++) {
std::cout << "値=" << moto[i] << "\n"; //値が変わった!(予定
}
};
607デフォルトの名無しさん
2021/02/07(日) 18:00:52.99ID:HYoiJUgB >>598
だったら何だとぬかす気だ?
> 存在しないものを見てニヤニヤしてる変態こわい
> 文章を字面通りにしか解釈できない人?
要するに話になんない奴ってことだろ
言ったことにも裏の意味にもコメントされたくない
じゃあ相手しねえでやるから黙ってろゴミ
だったら何だとぬかす気だ?
> 存在しないものを見てニヤニヤしてる変態こわい
> 文章を字面通りにしか解釈できない人?
要するに話になんない奴ってことだろ
言ったことにも裏の意味にもコメントされたくない
じゃあ相手しねえでやるから黙ってろゴミ
608デフォルトの名無しさん
2021/02/07(日) 18:02:35.24ID:p49/UnNX 訂正orz
誤: private: std::vector<short> _stdSansyo;
正: private: std::vector<short>& _stdSansyo;
もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ!
という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして
ポインタを持つようにすべき
誤: private: std::vector<short> _stdSansyo;
正: private: std::vector<short>& _stdSansyo;
もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ!
という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして
ポインタを持つようにすべき
609デフォルトの名無しさん
2021/02/07(日) 18:10:05.07ID:p49/UnNX ちゅかもっと大きな一般原則としてつぎのどっちかにすべき
(1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない
(2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる
※ 個人の感想です
つまり出題が悪い。出し直し
(1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない
(2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる
※ 個人の感想です
つまり出題が悪い。出し直し
610はちみつ餃子 ◆8X2XSCHEME
2021/02/07(日) 18:10:05.98ID:hHDgzHUe611デフォルトの名無しさん
2021/02/07(日) 18:11:12.01ID:yi1XmM9H >>607
自分以外の複数の人を同一人物だと思っちゃう人?
自分以外の複数の人を同一人物だと思っちゃう人?
612デフォルトの名無しさん
2021/02/07(日) 18:14:03.86ID:p49/UnNX >>611
ネットの総意とか言い出しちゃう人?
ネットの総意とか言い出しちゃう人?
613デフォルトの名無しさん
2021/02/07(日) 18:16:20.19ID:p49/UnNX 検証不能な事物を錦の御旗にするような人間が
ソフトウェアのテスト推しなのは
大いなる矛盾である氏ね
ソフトウェアのテスト推しなのは
大いなる矛盾である氏ね
614デフォルトの名無しさん
2021/02/07(日) 18:18:25.00ID:HYoiJUgB >>611
あの流れで
> 文章を字面通りにしか解釈できない人?
なんてぬかすやつは複数ID自演厨と見なされて当然だ
疑われたくなければ口の利き方に気をつけな
疑いは晴れてない
この後の発言にも気をつけるんだな
あの流れで
> 文章を字面通りにしか解釈できない人?
なんてぬかすやつは複数ID自演厨と見なされて当然だ
疑われたくなければ口の利き方に気をつけな
疑いは晴れてない
この後の発言にも気をつけるんだな
615デフォルトの名無しさん
2021/02/07(日) 18:24:44.17ID:4v/nAOdw >>566
なにこれ
なにこれ
616デフォルトの名無しさん
2021/02/07(日) 18:29:05.24ID:U/6f7Qk0 参照をフィールドに保持するのは、一部のパーサーくらいでは?
しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。
しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。
617デフォルトの名無しさん
2021/02/07(日) 18:31:34.10ID:U/6f7Qk0 むかし5chで誰かが、プログラムを書くときは必ずテストしてるはずなんだって言ってましたが。
それを単体テストとして書いておけばずっと使えて便利だよと。
その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。
それを単体テストとして書いておけばずっと使えて便利だよと。
その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。
618デフォルトの名無しさん
2021/02/07(日) 19:06:50.71ID:n+epGkV9619デフォルトの名無しさん
2021/02/07(日) 20:53:42.20ID:U/6f7Qk0 バッドエンディングですね。
620デフォルトの名無しさん
2021/02/07(日) 21:03:56.50ID:ZOvCZ0cx グローバル変数使うなとは言わないけどコメントもないのはキツい
grep掛けて検索しても訳分からん
ポインタで飛び火してるときなんてもう…
grep掛けて検索しても訳分からん
ポインタで飛び火してるときなんてもう…
621デフォルトの名無しさん
2021/02/07(日) 22:09:55.11ID:IiZq+u+t 演算子オーバーロードの厄介さはキーワード検索で拾いにくいこと。
反復子もそうだが。ま、言い出したらきりないが。
反復子もそうだが。ま、言い出したらきりないが。
622仮トリップ ◆4DF7.T7u4M
2021/02/07(日) 22:57:26.65ID:HI2f2oIL >>561を書いたのは私なんだけどなぁ...
面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ
面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ
623仮トリップ ◆4DF7.T7u4M
2021/02/07(日) 23:02:22.83ID:HI2f2oIL ちなみに、>>561以降は何も述べてない。
私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。
殺虫剤のパラドックス?それがどうした?
私はテストコードを書いて不具合を激的に抑えているが?
殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。
私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。
殺虫剤のパラドックス?それがどうした?
私はテストコードを書いて不具合を激的に抑えているが?
殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。
624蟻人間 ◆T6xkBnTXz7B0
2021/02/07(日) 23:09:32.25ID:sfdJNFTq625デフォルトの名無しさん
2021/02/07(日) 23:20:12.91ID:IiZq+u+t 殺虫剤のパラドックスなんてものは存在しない。
ただの退行テスト不足だ。
ただの退行テスト不足だ。
626デフォルトの名無しさん
2021/02/08(月) 06:24:22.18ID:PnrMZIJR 殺虫剤のパラドックスって言いたかっただけやろw
そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前
摘出できたら単なる修正漏れだしw
JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う
そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前
摘出できたら単なる修正漏れだしw
JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う
627デフォルトの名無しさん
2021/02/08(月) 06:42:41.05ID:HwnOmmQF 蒸し返さなくていいから……
628デフォルトの名無しさん
2021/02/08(月) 07:03:25.17ID:nKLqWVxG 虫返さないですと!?
629デフォルトの名無しさん
2021/02/08(月) 11:05:43.31ID:NGjwD54G630デフォルトの名無しさん
2021/02/08(月) 11:20:50.36ID:VJ9lplXi >>627,628
そういうのは無視しろ
そういうのは無視しろ
631デフォルトの名無しさん
2021/02/08(月) 12:00:56.57ID:zDqHH6LK スルーの法則
632デフォルトの名無しさん
2021/02/08(月) 12:43:41.70ID:DuebuhTc633デフォルトの名無しさん
2021/02/08(月) 14:04:18.90ID:VJ9lplXi コンストラクタでなら参照型のメンバ変数に保存できる。ほとんどの人はやらないけど。
634デフォルトの名無しさん
2021/02/08(月) 18:54:29.18ID:DuebuhTc635デフォルトの名無しさん
2021/02/08(月) 19:12:34.60ID:nKLqWVxG アイキャンユーキャン。
636デフォルトの名無しさん
2021/02/08(月) 20:51:28.21ID:U8Md53kE637デフォルトの名無しさん
2021/02/08(月) 21:15:43.14ID:NGjwD54G shared_ptr(またはスマポ)至上主義の変なやつ以前から居るんだよな
相手にするな
相手にするな
638デフォルトの名無しさん
2021/02/08(月) 21:37:27.20ID:UsSsiWeS ナマポ使ったほうが良い場面なんて皆無でしょう
639デフォルトの名無しさん
2021/02/08(月) 21:48:31.75ID:2GJiXyxS 出たwナマポ完全否定奴w
640デフォルトの名無しさん
2021/02/08(月) 21:58:57.06ID:VJ9lplXi 参照型のメンバ変数は参照オブジェクトの生存期間を保証できないからweak_ptrで保存しておいて使う時だけshared_ptrを取得するのがC++的な解決なんじゃないの。
641デフォルトの名無しさん
2021/02/08(月) 22:08:09.48ID:FKp3giDs スマポにしたら所有権の問題を考えなくてよい
というわけではないからスマポ使えというのは妥当ではない
逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い
ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら
エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避
というわけではないからスマポ使えというのは妥当ではない
逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い
ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら
エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避
642デフォルトの名無しさん
2021/02/08(月) 22:11:14.29ID:NgGwlfwa コピー禁止のshared_ptr欲しい
643デフォルトの名無しさん
2021/02/08(月) 22:25:23.27ID:bp+4mh0R すべてスマポで書くスタイルも悪くないと思うけど、メイヤーズ神もツリー構造で子が親のポインタを持つときはナマポで十分と書いている
644デフォルトの名無しさん
2021/02/08(月) 22:27:43.60ID:34Jom8HU 木のノードは子へのポインタじゃなくて子のノードIDを持て😡
645デフォルトの名無しさん
2021/02/08(月) 22:48:15.38ID:NgGwlfwa 自分よりポインタの方が寿命が長いことが保証されているなら確かに生ポで問題ないが
それが成り立つ状況ってなかなかないよな。
それが成り立つ状況ってなかなかないよな。
646デフォルトの名無しさん
2021/02/08(月) 23:02:19.81ID:VJ9lplXi 参照先の実体がまだ生存しているかどうか知るにはweak_ptr::expired()を使うしかないのが現状でしょ。
647デフォルトの名無しさん
2021/02/08(月) 23:07:56.19ID:nKLqWVxG Chromiumはstd::unique_ptrを全面的に使ってるけど、ポインタを使う設計そのものが古いような気がする。
648デフォルトの名無しさん
2021/02/08(月) 23:13:28.50ID:BwguerZK まあcコードを全く使わないってのならいいんでないの。
ただc++のポータビリティーは君が思ってるより低いけどね。
ただc++のポータビリティーは君が思ってるより低いけどね。
649デフォルトの名無しさん
2021/02/08(月) 23:23:15.47ID:cR8ppl+C 露骨すぎるマウント取りたがりダッセーwww
650デフォルトの名無しさん
2021/02/09(火) 01:58:29.04ID:qUmf+U4D マウントじゃなくてポインタでは?
651デフォルトの名無しさん
2021/02/09(火) 02:46:23.52ID:jPnyP+Vp C++に特化したAPIなんてどこのOSでも提供されないから、結局、Cの配列と互換性のあるstd::vectorやstd::arrayを使わざるを得なくなる。
652デフォルトの名無しさん
2021/02/09(火) 04:01:45.22ID:qUmf+U4D653デフォルトの名無しさん
2021/02/09(火) 07:34:27.86ID:nSJhwzEU >>651
data()を必ず使う手合いか?
data()を必ず使う手合いか?
654デフォルトの名無しさん
2021/02/09(火) 07:39:10.06ID:s3p3GZ7R 木は木全体を収める領域ごと一気に解放する場合もあるから別に
655デフォルトの名無しさん
2021/02/09(火) 17:49:12.66ID:KrtnTLUi >Cの配列と互換性のある
doubt
doubt
656デフォルトの名無しさん
2021/02/09(火) 17:53:30.91ID:LEWRJrN2 ダウトとデビューって似てるよね
657デフォルトの名無しさん
2021/02/09(火) 18:35:55.16ID:qUmf+U4D 親が子のポインタを所有する木は、親を消すとネストして子孫のデストラクタを呼ぶので、スタックが枯渇します。
したがって、子から順番に消さなくてはなりません。
したがって、子から順番に消さなくてはなりません。
658デフォルトの名無しさん
2021/02/09(火) 18:56:53.48ID:qUmf+U4D その様はまるで摩天楼がドミノ倒しのように連鎖倒壊するようでもあり、DOMINOというピザにもなっています・
659デフォルトの名無しさん
2021/02/09(火) 19:07:16.84ID:IPYpL0sA なんと後味の悪い話
660デフォルトの名無しさん
2021/02/09(火) 20:39:36.84ID:zHOwdh/n 意味が分からない
661デフォルトの名無しさん
2021/02/09(火) 21:07:48.14ID:Rh87rJZX >>657
それで枯渇するようじゃ木の探索すらできない。
それで枯渇するようじゃ木の探索すらできない。
662デフォルトの名無しさん
2021/02/09(火) 21:13:02.23ID:5Ac7csWH 探索はループでもできるんで、たとえば数万個の要素を持つツリーを子から消せというのは真理なのかも
663デフォルトの名無しさん
2021/02/09(火) 21:27:40.55ID:AojZLEiV 消すのは独立して実行できるので別スレッドに送れば実質コスト0
664デフォルトの名無しさん
2021/02/09(火) 21:38:09.75ID:s3p3GZ7R665デフォルトの名無しさん
2021/02/09(火) 21:44:42.72ID:5Ac7csWH それもそうであるな
666デフォルトの名無しさん
2021/02/09(火) 21:50:17.60ID:s3p3GZ7R ちゅか垂直探索なら木をメモリに持っておく必要が無い
水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が
兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに
親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、
子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、
ウィークポインタの出番でもない
水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が
兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに
親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、
子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、
ウィークポインタの出番でもない
667デフォルトの名無しさん
2021/02/10(水) 01:37:49.58ID:XIZePh+h 子から消さなかったばかりに。
2000人を乗せた航空機が洋上で消えた。
ってなるかも?
2000人を乗せた航空機が洋上で消えた。
ってなるかも?
668デフォルトの名無しさん
2021/02/10(水) 01:48:13.89ID:ZYaksnCf A380でさえ853席だが2000人なんてどうやって載せるんだろう
669デフォルトの名無しさん
2021/02/10(水) 01:51:41.17ID:2ozOIzIF く、空中で衝突するとか…
670デフォルトの名無しさん
2021/02/10(水) 01:53:08.99ID:XIZePh+h インドでは屋根の上にも乗ります。
671デフォルトの名無しさん
2021/02/10(水) 01:55:11.55ID:XIZePh+h672デフォルトの名無しさん
2021/02/10(水) 01:55:17.84ID:uF0JvJPV GTA5のMOD作成者みたいな会話だな
673デフォルトの名無しさん
2021/02/10(水) 02:01:19.54ID:uF0JvJPV >>653
昔はdata()がなかった。(遠い目)
昔はdata()がなかった。(遠い目)
674デフォルトの名無しさん
2021/02/10(水) 06:40:17.61ID:ZYaksnCf アントノフの貨物室にすし詰めでどんくらい乗れるかな
675デフォルトの名無しさん
2021/02/10(水) 06:40:27.16ID:XIZePh+h 東京: TK
京都: KT
大阪: OSK
淡路: AWG
京都: KT
大阪: OSK
淡路: AWG
676デフォルトの名無しさん
2021/02/10(水) 07:59:22.76ID:FGGGEnfF 航空機や原発みたいなクリティカルなシステムでは
全部固定長の配列で書いてあるんじゃないの
全部固定長の配列で書いてあるんじゃないの
677デフォルトの名無しさん
2021/02/10(水) 08:06:21.27ID:uF0JvJPV 釣れますか。
ヒープのほうが少し安全です。
ヒープのほうが少し安全です。
678デフォルトの名無しさん
2021/02/10(水) 10:25:11.13ID:4XPmMtZj679デフォルトの名無しさん
2021/02/10(水) 14:32:04.65ID:TFzLuCg0 すみません、std::for_each を使っていて continue したくなりましたが、サポートしてないです
よね? これって:
1. for_each は continue する必要がないような処理に限ってに使うべき。
2. ループの中で大きい if ブロックを作って空の処理にすればよい。
3. その他
よね? これって:
1. for_each は continue する必要がないような処理に限ってに使うべき。
2. ループの中で大きい if ブロックを作って空の処理にすればよい。
3. その他
680デフォルトの名無しさん
2021/02/10(水) 15:13:45.18ID:ZYaksnCf returnすれば?
for_each(begin(foo), end(foo), []{ if(bar) return; });
for_each(begin(foo), end(foo), []{ if(bar) return; });
681デフォルトの名無しさん
2021/02/10(水) 16:06:00.49ID:HSfvjOUE return は continue ではなく break じゃないの?
質問者の2.大きなif分で実質何もしないでいいと思う
質問者の2.大きなif分で実質何もしないでいいと思う
682デフォルトの名無しさん
2021/02/10(水) 16:20:11.24ID:ZYaksnCf for_eachをbreakするにはthrowかlongjmpがいるぞ
683デフォルトの名無しさん
2021/02/10(水) 16:35:39.62ID:S47HOUGT きったねぇジャンプだ
684デフォルトの名無しさん
2021/02/10(水) 16:51:31.94ID:HSfvjOUE あ、ラムダ式になってたのか
685はちみつ餃子 ◆8X2XSCHEME
2021/02/10(水) 17:51:08.81ID:tNqysU9n686デフォルトの名無しさん
2021/02/10(水) 18:41:41.17ID:FGGGEnfF Perlなら問題無くできる(continue→next、だが
C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…
C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…
687デフォルトの名無しさん
2021/02/10(水) 19:51:57.06ID:teDb7k99 何の一線よ
688デフォルトの名無しさん
2021/02/10(水) 20:18:41.39ID:ln/pLvjf いやreturnでいいだろ…
許可しないってなんのことだよ
許可しないってなんのことだよ
689デフォルトの名無しさん
2021/02/10(水) 21:21:18.68ID:+e+FbMSY vectorで一億件ほどで、飛ばしたいのが100〜1000件程度なんだろう
690デフォルトの名無しさん
2021/02/10(水) 21:51:25.56ID:QYfnOwKH >>679
for_eachをrange based forに変更は出来ないの?
for_eachをrange based forに変更は出来ないの?
691デフォルトの名無しさん
2021/02/10(水) 21:59:01.21ID:ZYaksnCf >>690
おまえのスキルのためにか?
おまえのスキルのためにか?
692デフォルトの名無しさん
2021/02/10(水) 22:17:23.69ID:qtVJ0qYe range based forなら普通にcontinueできるぞ
693デフォルトの名無しさん
2021/02/10(水) 22:18:26.21ID:ln/pLvjf >>689
飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?
飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?
694デフォルトの名無しさん
2021/02/11(木) 04:16:42.30ID:nrDdTgaQ early returnは正義
695デフォルトの名無しさん
2021/02/11(木) 11:22:44.35ID:n0GRjtoR >>685
テンプレのときとか
テンプレのときとか
696デフォルトの名無しさん
2021/02/11(木) 17:53:02.68ID:Iq2aKjep 679がなぜfor_eachを使うのかを無視するのは
他人の領分を侵すお節介だ
for_eachの使い方をアドバイスできんやつは
しゃしゃり出てくるな
他人の領分を侵すお節介だ
for_eachの使い方をアドバイスできんやつは
しゃしゃり出てくるな
697デフォルトの名無しさん
2021/02/11(木) 18:00:13.22ID:hRfccug1 よくよく話を聞いてみたらまるで異なる解決策が見つかるなんてよくあることじゃん。そんな経験ないの?
何をしたかったか確認するのは重要
何をしたかったか確認するのは重要
698デフォルトの名無しさん
2021/02/11(木) 18:15:41.21ID:Iq2aKjep 流れをよく読んでみろよ
for_eachをロクに使ってないやつなのモロバレだろ
質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは
回答者の資格ねえんだよ
for_eachをロクに使ってないやつなのモロバレだろ
質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは
回答者の資格ねえんだよ
699デフォルトの名無しさん
2021/02/11(木) 18:18:25.32ID:Iq2aKjep 自分が何か尋ねているときに
質問内容に付き合ってやれる懐のねえやつは
うぜえだけだろが
質問内容に付き合ってやれる懐のねえやつは
うぜえだけだろが
700デフォルトの名無しさん
2021/02/11(木) 18:23:57.31ID:Iq2aKjep 質問内容において自分より下なやつに教えを請いたいかよ
701デフォルトの名無しさん
2021/02/11(木) 18:34:11.92ID:hRfccug1 for_eachを使う場合の答えはとっくに出てるのに何言ってんの?
702デフォルトの名無しさん
2021/02/11(木) 19:17:08.97ID:15xoUz1R 3のその他で答えただけ。
703デフォルトの名無しさん
2021/02/11(木) 20:01:29.92ID:veopzNW6 他人の領分なんて侵してナンボ
704デフォルトの名無しさん
2021/02/11(木) 20:03:18.37ID:qccRsQET >>702
はあ?returnではいけない理由は?
はあ?returnではいけない理由は?
705デフォルトの名無しさん
2021/02/11(木) 20:19:00.69ID:a/CQbB/Z >>679はループしたいだけだろ
std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし
std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし
706デフォルトの名無しさん
2021/02/11(木) 20:23:31.36ID:nDjPJyoP >>704
returnで良いと思うよ。
returnで良いと思うよ。
707デフォルトの名無しさん
2021/02/11(木) 20:50:06.93ID:Iq2aKjep >>701
680は俺だが何言ってんの?
680は俺だが何言ってんの?
708デフォルトの名無しさん
2021/02/11(木) 21:58:36.08ID:bviF/sLG Visual Studio 2010(MSVC2010)で
template<class T>
void foo(T x) {
printf("%d: %d\n", targetEntity, x);
}
という関数テンプレートが定義されているときに、
namespace bar { const int targetEntity = 1; }
using bar::targetEntity;
void baz() { foo(100); }
はコンパイルが通るのに、
namespace bar { const int targetEntity = 1; }
void baz() {
using bar::targetEntity;
foo(100);
}
だと
error C2065: 'targetEntity': 定義されていない識別子です。
と言われるorz
template<class T>
void foo(T x) {
printf("%d: %d\n", targetEntity, x);
}
という関数テンプレートが定義されているときに、
namespace bar { const int targetEntity = 1; }
using bar::targetEntity;
void baz() { foo(100); }
はコンパイルが通るのに、
namespace bar { const int targetEntity = 1; }
void baz() {
using bar::targetEntity;
foo(100);
}
だと
error C2065: 'targetEntity': 定義されていない識別子です。
と言われるorz
709デフォルトの名無しさん
2021/02/11(木) 22:06:56.76ID:bviF/sLG710デフォルトの名無しさん
2021/02/11(木) 23:28:48.49ID:Ooe4jkn9 >>707
アンパンマンはキミだ。
アンパンマンはキミだ。
711はちみつ餃子 ◆8X2XSCHEME
2021/02/12(金) 01:36:02.90ID:2OOQ6m86 >>708
宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則
(クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど)
なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。
逆にどういう理屈で前者が通るのかは気になる。
宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則
(クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど)
なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。
逆にどういう理屈で前者が通るのかは気になる。
712デフォルトの名無しさん
2021/02/12(金) 06:02:20.64ID:45Tu3B4L713デフォルトの名無しさん
2021/02/12(金) 06:03:16.30ID:45Tu3B4L - barよりも後方
+ usingよりも後方
+ usingよりも後方
714デフォルトの名無しさん
2021/02/12(金) 07:01:12.63ID:3x5iWh5q 確かにideoneでもVS2019でも両方エラーになるのですだが、
1番目の例はVS2010ではビルドも通って動くもーん
ソース:
https://ideone.com/DC8fMv
実行結果(※ VS2010限定):
1: 100
続行するには何かキーを押してください . . .
1番目の例はVS2010ではビルドも通って動くもーん
ソース:
https://ideone.com/DC8fMv
実行結果(※ VS2010限定):
1: 100
続行するには何かキーを押してください . . .
715デフォルトの名無しさん
2021/02/12(金) 07:04:11.00ID:3x5iWh5q ちな関数テンプレートfoo()の定義をusingよりも後方にしたら全てでビルドが通って動く
まそりゃーそうならないとおかしいが
まそりゃーそうならないとおかしいが
716デフォルトの名無しさん
2021/02/12(金) 07:12:42.48ID:45Tu3B4L717デフォルトの名無しさん
2021/02/12(金) 07:17:08.75ID:3x5iWh5q718デフォルトの名無しさん
2021/02/12(金) 07:24:49.77ID:45Tu3B4L だから何?
ill-formedなのがわかっても自分が正しいと強弁したいのか?
ill-formedなのがわかっても自分が正しいと強弁したいのか?
719デフォルトの名無しさん
2021/02/12(金) 07:27:26.57ID:3x5iWh5q720デフォルトの名無しさん
2021/02/12(金) 07:32:07.63ID:45Tu3B4L 覆った?
おまえVS2010限定で逃げただろ
ill-formedはill-formed
これを覆せたら出直して来な
おまえVS2010限定で逃げただろ
ill-formedはill-formed
これを覆せたら出直して来な
721デフォルトの名無しさん
2021/02/12(金) 07:34:53.80ID:45Tu3B4L 俺も昔のバージョンのコンパイラは使うがバグ技は使わないし
そういうことをする厨二病とは組みたくない
そういうことをする厨二病とは組みたくない
722デフォルトの名無しさん
2021/02/12(金) 07:38:38.54ID:3x5iWh5q >おまえVS2010限定で逃げただろ
VS2010ではビルドが通るというのが話の発端なので…
1番目の例がill-formedであろう点は同意
VS2010ではビルドが通るというのが話の発端なので…
1番目の例がill-formedであろう点は同意
723デフォルトの名無しさん
2021/02/12(金) 07:51:23.22ID:45Tu3B4L orzなんだろ
何が誰が悪いのかわかったら素直になれよ
居直る態度が気に入らねえ
何が誰が悪いのかわかったら素直になれよ
居直る態度が気に入らねえ
724デフォルトの名無しさん
2021/02/12(金) 08:12:22.74ID:3x5iWh5q 何が悪いのか、はともかく
誰が悪いのかとは一体…
つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;;
個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、
例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて
template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる
(template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然
再発防止のためには、C++規格のどこをどう読めば良いんじゃorz
誰が悪いのかとは一体…
つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;;
個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、
例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて
template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる
(template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然
再発防止のためには、C++規格のどこをどう読めば良いんじゃorz
725デフォルトの名無しさん
2021/02/12(金) 08:57:55.62ID:45Tu3B4L726デフォルトの名無しさん
2021/02/12(金) 10:26:37.15ID:1W1GlA05 匿名掲示板で誰が何を言ったのどうのとみっともないぞデフォルトの名無しさんよ
727デフォルトの名無しさん
2021/02/12(金) 11:29:35.12ID:jxDcSv/l728デフォルトの名無しさん
2021/02/12(金) 13:22:44.45ID:x9NfpsA7 匿名でも江副とかQZとか片山やはちみつが糞なのは伝わってくるω
729デフォルトの名無しさん
2021/02/12(金) 18:24:14.30ID:45Tu3B4L 単発IDになりやがった
どこまでも腐ってやがるな
どこまでも腐ってやがるな
730蟻人間 ◆T6xkBnTXz7B0
2021/02/12(金) 19:12:56.39ID:fTOQtm+W どこでも動くように標準化しましょうねって話だよね。
731蟻人間 ◆T6xkBnTXz7B0
2021/02/12(金) 19:29:19.43ID:WC9JZZt5 G++とかclang++などの複数のコンパイラで警告最大にして自動ビルドすれば再発防止できると思われます。
732デフォルトの名無しさん
2021/02/12(金) 19:37:54.63ID:3abO7oQ0 流れをぶった切って質問です。
あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、
::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする
ことって可能かしらん?
あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、
::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする
ことって可能かしらん?
733蟻人間 ◆T6xkBnTXz7B0
2021/02/12(金) 19:46:11.11ID:WC9JZZt5734蟻人間 ◆T6xkBnTXz7B0
2021/02/12(金) 19:55:37.68ID:fTOQtm+W dtorはデストラクターの略ね。
死のトラクターじゃないよ。
死のトラクターじゃないよ。
735デフォルトの名無しさん
2021/02/13(土) 02:57:21.77ID:ZCgeuP6g 映画化決定。
>>728
私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥
私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥
737デフォルトの名無しさん
2021/02/15(月) 12:30:59.56ID:tZ1nblID738デフォルトの名無しさん
2021/02/16(火) 18:45:49.14ID:zTH+X1Xm739デフォルトの名無しさん
2021/02/16(火) 18:59:33.07ID:zTH+X1Xm つかprivate dtorって何の解決にもなって
なくね?
クラスFooのデストラがprivateな時点で
Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは…
あとp.get()->Delete()とされるのも恐ろしいすぐる………
なくね?
クラスFooのデストラがprivateな時点で
Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは…
あとp.get()->Delete()とされるのも恐ろしいすぐる………
740デフォルトの名無しさん
2021/02/16(火) 19:15:28.82ID:Pme6j5oX741デフォルトの名無しさん
2021/02/17(水) 08:24:04.17ID:Pn/OWNHb operator <=>を定義しても
==と!=が使えるようにならないのは、なんで?
==と!=が使えるようにならないのは、なんで?
742デフォルトの名無しさん
2021/02/17(水) 11:29:34.99ID:u6Au0MiC https://cpprefjp.github.io/lang/cpp20/consistent_comparison.html
のoperator==節で仕様とその理由についても説明してあります
のoperator==節で仕様とその理由についても説明してあります
743デフォルトの名無しさん
2021/02/17(水) 12:05:07.17ID:8kTif7Fu relops
744デフォルトの名無しさん
2021/02/17(水) 12:07:48.78ID:ZhVk2C4b relops
745デフォルトの名無しさん
2021/02/17(水) 12:14:57.71ID:7xS0C1vs なるほどわからん。弱順序って何よ?
746デフォルトの名無しさん
2021/02/17(水) 13:36:33.88ID:peDNmUYI >>745
二項関係で、反射律、推移律、比較可能性を満たすもの
二項関係で、反射律、推移律、比較可能性を満たすもの
748デフォルトの名無しさん
2021/02/17(水) 23:46:57.44ID:ZhVk2C4b 普通に言葉通り任意の2つの元を比較できるということなのでは…
木構造で「親は子より大きい」という順序を定義しただけ
(全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、
文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ
では兄弟間の大小が定まらない、
みたいな
木構造で「親は子より大きい」という順序を定義しただけ
(全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、
文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ
では兄弟間の大小が定まらない、
みたいな
749デフォルトの名無しさん
2021/02/17(水) 23:47:32.54ID:ZhVk2C4b のは半順序で、
整数みたいなやつが全順序
整数みたいなやつが全順序
750デフォルトの名無しさん
2021/02/17(水) 23:59:39.55ID:ZhVk2C4b なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ
つまり全順序集合の集合と半順序集合の集合が区別できん
両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ
つまり全順序集合の集合と半順序集合の集合が区別できん
両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、
751デフォルトの名無しさん
2021/02/18(木) 00:34:07.44ID:48a8FzyN a≦b または b≦aが成り立つ時、比較可能
弱順序ってしらなかったけど、半順序とは違うようだ
「半順序?弱順序?二項関係・順序関係まとめ」って記事
弱順序ってしらなかったけど、半順序とは違うようだ
「半順序?弱順序?二項関係・順序関係まとめ」って記事
752デフォルトの名無しさん
2021/02/18(木) 03:35:31.61ID:sRdwF113 束論やってるけど弱順序とか初めて聞いた…
マ界用語?
マ界用語?
754デフォルトの名無しさん
2021/02/18(木) 10:08:01.17ID:48a8FzyN 弱順序は、半順序よりは制限強いが全順序より弱いもので、
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど
半順序までは緩められない、ってのがあるみたいね
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど
半順序までは緩められない、ってのがあるみたいね
755デフォルトの名無しさん
2021/02/18(木) 13:16:30.49ID:9Yl3mCZH >>752
束って何で勉強すればいいん?
束って何で勉強すればいいん?
756デフォルトの名無しさん
2021/02/18(木) 14:43:05.98ID:48a8FzyN アルゴリズムとの関連はちょっとわからんけど
数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな
もしくは順序集合の話として集合論の本
数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな
もしくは順序集合の話として集合論の本
>>748
>普通に言葉通り任意の2つの元を比較できるということなのでは…
いや、それは全順序ですよ
・擬順序
・順序
これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います
擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、
順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序
だったかと
>普通に言葉通り任意の2つの元を比較できるということなのでは…
いや、それは全順序ですよ
・擬順序
・順序
これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います
擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、
順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序
だったかと
758デフォルトの名無しさん
2021/02/19(金) 20:38:08.11ID:mpGE+xsF wikipediaの「推移関係」の項目より
半順序 - 反対称的な擬順序
擬順序 - 推移的であると同時に反射的
全擬順序 - 完全的な擬順序
同値関係 - 対称的な擬順序
厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合
全順序 - 推移的で反対称的な完全関係
全順序、半順序くらいしか知らんかった
半順序 - 反対称的な擬順序
擬順序 - 推移的であると同時に反射的
全擬順序 - 完全的な擬順序
同値関係 - 対称的な擬順序
厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合
全順序 - 推移的で反対称的な完全関係
全順序、半順序くらいしか知らんかった
759デフォルトの名無しさん
2021/02/19(金) 20:51:11.65ID:gWMDVcMR OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス
かつ反射的、AはAのサブクラス
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス
かつ反射的、AはAのサブクラス
760デフォルトの名無しさん
2021/02/19(金) 20:55:11.79ID:fAhRarpN >>760
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ
すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ
すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています
762デフォルトの名無しさん
2021/02/19(金) 21:44:53.04ID:gWMDVcMR ブール代数 型システムで検索しても出てこないけど>>523
可補分配束の定義見てると確かにそんな気はしてくる
インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える
要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす
void *は何でも指せるという意味で最大元
まともな型システムなら(少なくとも)上記の擬順序以上は要求る
演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える
型チェック通らない全ての型を考えられるし、それが¬
型述語で定義してればそのまま!演算子になる
可補分配束の定義見てると確かにそんな気はしてくる
インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える
要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす
void *は何でも指せるという意味で最大元
まともな型システムなら(少なくとも)上記の擬順序以上は要求る
演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える
型チェック通らない全ての型を考えられるし、それが¬
型述語で定義してればそのまま!演算子になる
763デフォルトの名無しさん
2021/02/19(金) 21:55:14.25ID:gWMDVcMR 確証が持てなくてもどかしい…数学できる人ツッコミ待ち
とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた
とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた
764デフォルトの名無しさん
2021/02/19(金) 21:55:34.53ID:hHLb88jw ググってる時点で、というかそのことを隠しもしないニワカ
765デフォルトの名無しさん
2021/02/19(金) 21:56:36.22ID:gWMDVcMR >>764
隠して5chなんかで偉ぶってどうすんのさ
隠して5chなんかで偉ぶってどうすんのさ
766デフォルトの名無しさん
2021/02/19(金) 22:01:35.27ID:aORwmd7L 質問ですがムーブコンストラクタを有する基底クラスの
派生クラスでムーブコンストラクタを
派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても
安全に書く方法って何かあるんでしたっけ
派生クラスでムーブコンストラクタを
派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても
安全に書く方法って何かあるんでしたっけ
767デフォルトの名無しさん
2021/02/19(金) 22:03:03.40ID:6z9jMlRH 作ったクラスをmapにいれるときoperator<を書かなきゃいけないのがめんどい
768デフォルトの名無しさん
2021/02/19(金) 22:08:24.37ID:aORwmd7L あとムーブコンストラクタを有するクラスを
詳細を隠ぺいする目的でインターフェースを設けたとき
インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ
アブストラクトファクトリイーを作るしか無い?
詳細を隠ぺいする目的でインターフェースを設けたとき
インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ
アブストラクトファクトリイーを作るしか無い?
769デフォルトの名無しさん
2021/02/19(金) 22:11:39.72ID:aORwmd7L この場合アブストラクトファクトリイーといっても、元のクラスFooに対して
IFoo IFoo::move() { ... } が定義してあって
IFoo x = (適当な生成手段)
ののち、
IFoo y = x.move()
でxが破壊されるやつ!
IFoo IFoo::move() { ... } が定義してあって
IFoo x = (適当な生成手段)
ののち、
IFoo y = x.move()
でxが破壊されるやつ!
770デフォルトの名無しさん
2021/02/19(金) 22:36:29.47ID:F7SsNRLa それインターフェースとして使えてないよ
771デフォルトの名無しさん
2021/02/20(土) 00:40:16.16ID:iK8Sr3o/ 領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
memcpy(b.data(), a.data(), n*sezeof(T))
で良いんですかね?
UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか
memcpy(b.data(), a.data(), n*sezeof(T))
で良いんですかね?
UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか
772デフォルトの名無しさん
2021/02/20(土) 01:38:00.62ID:YJV0xwOV >>771
ド素人かよ
ド素人かよ
773デフォルトの名無しさん
2021/02/20(土) 01:42:23.87ID:upzAgg50 >>771
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな
774デフォルトの名無しさん
2021/02/20(土) 08:11:48.90ID:BRyl48dG775デフォルトの名無しさん
2021/02/20(土) 11:17:36.76ID:ZF+WEG2v 半順序とかいう訳が悪い
英語のpartial orderの方が分かりやすい
英語のpartial orderの方が分かりやすい
777デフォルトの名無しさん
2021/02/20(土) 11:30:33.89ID:ec7b4JGn あとは裁判で争うしかないでしょうね。
我々には判決が出せませんから。
我々には判決が出せませんから。
778はちみつ餃子 ◆8X2XSCHEME
2021/02/20(土) 11:52:10.16ID:N5IkYQZo >>771
前提条件として
・ T の型が trivially copyable である
・ vector の大きさが必要な大きさ分に出来ている
ならそれでもいいよ。
でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、
作法的にはあまり使わないに越したことは無いって感じ。
前提条件として
・ T の型が trivially copyable である
・ vector の大きさが必要な大きさ分に出来ている
ならそれでもいいよ。
でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、
作法的にはあまり使わないに越したことは無いって感じ。
779はちみつ餃子 ◆8X2XSCHEME
2021/02/20(土) 11:56:56.24ID:N5IkYQZo780デフォルトの名無しさん
2021/02/20(土) 12:51:28.34ID:K0wy5MAI781デフォルトの名無しさん
2021/02/20(土) 14:23:36.69ID:XZPJJfWU782デフォルトの名無しさん
2021/02/20(土) 14:39:27.43ID:ZF+WEG2v vectorのvectorの中身はサイズ値とバッファポインタが連続で並んでるだろうな
783デフォルトの名無しさん
2021/02/20(土) 14:57:30.99ID:upzAgg50784はちみつ餃子 ◆8X2XSCHEME
2021/02/20(土) 15:27:01.55ID:N5IkYQZo785デフォルトの名無しさん
2021/02/20(土) 16:22:37.93ID:UDAFNKrx ほらCと同じ基本の部分を教えずにいきなりSTLとか勧めるからこういう初心者が出てくる・・
786デフォルトの名無しさん
2021/02/20(土) 17:06:29.35ID:1TZxH4Mg ある程度出てきても問題ないだろ。ちゃんとドキュメント読んで理解してくれる人も多いんだろうし、
「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。
「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。
787デフォルトの名無しさん
2021/02/20(土) 17:09:29.42ID:UDAFNKrx ちょっと何言ってるかわかんない
788デフォルトの名無しさん
2021/02/20(土) 17:54:39.09ID:ZF+WEG2v 相談室に初心者が来て何の問題があるのか
790蟻人間 ◆T6xkBnTXz7B0
2021/02/20(土) 19:27:14.79ID:VmESNyRi >>771
> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
> memcpy(b.data(), a.data(), n*sezeof(T))
> で良いんですかね?
待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。
ダメです。
> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
> memcpy(b.data(), a.data(), n*sezeof(T))
> で良いんですかね?
待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。
ダメです。
791蟻人間 ◆T6xkBnTXz7B0
2021/02/20(土) 19:49:01.06ID:HfYkFRCd C++のvectorでは、演算子[ ]がオーバーロードされてるから、C言語の常識が通用しないんだよ。
memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。
std::vector v;
int a = 5;
memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。
memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。
std::vector v;
int a = 5;
memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。
792デフォルトの名無しさん
2021/02/20(土) 20:38:26.44ID:PUIofNKd >>791
流石にそれは質問者のレベルにも達してないんで問題外
流石にそれは質問者のレベルにも達してないんで問題外
793デフォルトの名無しさん
2021/02/20(土) 20:44:29.23ID:Rkd/h2tQ 別にここで何が正しいかを結論できなくてもいいのだが
>>776
そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を
教えてくれる?
手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw
知識として一応確認しておきたいかなと。
>>776
そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を
教えてくれる?
手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw
知識として一応確認しておきたいかなと。
795デフォルトの名無しさん
2021/02/20(土) 21:44:52.70ID:K0wy5MAI std::vector v(sizeof(int));
int a = 5;
memcpy(&(v[0]), &a, sizeof(a)); // おk
int a = 5;
memcpy(&(v[0]), &a, sizeof(a)); // おk
796デフォルトの名無しさん
2021/02/20(土) 21:47:14.25ID:K0wy5MAI つかこうかorz
std::vector<int> v((size_t)1);
const int a = 5;
memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));
std::vector<int> v((size_t)1);
const int a = 5;
memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));
797蟻人間 ◆T6xkBnTXz7B0
2021/02/20(土) 21:58:40.54ID:HfYkFRCd この場合は素直にループを書くか、それとも格好良くstd::copy使うのが楽かな。
798デフォルトの名無しさん
2021/02/21(日) 01:26:13.27ID:G4m9GHw4 for文回したら死ぬ病気にでもかかってんのか?
799デフォルトの名無しさん
2021/02/21(日) 01:29:00.28ID:oO8KGr2m 条件を満たすならmemcpyのほうが圧倒的に早いからな
800はちみつ餃子 ◆8X2XSCHEME
2021/02/21(日) 01:32:42.66ID:jd0qgVVy それほど速くならない・速くなくていい場合のほうが圧倒的に多いってのもあるけどな。
801デフォルトの名無しさん
2021/02/21(日) 03:13:29.79ID:ZrTKdY4P そもそもそんなクソみたいなコードはふつう書かない
802770
2021/02/21(日) 03:54:49.57ID:HYHVDYIS >>780
IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど
それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ
IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど
それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ
803デフォルトの名無しさん
2021/02/21(日) 03:58:42.63ID:0HHdBuLy メモリコピーを最適化する前に、他にすべきこと沢山あるだろ的な答えになるよな、確かに。
PG界の真理情報だわ。
PG界の真理情報だわ。
804デフォルトの名無しさん
2021/02/21(日) 05:11:43.88ID:L28MHLBD valarrayでxorとか
805デフォルトの名無しさん
2021/02/21(日) 07:43:27.01ID:F92hI73d806デフォルトの名無しさん
2021/02/21(日) 07:51:19.71ID:F92hI73d じゃなかったorz
Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) }
はconst_cast<Foo>的な危険手段でないとやれないが
Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) }
とするとなんかコンパイラが警告を出すから
Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) }
にせざるおえないという、
Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) }
はconst_cast<Foo>的な危険手段でないとやれないが
Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) }
とするとなんかコンパイラが警告を出すから
Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) }
にせざるおえないという、
807デフォルトの名無しさん
2021/02/21(日) 13:21:42.30ID:Dqlg3tSu 関数と関数オブジェクトってどう使い分けるの?
808デフォルトの名無しさん
2021/02/21(日) 13:30:17.46ID:YxY+Ievf こういう馬鹿にはちゃんとベンチマークとれって言ってやるのが正しい行い。
809デフォルトの名無しさん
2021/02/21(日) 14:32:16.15ID:HYHVDYIS >>805
そんなこと聞いてるんじゃなくて
提示されたコード片じゃどう考えても動かないから何したいか分からんのよ
https://wandbox.org/permalink/ancQey3IkQKyWsu1
こっから始めてどこをどうしたいか教えてくれ
そんなこと聞いてるんじゃなくて
提示されたコード片じゃどう考えても動かないから何したいか分からんのよ
https://wandbox.org/permalink/ancQey3IkQKyWsu1
こっから始めてどこをどうしたいか教えてくれ
810デフォルトの名無しさん
2021/02/21(日) 14:47:26.80ID:9WgNecVw 404 Not Found
811デフォルトの名無しさん
2021/02/21(日) 15:33:36.83ID:HYHVDYIS812デフォルトの名無しさん
2021/02/21(日) 16:21:41.69ID:u2qGdVDT 過疎ってるし、初心者どころかJavaの質問でもOKでは?
>>807
この質問に対して回答をつける用意がありますが、しばしお待ちを
この質問に対して回答をつける用意がありますが、しばしお待ちを
>>807,813
昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています
数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥
https://mevius.5ch.net/test/read.cgi/tech/1434079972/72
昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています
数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥
https://mevius.5ch.net/test/read.cgi/tech/1434079972/72
815デフォルトの名無しさん
2021/02/21(日) 20:07:12.76ID:F92hI73d >>809
Fooはこんなやつ、
https://ideone.com/mPPH8I
IFooは、C++ではよく考えたらIFooのオブジェクトを直接生成できないので(>>802の仰せの通り
std::shared_ptr<IFoo>とかで生成することを考えたのだがエラーになるorz
(上のリンク先のコードでコメントアウトしてあるgenerate_IFoo()
思いのほか闇が深かった\(^o^)/
std::shared_ptr<IFoo>が生成できた暁には、
std::shared_ptr<IFoo> pがリソースの所有権を握ったFooを保持しているとき、
std::shared_ptr<IFoo> qというのがいるとして、
*q = *p
で所有権を*pから*qに渡したり、
return *p
で呼び出し元が所有権を有するFooを受け取れるようにしたいワケ
Fooはこんなやつ、
https://ideone.com/mPPH8I
IFooは、C++ではよく考えたらIFooのオブジェクトを直接生成できないので(>>802の仰せの通り
std::shared_ptr<IFoo>とかで生成することを考えたのだがエラーになるorz
(上のリンク先のコードでコメントアウトしてあるgenerate_IFoo()
思いのほか闇が深かった\(^o^)/
std::shared_ptr<IFoo>が生成できた暁には、
std::shared_ptr<IFoo> pがリソースの所有権を握ったFooを保持しているとき、
std::shared_ptr<IFoo> qというのがいるとして、
*q = *p
で所有権を*pから*qに渡したり、
return *p
で呼び出し元が所有権を有するFooを受け取れるようにしたいワケ
816デフォルトの名無しさん
2021/02/21(日) 20:09:12.28ID:F92hI73d ちなみにWandboxでソースコードをフォークする方法は
初心者なので
わかり
ません
初心者なので
わかり
ません
817デフォルトの名無しさん
2021/02/21(日) 20:14:47.49ID:LxNhpnKU generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ
後半も意味不明
*q = *pってそれスライシングだぞ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ
後半も意味不明
*q = *pってそれスライシングだぞ
818デフォルトの名無しさん
2021/02/21(日) 20:23:47.49ID:F92hI73d819デフォルトの名無しさん
2021/02/21(日) 20:26:48.03ID:F92hI73d ちょっと補足すると、IFooには現状代入手段が無いから、
*q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード
のつもり
*q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード
のつもり
820デフォルトの名無しさん
2021/02/21(日) 21:03:58.63ID:+My/Unlg >>814
処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?
処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?
821デフォルトの名無しさん
2021/02/21(日) 21:05:03.53ID:HYHVDYIS823デフォルトの名無しさん
2021/02/21(日) 22:29:56.45ID:LxNhpnKU >>818
shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ)
IFoo* p = new Foo();
IFoo* q = new Foo();
というのがあったとして*q = *p;ってのは何だと思う?
pとqはIFoo*型だ
だからもちろん*pと*qというのはIFoo型だ
すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ
operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない
よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される
これをスライシングという
shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ)
IFoo* p = new Foo();
IFoo* q = new Foo();
というのがあったとして*q = *p;ってのは何だと思う?
pとqはIFoo*型だ
だからもちろん*pと*qというのはIFoo型だ
すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ
operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない
よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される
これをスライシングという
824はちみつ餃子 ◆8X2XSCHEME
2021/02/21(日) 23:00:12.09ID:jd0qgVVy >>822
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。
状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、
状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。
(普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。
状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、
状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。
(普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)
>>824,820,(>>813,814,822)
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト
https://mevius.5ch.net/test/read.cgi/tech/1434079972/21
https://ideone.com/9KIuSD
あとはラムダ式の理解のための存在という認識、か
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト
https://mevius.5ch.net/test/read.cgi/tech/1434079972/21
https://ideone.com/9KIuSD
あとはラムダ式の理解のための存在という認識、か
826はちみつ餃子 ◆8X2XSCHEME
2021/02/22(月) 00:10:55.10ID:oiAqsUn6 「ラムダ式が関数オブジェクト (型の定義と生成) の構文糖」というのは
既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、
しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが
通りがよくなったりするかもしれないね。
既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、
しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが
通りがよくなったりするかもしれないね。
827デフォルトの名無しさん
2021/02/22(月) 04:39:33.19ID:7qATnC1I 関数オブジェクトで状態を渡せるのは結構なんだが、コピーコンストラクタ渡しなので、
手の込んだ状態管理だった場合は結局、C言語と同じくユーザー定義変数を介して状態を読み書きすることになる。
手の込んだ状態管理だった場合は結局、C言語と同じくユーザー定義変数を介して状態を読み書きすることになる。
828デフォルトの名無しさん
2021/02/22(月) 08:23:10.03ID:Dz0hZ3aS >>827
shared_ptr使えば、大抵の場合は問題ないんじゃない?
shared_ptr使えば、大抵の場合は問題ないんじゃない?
829デフォルトの名無しさん
2021/02/22(月) 09:54:32.23ID:Y0MZ31oO >>807,820ですけどQZで始まる人あまりにもレベル低いというか回答者として不適格だと思うのでNGします
830デフォルトの名無しさん
2021/02/22(月) 10:22:59.45ID:1euWwsnd >>829
答えてもらってる立場で偉そうに。常識ないの?
答えてもらってる立場で偉そうに。常識ないの?
831デフォルトの名無しさん
2021/02/22(月) 11:11:29.17ID:M+ptXBNl いやでも実際・・・QZはね・・・
50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね
ほんと残念だけども
50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね
ほんと残念だけども
832デフォルトの名無しさん
2021/02/22(月) 11:36:36.23ID:7qATnC1I 関数オブジェクトに対するラムダ式の優位性は、ローカル変数を比較的安全かつ手軽に参照渡しできることだろう。
833デフォルトの名無しさん
2021/02/22(月) 12:08:03.12ID:5Ezd+ZoO あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな?
急にその手の書き込みが増えてあからさますぎる。
急にその手の書き込みが増えてあからさますぎる。
834デフォルトの名無しさん
2021/02/22(月) 16:15:54.50ID:rpJl6SNk835デフォルトの名無しさん
2021/02/22(月) 17:04:18.35ID:M+ptXBNl 回答者には無条件で感謝しないといかんのか?
気持ち悪いな
気持ち悪いな
836デフォルトの名無しさん
2021/02/22(月) 17:39:33.90ID:rpJl6SNk >>835
感謝しろなんて言ってないぞアホ
感謝しろなんて言ってないぞアホ
837デフォルトの名無しさん
2021/02/22(月) 19:14:24.66ID:SaDkzfTf838デフォルトの名無しさん
2021/02/22(月) 19:28:11.36ID:M+ptXBNl たしかに
勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね
擁護した俺が悪かったごめん
勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね
擁護した俺が悪かったごめん
840デフォルトの名無しさん
2021/02/22(月) 20:02:59.96ID:5Ezd+ZoO そういう書き込みを見ると、あわしろ氏よりQzのほうが大人に見えるなあ。
まあでも、あわしろ氏には技術評論社がついてるからね。
謝っといたほうが良いんじゃないの?
まあでも、あわしろ氏には技術評論社がついてるからね。
謝っといたほうが良いんじゃないの?
841デフォルトの名無しさん
2021/02/22(月) 20:52:21.84ID:jfkpe4Eh >>834
俺も以前質問したら、明らかに見当違いなマウント取りたいだけの回答が来て、言い返した時
君みたいな事言われたよ
回答くれるのは有難いが・・・ねぇ。
まぁそういうのはスルーしろ、ってんならまだわかるけど
ちなまともな回答くれた人には礼言ってるからね
俺も以前質問したら、明らかに見当違いなマウント取りたいだけの回答が来て、言い返した時
君みたいな事言われたよ
回答くれるのは有難いが・・・ねぇ。
まぁそういうのはスルーしろ、ってんならまだわかるけど
ちなまともな回答くれた人には礼言ってるからね
842デフォルトの名無しさん
2021/02/22(月) 21:08:29.88ID:51epSMYu 知らんがな。キミの意見だけ聞いてその時どっちに問題があったかどうやって判断すればいいんだよ
843デフォルトの名無しさん
2021/02/22(月) 21:18:11.70ID:jfkpe4Eh そういう話じゃねーよ
844デフォルトの名無しさん
2021/02/23(火) 00:38:10.30ID:6MWC7t1x あるクラスのメソッドを他所で借りたいというか使いたいときって移譲(インスタンス化)するかコピペするしかないの?
845デフォルトの名無しさん
2021/02/23(火) 00:41:49.01ID:Z5ZYenTn >>844
メソッドをクラスから分離してテンプレート関数にすれば、クラスの継承関係がなくても使えるので便利。
メソッドをクラスから分離してテンプレート関数にすれば、クラスの継承関係がなくても使えるので便利。
846デフォルトの名無しさん
2021/02/23(火) 01:01:30.38ID:48JMuLBY >>844
メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる
ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する
メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる
ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する
847デフォルトの名無しさん
2021/02/23(火) 04:11:59.35ID:kBU50DXM >>846
> ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
極論、引数をとって返り値を返す関数だけで全てのことが実現できますよね?
そう思ったらクラスのメソッドにするよりも何でもクラス外の関数にする方がお得というか楽な気がしてしまいます
> ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
極論、引数をとって返り値を返す関数だけで全てのことが実現できますよね?
そう思ったらクラスのメソッドにするよりも何でもクラス外の関数にする方がお得というか楽な気がしてしまいます
848デフォルトの名無しさん
2021/02/23(火) 07:21:43.52ID:7kgSemXY そのとおりで極力フリー関数にするべき
(非静的)メンバ関数というのはデータメンバーの一貫性を保つためだけに使うもんだよ
(非静的)メンバ関数というのはデータメンバーの一貫性を保つためだけに使うもんだよ
849デフォルトの名無しさん
2021/02/23(火) 07:27:00.90ID:ex5XjLGm850デフォルトの名無しさん
2021/02/23(火) 08:19:26.69ID:kBU50DXM なんかOOPの行き着く先みたいな話してるな
俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う
必然、その方が副作用も少ない
俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う
必然、その方が副作用も少ない
851デフォルトの名無しさん
2021/02/23(火) 08:29:56.96ID:Z5ZYenTn staticなメンバ関数には、名前衝突しにくい、msvcのインテリセンスのような入力支援を得やすい、という恩恵はある。
852デフォルトの名無しさん
2021/02/23(火) 08:30:00.72ID:u3MMsI1X メッセージ・・?
何の言語の話してんだ
何の言語の話してんだ
853デフォルトの名無しさん
2021/02/23(火) 09:47:50.72ID:DwnxTU4/ オブジェクト指向の概念の話をするときにメッセージって言葉使いませんか?
C++ならメッセージ=メンバ関数
Javaならメッセージ=メソッド
言語によって呼び方が違うから概念的な話のときはメッセージといったほうが通りがよい
C++ならメッセージ=メンバ関数
Javaならメッセージ=メソッド
言語によって呼び方が違うから概念的な話のときはメッセージといったほうが通りがよい
854デフォルトの名無しさん
2021/02/23(火) 10:07:32.09ID:B3ih21Pc855デフォルトの名無しさん
2021/02/23(火) 10:15:54.38ID:gTQJYaBt > データメンバーの一貫性を保つためだけに使う
いったい何が言いたいんだろう
他人に分かり易く言えないのは自分が解ってないからというケースがある
いったい何が言いたいんだろう
他人に分かり易く言えないのは自分が解ってないからというケースがある
856デフォルトの名無しさん
2021/02/23(火) 10:18:06.26ID:B3ih21Pc > データメンバーの一貫性を保つためだけに使う
この表現で普通に分かるけど
分からん人もいるのね了解
この表現で普通に分かるけど
分からん人もいるのね了解
857デフォルトの名無しさん
2021/02/23(火) 10:20:33.46ID:NIjAanwq メッセージが何のことかわからないのはワロス
858デフォルトの名無しさん
2021/02/23(火) 10:21:51.05ID:gTQJYaBt859デフォルトの名無しさん
2021/02/23(火) 10:22:34.65ID:7kgSemXY データメンバに対して想定した扱い方だけをさせるようにして予期しない状態の発生を防ぐため、って言えばお気に召したかしら
普通はそれを短く「一貫性を保つ」って言うのだけど
普通はそれを短く「一貫性を保つ」って言うのだけど
860デフォルトの名無しさん
2021/02/23(火) 10:31:05.01ID:u3MMsI1X >>853
使わない、というか使うな誤解を招くから
SmalltalkとかObjective-Cならわかるけど
C++やJavaのそれはメッセージングではないと考えるのが普通(そう見做せないわけではないが
使わない、というか使うな誤解を招くから
SmalltalkとかObjective-Cならわかるけど
C++やJavaのそれはメッセージングではないと考えるのが普通(そう見做せないわけではないが
861デフォルトの名無しさん
2021/02/23(火) 10:33:09.34ID:B3ih21Pc >>858
?
?
862デフォルトの名無しさん
2021/02/23(火) 10:34:51.99ID:gTQJYaBt863デフォルトの名無しさん
2021/02/23(火) 10:37:31.33ID:B3ih21Pc864デフォルトの名無しさん
2021/02/23(火) 10:49:29.89ID:7kgSemXY ごめんねおじいちゃん知らない表現を使われただけでそんなに拗ねるなんて思わなかったんだ
865デフォルトの名無しさん
2021/02/23(火) 11:07:54.70ID:u3MMsI1X866デフォルトの名無しさん
2021/02/23(火) 11:13:43.78ID:j4L8+y6t おじいちゃんとか学生ちゃんとか、おまえらマウンティングしながらじゃないと会話できないのかw
867デフォルトの名無しさん
2021/02/23(火) 11:54:07.11ID:oVEFpcof このスレは特にそういうの多いよね
868デフォルトの名無しさん
2021/02/23(火) 12:46:58.74ID:HLi0yp23 昔からこのスレは特に酷いよね
なぜマウントの必要があるのかは少しだけ興味深いけど
なぜマウントの必要があるのかは少しだけ興味深いけど
869デフォルトの名無しさん
2021/02/23(火) 13:21:23.20ID:+0nZ2NLW Linuxを使う以上、C++を嫌わないとダメだろ。
870デフォルトの名無しさん
2021/02/23(火) 13:45:38.11ID:iu17pC6m871デフォルトの名無しさん
2021/02/23(火) 13:46:51.42ID:iu17pC6m >>865
どういう理由で経験不足と判断したか言ってみ
どういう理由で経験不足と判断したか言ってみ
872デフォルトの名無しさん
2021/02/23(火) 13:47:30.93ID:alqL+AST オブジェクト指向に関しては、今の人は、昔はメモリが高価だったとでも思っておけば良いよ。
873デフォルトの名無しさん
2021/02/23(火) 13:53:26.39ID:UMWafFvJ874デフォルトの名無しさん
2021/02/23(火) 13:59:21.85ID:UMWafFvJ 一貫性というのはオブジェクト内部の整合性のこ
とを言いたい
のでは…
※ 個人の感想です
とを言いたい
のでは…
※ 個人の感想です
875デフォルトの名無しさん
2021/02/23(火) 14:03:58.66ID:UMWafFvJ C++のメソッドの呼び出しをメッセージと言い出すとウィンドウメッセージと紛らわしい(小並感
ていうかC++においてメッセージと言えるのはメソッドの「呼び出し」であってメソッドそのものではない
(例えば)メッセージ自体は継承メカニズムとは独立の概念なのだから
※ 個人の感想です
ていうかC++においてメッセージと言えるのはメソッドの「呼び出し」であってメソッドそのものではない
(例えば)メッセージ自体は継承メカニズムとは独立の概念なのだから
※ 個人の感想です
876デフォルトの名無しさん
2021/02/23(火) 14:10:51.07ID:HLi0yp23 Smalltalkはほぼ知らんけど
メッセージ式ってのは
セレクタ+引数のことだったはず
いやこれどうでもいいか
メッセージ式ってのは
セレクタ+引数のことだったはず
いやこれどうでもいいか
877デフォルトの名無しさん
2021/02/23(火) 14:18:47.72ID:UMWafFvJ ていうか今にして思えばstd::shared_ptr<IFoo>がIFooのインスタンスに対する所有権を適切に移譲したり管理するので
std::shared_ptr<T>に持たせることにした時点でIFoo自体がリソースに対する所有権を管理する必要はなさげorz
std::shared_ptr<T>に持たせることにした時点でIFoo自体がリソースに対する所有権を管理する必要はなさげorz
878デフォルトの名無しさん
2021/02/23(火) 14:29:34.84ID:+0nZ2NLW smalltalkなんて誰も使わないのだから、アジソンウェスレイのオブジェクト指向プログラミング入門にそう書かれていたからという理解で良いのでは?
若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。
この本しかなかったんですよ。
良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。
全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。
若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。
この本しかなかったんですよ。
良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。
全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。
879デフォルトの名無しさん
2021/02/23(火) 16:09:16.56ID:CS53pw6I C++のオブジェクト指向でメッセージングのワード出してくるのは
継承を説明するサンプルコードで動物の階層もちだしてくるのと同じ功罪がある
理解のとっかかりにはいいが、リアルな実装の段階ではそういうポエムみたいな話は忘れたほうがいい
継承を説明するサンプルコードで動物の階層もちだしてくるのと同じ功罪がある
理解のとっかかりにはいいが、リアルな実装の段階ではそういうポエムみたいな話は忘れたほうがいい
880デフォルトの名無しさん
2021/02/23(火) 16:11:25.59ID:feF5fzNV メッセージ(笑)とか頭おかしい奴が言いそう
881デフォルトの名無しさん
2021/02/23(火) 16:16:12.25ID:+0nZ2NLW >>879
功もあると御自分で書かれているのでは?
功もあると御自分で書かれているのでは?
882デフォルトの名無しさん
2021/02/23(火) 19:10:57.35ID:48JMuLBY >>878
>書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
私の若い頃を思い出します。
当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした
最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥
そういうわけで、アマゾン・ウェルカム!
>書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
私の若い頃を思い出します。
当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした
最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥
そういうわけで、アマゾン・ウェルカム!
>>875
私は例のペゾルド教本を何とか C++ に適応させたくて、ペゾルド本の WM 処理・巨大 switch 文を C++ に適合させようと未だに四苦八苦していますが、やっぱり MFC に移っちゃったほうが楽チンなんでしょうか?
私は例のペゾルド教本を何とか C++ に適応させたくて、ペゾルド本の WM 処理・巨大 switch 文を C++ に適合させようと未だに四苦八苦していますが、やっぱり MFC に移っちゃったほうが楽チンなんでしょうか?
885デフォルトの名無しさん
2021/02/23(火) 22:05:53.75ID:u3MMsI1X886デフォルトの名無しさん
2021/02/23(火) 22:07:42.70ID:HLi0yp23 否定したように見えちゃってるんだな
いろんな人がおるな
いろんな人がおるな
887デフォルトの名無しさん
2021/02/23(火) 22:15:00.14ID:iu17pC6m888デフォルトの名無しさん
2021/02/23(火) 22:20:52.65ID:u3MMsI1X889デフォルトの名無しさん
2021/02/23(火) 22:28:42.45ID:iu17pC6m890デフォルトの名無しさん
2021/02/23(火) 22:44:54.86ID:H7IAWcv9 [selector message]
Objective-Cが良かったな。
Objective-Cが良かったな。
891デフォルトの名無しさん
2021/02/24(水) 06:48:21.60ID:Vo6CI9FQ892はちみつ餃子 ◆8X2XSCHEME
2021/02/24(水) 15:54:28.46ID:EZ8EgbLC 現代的な Windows のフレームワークとしては C++/WinRT に力が入ってるみたいなんで、
今からはこれを使った方がよさげ
今からはこれを使った方がよさげ
893デフォルトの名無しさん
2021/02/24(水) 17:47:00.67ID:T43vsud+ P/Invokeともこれでおさらば、
と言いたいところだがネイティブC++をwrapするC++/WinRT自体はCLR上の言語なんじゃなかったっけ…
違ったっけ…
と言いたいところだがネイティブC++をwrapするC++/WinRT自体はCLR上の言語なんじゃなかったっけ…
違ったっけ…
894デフォルトの名無しさん
2021/02/24(水) 20:59:30.49ID:T43vsud+ C++/CXと混同すた、orz
895デフォルトの名無しさん
2021/02/25(木) 00:40:25.02ID:hxonNlh3 C++/CLIだよ(小声
896デフォルトの名無しさん
2021/02/25(木) 12:27:48.18ID:Kp+Bp4Dl int (int)型のコールバック関数ポインタにて、一応呼ばれるのでnullはマズイけど不要なので空にしたいという場合に
int () { return 0; }という引数が一致しない空関数へのポインタを渡すとまずい事になるんでしょうか?
低レベルの知識がないのでよく分からないんですが、スタックの巻き戻しとかでズレが生じるとかありそうな気がしています
int () { return 0; }という引数が一致しない空関数へのポインタを渡すとまずい事になるんでしょうか?
低レベルの知識がないのでよく分からないんですが、スタックの巻き戻しとかでズレが生じるとかありそうな気がしています
897はちみつ餃子 ◆8X2XSCHEME
2021/02/25(木) 14:45:58.57ID:ziL/azOs >>896
使われている ABI による。
x64 環境なら Unix (系の多くの OS) でも Windows でも引数は整数4個分までは
レジスタで渡されるんで、スタックの整合性は壊れないはず。
使われている ABI による。
x64 環境なら Unix (系の多くの OS) でも Windows でも引数は整数4個分までは
レジスタで渡されるんで、スタックの整合性は壊れないはず。
898デフォルトの名無しさん
2021/02/25(木) 15:12:23.79ID:bxBNuN1v899デフォルトの名無しさん
2021/02/25(木) 15:36:41.54ID:SLTnVXDN 静的解析ツールやコード分析で警告が出るだろうから直したほうがいいと思うけどね
900はちみつ餃子 ◆8X2XSCHEME
2021/02/25(木) 15:44:39.43ID:ziL/azOs x64 の一般的な ABI ではもう様々な呼出し規約を使い分けないようになってる。
(cdecl と stdcall が混在していた Windows が例外的で
他は 32bit 時代からかなり統一されていたみたいだけど。)
まあそれはともかくとして、
実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。
不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。
(cdecl と stdcall が混在していた Windows が例外的で
他は 32bit 時代からかなり統一されていたみたいだけど。)
まあそれはともかくとして、
実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。
不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。
901デフォルトの名無しさん
2021/02/25(木) 16:08:57.78ID:0Aa2beUH はちみつは見所がある弟子にしてやっても良いと、あわしろ氏が褒めてた。
902デフォルトの名無しさん
2021/02/25(木) 16:57:46.00ID:2x/2jVQO >>896
古いCから新しいC++まで含め、素朴な観点では原則的には大丈夫では有るが、
あなたが言っているように例外処理が入ってくるとどうなるかは不明。
C/C++では型を厳しくしているのは、そういうことを避けるため。
あなたのやろうとしていることは、関数アドレスをキャストしなくては
関数ポインタへの代入できない。
このようにキャストすることによって、アーキテクチャ依存となり、不具合が起きる
確率が0でなくなる。
古いCから新しいC++まで含め、素朴な観点では原則的には大丈夫では有るが、
あなたが言っているように例外処理が入ってくるとどうなるかは不明。
C/C++では型を厳しくしているのは、そういうことを避けるため。
あなたのやろうとしていることは、関数アドレスをキャストしなくては
関数ポインタへの代入できない。
このようにキャストすることによって、アーキテクチャ依存となり、不具合が起きる
確率が0でなくなる。
903デフォルトの名無しさん
2021/02/25(木) 17:00:32.01ID:2x/2jVQO >>902
[補足]
例外処理はとても複雑なことが行なわれることがある。
関数ポインタに代入する際に関数シグネチャが異なるものをキャストして入れると
どうなるかは処理系依存となる。
関数アドレスを同じビット数の整数型の変数との間で相互にキャストするのは構わない。
関数なのに、異なるシグネチャのものを代入しあうのは問題。
[補足]
例外処理はとても複雑なことが行なわれることがある。
関数ポインタに代入する際に関数シグネチャが異なるものをキャストして入れると
どうなるかは処理系依存となる。
関数アドレスを同じビット数の整数型の変数との間で相互にキャストするのは構わない。
関数なのに、異なるシグネチャのものを代入しあうのは問題。
>>891
そうですか‥‥
いまどき MFC の教科書が存在するかどうかは疑問ですが、やっぱり MFC に戻るしかないのですか!
でも、あのドキュメント=ビュー構造はいまだによく理解できないですね‥‥
そうですか‥‥
いまどき MFC の教科書が存在するかどうかは疑問ですが、やっぱり MFC に戻るしかないのですか!
でも、あのドキュメント=ビュー構造はいまだによく理解できないですね‥‥
905デフォルトの名無しさん
2021/02/25(木) 19:52:59.02ID:0YuzuhSG c/c++で型が厳しい?何言ってんだろ
906デフォルトの名無しさん
2021/02/25(木) 22:34:17.62ID:GHceiqHX C++は一応明示的に破ろうとしなければ結構ちゃんとチェックしてくれる
C? 知らんな
C? 知らんな
907デフォルトの名無しさん
2021/02/25(木) 23:10:04.64ID:NZmV0r2o >>902-903
「引数が一致しない」という素朴な観点でアウトだろうし例外処理関係ないだろ。
「引数が一致しない」という素朴な観点でアウトだろうし例外処理関係ないだろ。
908デフォルトの名無しさん
2021/02/26(金) 02:06:22.71ID:uELWbBar909デフォルトの名無しさん
2021/02/26(金) 07:24:52.91ID:gCkWSKrb int (int) { return 0; }で埋めて何が嫌なのかが分からないからな
特別な事情があるなら動かすハードとかの仕様調べろ
そんなのないなら素直に安全に書いとけ、でいいじゃん
特別な事情があるなら動かすハードとかの仕様調べろ
そんなのないなら素直に安全に書いとけ、でいいじゃん
910デフォルトの名無しさん
2021/02/26(金) 07:52:48.02ID:M2eccXrm911デフォルトの名無しさん
2021/02/26(金) 07:57:36.04ID:M2eccXrm912デフォルトの名無しさん
2021/02/26(金) 12:52:04.91ID:X0njcRoR cは互換型の概念がガバガバだからなあ…
typedefは当然互換だけど、structは中身のpodが同じでも(typedefしなければ!)タグ名で弾けるので、一々structに包めば論理ミスを防ぐこともできなくもない
typedefは当然互換だけど、structは中身のpodが同じでも(typedefしなければ!)タグ名で弾けるので、一々structに包めば論理ミスを防ぐこともできなくもない
913デフォルトの名無しさん
2021/03/01(月) 02:34:24.68ID:sakgt9rY 規格書を読んでみんなC++覚えてたの?
入門用のドキュメント読んだら規格書読むべきですか?
入門用のドキュメント読んだら規格書読むべきですか?
914デフォルトの名無しさん
2021/03/01(月) 06:09:14.80ID:N/bll+Sf 趣味のC++オタクでいいんならそれでいいと思うよ
C++を実用したいならそういうのはやめとけ、というかまず手を動かせ
その上で疑問が出てきたら調べるのはアリ
C++を実用したいならそういうのはやめとけ、というかまず手を動かせ
その上で疑問が出てきたら調べるのはアリ
915はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 09:15:36.61ID:770X86Bb 問題に遭遇したときに疑問として感じ取れる人ならいいんだが、
謎理論を自分の中に構築して邁進してしまうやつも
少なからずいるので安易に手を動かせとは言いにくい。
謎理論を自分の中に構築して邁進してしまうやつも
少なからずいるので安易に手を動かせとは言いにくい。
916デフォルトの名無しさん
2021/03/01(月) 09:31:54.75ID:Qi7MAN5S 各コンパイラに固有の実装依存があるから、結局は試すしかない。
PGが規格と違った動きをしているコンパイラをなじったところで、勝利するのはPGではなくコンパイラ。
PGが規格と違った動きをしているコンパイラをなじったところで、勝利するのはPGではなくコンパイラ。
917はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 09:41:00.95ID:770X86Bb 商用コンパイラがその商用コンパイラがサポートしているはずの規格と違う挙動だったらそれは文句言ってもいいだろ。
918デフォルトの名無しさん
2021/03/01(月) 09:44:14.28ID:kUoELfRz 文句を言うのはいいけど、規格書を盾に納期は延びないのよ。
919デフォルトの名無しさん
2021/03/01(月) 09:46:40.02ID:Qi7MAN5S >>918
それな
それな
920デフォルトの名無しさん
2021/03/01(月) 09:52:30.22ID:nOTghizW まあその通りなんだけど、誰かが言ってるからコンパイラ改良されるわけで
921デフォルトの名無しさん
2021/03/01(月) 09:52:48.41ID:Qi7MAN5S PGは、コンパイラが規格準拠してくれる日のために #if #endif で区切ってすぐに切り替えできるようにしておくことしかできない。
dirent周りのカオスを知っているなら、規格準拠をうるさく言う虚しさを理解しているはず。
dirent周りのカオスを知っているなら、規格準拠をうるさく言う虚しさを理解しているはず。
922はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 10:34:18.93ID:770X86Bb 商用コンパイラを商売で使うならサポート契約とセットじゃねーの?
使い倒さないと契約料丸損やないけ。
使い倒さないと契約料丸損やないけ。
923デフォルトの名無しさん
2021/03/01(月) 10:42:44.99ID:N/bll+Sf >>922
いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?
ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ
仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける
皆お前みたいに暇じゃねーんだよ
いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?
ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ
仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける
皆お前みたいに暇じゃねーんだよ
924デフォルトの名無しさん
2021/03/01(月) 10:52:02.51ID:f1Pg/hcl >>923
こういうのって結構な割合で最適化の不具合だったりするよね
特に組み込み系だとしょっちゅうそういうのあるから、該当箇所だけ最適化レベル下げて通したりしてるわ
もちろん不具合の報告もしてるけど修正まで時間かかるからね
こういうのって結構な割合で最適化の不具合だったりするよね
特に組み込み系だとしょっちゅうそういうのあるから、該当箇所だけ最適化レベル下げて通したりしてるわ
もちろん不具合の報告もしてるけど修正まで時間かかるからね
925はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 11:11:13.26ID:770X86Bb すぐにとはいかない現実があるのはわかるが、サポート契約の内容を本当に把握して言ってる?
商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。
契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。
商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。
契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。
926デフォルトの名無しさん
2021/03/01(月) 11:12:35.72ID:Qi7MAN5S #if #endif マクロがない言語は無駄にネストするのが欠点だと思う。
927はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 11:38:15.03ID:770X86Bb #if での切り分けだってネストはありうるけど、
それが見た目に分かりづらかったりするし、
いいことばかりじゃないよ。
それが見た目に分かりづらかったりするし、
いいことばかりじゃないよ。
928デフォルトの名無しさん
2021/03/01(月) 14:12:42.88ID:CPl5J/qU 一昔前なら effective c++ くらいは読もうってとこだったが、
今はどうだろうな。efective modern c++ でも足りない感じがする。
てかc++やるなら自分であれくらいのポイント抑えるくらいの準備が必要かもしれんという地獄。
今はどうだろうな。efective modern c++ でも足りない感じがする。
てかc++やるなら自分であれくらいのポイント抑えるくらいの準備が必要かもしれんという地獄。
929デフォルトの名無しさん
2021/03/01(月) 14:23:24.82ID:Qi7MAN5S スマートポインタが標準規格に採用されたC++11とそれ以前では、作法が随分違ってくる気がするよ。
930デフォルトの名無しさん
2021/03/01(月) 17:34:12.59ID:oQ7wqd0O931デフォルトの名無しさん
2021/03/01(月) 20:24:36.67ID:YhH9VVk1932デフォルトの名無しさん
2021/03/01(月) 21:14:48.91ID:Dkl+jirL >>925
> 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
無いかも知れんが、「なんかおかしいんです~」でバグの特定がめっちゃ困難なことはプログラマーは身を持って知ってるから
そもそもバグの解決が遠のいたら苦しむのは自分だし
> 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
無いかも知れんが、「なんかおかしいんです~」でバグの特定がめっちゃ困難なことはプログラマーは身を持って知ってるから
そもそもバグの解決が遠のいたら苦しむのは自分だし
933デフォルトの名無しさん
2021/03/01(月) 21:56:02.87ID:N/bll+Sf >>931
いや、純粋な言語仕様の話なら別に偉そうでもいいのよ正しい事書いてくれてるなら
いや、純粋な言語仕様の話なら別に偉そうでもいいのよ正しい事書いてくれてるなら
934はちみつ餃子 ◆8X2XSCHEME
2021/03/01(月) 23:56:40.27ID:770X86Bb >>932
雑な報告でいいというわけではないが、
サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、
報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。
C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが
出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで
見たことがあって商用処理系ってすげーなーと思ってたんだが、
そういう対応のほうが例外的に良すぎるだけなんかね?
雑な報告でいいというわけではないが、
サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、
報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。
C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが
出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで
見たことがあって商用処理系ってすげーなーと思ってたんだが、
そういう対応のほうが例外的に良すぎるだけなんかね?
935デフォルトの名無しさん
2021/03/02(火) 00:07:05.02ID:n7F7EI9c936デフォルトの名無しさん
2021/03/02(火) 00:37:21.45ID:wbC9damv スケジュールきついだけかもよ
バグがあるのわかってたけど数日かかりそうだから放置
バグ報告が出たから優先度上げて修正
バグがあるのわかってたけど数日かかりそうだから放置
バグ報告が出たから優先度上げて修正
937デフォルトの名無しさん
2021/03/02(火) 02:03:18.16ID:+qoPTldB そもそもユーザー数がアホみたいに多くてあらゆる層で利用されてるようなコンパイラだと
バグ報告あがってきてもまずそれほんとにバグなの??
ていうかまたコイツのリポートか!!!もしかしてただのいやがらせとかじゃないの??とか
色々まず疑ってかからないケースも半端なく多いだろうしな
バグ報告あがってきてもまずそれほんとにバグなの??
ていうかまたコイツのリポートか!!!もしかしてただのいやがらせとかじゃないの??とか
色々まず疑ってかからないケースも半端なく多いだろうしな
938デフォルトの名無しさん
2021/03/02(火) 05:18:47.46ID:+XzLrHKh939デフォルトの名無しさん
2021/03/02(火) 05:46:06.48ID:eqvY2Z+d940デフォルトの名無しさん
2021/03/02(火) 06:15:09.36ID:1/ifTUd4 >>934
VSのサブスク(旧MSDN)入ってる企業なら優先的に対応してくれるかもしれんけどね
ただVS2019の更新は数日とかのスパンでは来てないやろ(しかもベータを経てからじゃなかったか?
Xcodeのclangなんかはもっと遅い
そのLispWorksとかいうのは例外的だろうね
で、みんな回避方法くらいは自分で見つけるし直るまでの間何もしないわけにはいかんからな
VSのサブスク(旧MSDN)入ってる企業なら優先的に対応してくれるかもしれんけどね
ただVS2019の更新は数日とかのスパンでは来てないやろ(しかもベータを経てからじゃなかったか?
Xcodeのclangなんかはもっと遅い
そのLispWorksとかいうのは例外的だろうね
で、みんな回避方法くらいは自分で見つけるし直るまでの間何もしないわけにはいかんからな
941デフォルトの名無しさん
2021/03/02(火) 06:43:01.65ID:auUulvn4 コンパイラを作っている人は他の誰よりも標準規格に詳しい。
コンパイラが規格準拠できないのはなんらかの事情がある。釈迦に説法はカッコ悪い。
コンパイラが規格準拠できないのはなんらかの事情がある。釈迦に説法はカッコ悪い。
942デフォルトの名無しさん
2021/03/02(火) 11:52:24.56ID:K6P+Ktrz cl書くけどlispworksは資料もすごいのでお世話になる、中の人がlisp界隈で愛称で呼ばれるくらい精力的なんで、ただそうなだけだと思う
まあフリーな処理系使うけどな
しかしニッチ過ぎるlispのどこで儲けてるのやら全く謎
まあフリーな処理系使うけどな
しかしニッチ過ぎるlispのどこで儲けてるのやら全く謎
943デフォルトの名無しさん
2021/03/02(火) 22:42:51.15ID:NRNfCe84 言語としての機能はともかく、lispはマスコットがきもすぎ
944デフォルトの名無しさん
2021/03/02(火) 22:45:21.36ID:NT1aj9pH 言語を作った人の本を読むのが一番良い
945デフォルトの名無しさん
2021/03/02(火) 22:50:53.20ID:NT1aj9pH ていうか言語を作った人の本に載っているサンプルコードが
言語の思想を一番正確に表現しているはず……
言語の思想を一番正確に表現しているはず……
946デフォルトの名無しさん
2021/03/03(水) 04:56:27.42ID:W4jJ9FhP 禿の思想はC++03までだろ
頑なにラムダ式とrange-based-for-statementを拒み続けたところまで
4th editionでasyncを持ち上げてたけどその後の展開がアレだし
頑なにラムダ式とrange-based-for-statementを拒み続けたところまで
4th editionでasyncを持ち上げてたけどその後の展開がアレだし
947デフォルトの名無しさん
2021/03/03(水) 06:51:09.01ID:gVMBPcTA >>943
googleさんのImage for ...サジェストに
caution: made with alien technologyって標語の例の生物のロゴが出てきやがるのは風評被害
rplacd、dpb、fmakunboundとかほぼほぼ英語だし明らかにエイリアン語ではない
cも大概だしな
googleさんのImage for ...サジェストに
caution: made with alien technologyって標語の例の生物のロゴが出てきやがるのは風評被害
rplacd、dpb、fmakunboundとかほぼほぼ英語だし明らかにエイリアン語ではない
cも大概だしな
948はちみつ餃子 ◆8X2XSCHEME
2021/03/03(水) 14:59:21.41ID:ymUPAFSA949デフォルトの名無しさん
2021/03/03(水) 16:32:38.43ID:wyPUKIrf うわ下品な絵
950デフォルトの名無しさん
2021/03/03(水) 19:08:40.13ID:7D0nPsrG >>948
これは・・意外と嫌いではない・・w
これは・・意外と嫌いではない・・w
951デフォルトの名無しさん
2021/03/03(水) 19:15:48.54ID:zRjA/+hm オライリー表紙絵みたいな動物の絵じゃないと、しっくりこない。
952デフォルトの名無しさん
2021/03/03(水) 22:54:00.65ID:on2XNxxF オイリー禿山。
953デフォルトの名無しさん
2021/03/04(木) 11:11:37.69ID:J6mhpq5t 禿と禿(かむろ)の違いが判らない
954デフォルトの名無しさん
2021/03/04(木) 13:03:17.03ID:K63vSywh カムロは半グレ
955デフォルトの名無しさん
2021/03/04(木) 13:36:37.45ID:Ep7EXP13 c++は仕事で書いてない人ほど好きな言語
956デフォルトの名無しさん
2021/03/04(木) 14:22:00.04ID:qn7RQ+4J と、仕事で書いてないやつが言う
957デフォルトの名無しさん
2021/03/04(木) 15:32:17.13ID:9GqbczPP 二人以上でやるとOOPの思想的違いがぶつかって最悪破綻するんだよな
958デフォルトの名無しさん
2021/03/04(木) 15:33:34.57ID:9GqbczPP で、仕事でやるときは、最下層にレベル合わせないとモノが出来上がらないしね
959デフォルトの名無しさん
2021/03/04(木) 17:35:44.00ID:Ep7EXP13 自分一人ならさぞかしすごいソフトウェアが書けると思ってるんですね。すごいですね。
960デフォルトの名無しさん
2021/03/04(木) 19:51:50.17ID:cqTSJRKn961デフォルトの名無しさん
2021/03/04(木) 20:33:50.17ID:Xyn3qjeu constexpr制限きつすぎ
962デフォルトの名無しさん
2021/03/04(木) 20:47:45.23ID:FQXwH3J2 C++11の頃ならともかく今そんなにきついか?
963デフォルトの名無しさん
2021/03/05(金) 05:58:33.51ID:BcBZQBoi C++20、情報過多でしんどい
964デフォルトの名無しさん
2021/03/05(金) 06:14:45.51ID:ddot6YlQ std::variant を使い始めたのですが、例えば variant の中身が4種類あって、そのうちの
2種類とか3種類だけに対し共通なコードを実行したい、ときにはどんな書き方がありますかね?
全部に同じコードを適用するなら std::visit() でいいわけですが。
2種類とか3種類だけに対し共通なコードを実行したい、ときにはどんな書き方がありますかね?
全部に同じコードを適用するなら std::visit() でいいわけですが。
965デフォルトの名無しさん
2021/03/06(土) 13:33:27.36ID:bGzUu7RI apply
966デフォルトの名無しさん
2021/03/06(土) 20:35:43.51ID:aLQdimbx >>964
共通処理を別の関数にまとめたうえで、visitする時に各型のオーバーロードでそれを呼び出す
visit時にジェネリックラムダを使って内部でif constexprで分岐
visit時にオーバーロードされた関数オブジェクトを用いて、共通処理が必要な型について呼び出されるところをテンプレートにして、他は型を指定しておく
visit時にオーバーロードされた関数オブジェクトを用いて、コンセプトで分岐
.index()とif文で書き分ける
共通処理を別の関数にまとめたうえで、visitする時に各型のオーバーロードでそれを呼び出す
visit時にジェネリックラムダを使って内部でif constexprで分岐
visit時にオーバーロードされた関数オブジェクトを用いて、共通処理が必要な型について呼び出されるところをテンプレートにして、他は型を指定しておく
visit時にオーバーロードされた関数オブジェクトを用いて、コンセプトで分岐
.index()とif文で書き分ける
967デフォルトの名無しさん
2021/03/07(日) 23:48:37.36ID:B2szmBNH968デフォルトの名無しさん
2021/03/10(水) 13:31:16.40ID:b6BdhXEV int getX() const { return mX; }
みたいな関数があるクラスのメンバ関数内でmXを参照するときに
mX と getX() のどっち使うのが一般的な書き方?
みたいな関数があるクラスのメンバ関数内でmXを参照するときに
mX と getX() のどっち使うのが一般的な書き方?
969デフォルトの名無しさん
2021/03/10(水) 14:04:43.65ID:8PvVb8hX >>968
確かにこれはいつも悩むなー
きっとアクセサ使うべきなんだろうけどね
頻繁にアクセスするならローカル変数に代入した方が早くなったりするし、一般的にクラス宣言に書いてるのもはインライン展開されてコスト的には変わらないだろうしね
むしろ他の言語のときにインライン展開なんてされないからめちゃくちゃ悩む
確かにこれはいつも悩むなー
きっとアクセサ使うべきなんだろうけどね
頻繁にアクセスするならローカル変数に代入した方が早くなったりするし、一般的にクラス宣言に書いてるのもはインライン展開されてコスト的には変わらないだろうしね
むしろ他の言語のときにインライン展開なんてされないからめちゃくちゃ悩む
970デフォルトの名無しさん
2021/03/10(水) 14:10:23.61ID:mzPrKkeu プロパティがないからな
971デフォルトの名無しさん
2021/03/10(水) 15:16:37.41ID:ZK+TZHvn なんでもかんでもgetterとかはJAVAから来たのかとか思ってしまう
取得時に演算しないならそもそもgetterなんか作らない方が分かりやすいと思うのだが
取得時に演算しないならそもそもgetterなんか作らない方が分かりやすいと思うのだが
972デフォルトの名無しさん
2021/03/10(水) 15:36:26.11ID:pTnyTINd >>971
C#みたいなのはそれはそれでわかりにくいから、getterも関数がいい。
C#みたいなのはそれはそれでわかりにくいから、getterも関数がいい。
973デフォルトの名無しさん
2021/03/10(水) 15:47:37.68ID:qvIOwUBa 無理にgetter作れってのはアホだなと思うけど、まあgetterくらいならそこまで問題になることもないかなとは思う。
やたらめったらsetter作ってたら死ねとは思うが。
やたらめったらsetter作ってたら死ねとは思うが。
974デフォルトの名無しさん
2021/03/10(水) 15:50:25.97ID:pTnyTINd const 属性をうまく使えば、getterを減らしても安全にコーディングできる。
975デフォルトの名無しさん
2021/03/10(水) 15:55:29.61ID:SA6nop04 オブジェクト指向に侵されてるとプロパティが欲しくなるだろう。
しかし、本物のC++は知っている。
それは間違いだと。
しかし、本物のC++は知っている。
それは間違いだと。
976デフォルトの名無しさん
2021/03/10(水) 19:38:24.39ID:pTnyTINd クラス外からは以下のようにconst 属性をつけてアクセスさせれば心持ち安全になる。
const MyClass& getInstance() const { return *this; }
const MyClass& getInstance() const { return *this; }
977デフォルトの名無しさん
2021/03/10(水) 19:39:09.45ID:pDjVp4Qi978デフォルトの名無しさん
2021/03/10(水) 20:37:43.62ID:wDDQFNF0 JavaBeans方式のプロパティはリフレクションあってこそのものなのにC++で真似してもなー。
979デフォルトの名無しさん
2021/03/10(水) 21:11:42.58ID:98wPPrPT JavaFXのプロパティは観測可能になってたすごかった
データバインディングとかリアクティブとかプログラムの書き方もずいぶん変わったよね
データバインディングとかリアクティブとかプログラムの書き方もずいぶん変わったよね
980デフォルトの名無しさん
2021/03/11(木) 01:07:59.93ID:6JW0gImZ そうだね流石Oracleだね
981デフォルトの名無しさん
2021/03/12(金) 00:57:21.49ID:9IOLdfat https://ideone.com/0FptIo
だれか、剰余の符号関係を教えてくれ。
だれか、剰余の符号関係を教えてくれ。
982デフォルトの名無しさん
2021/03/12(金) 01:32:57.35ID:I1KnPozY たぶんCから変わってないよな?
(a/b) * b + a%b == a
以上に説明できることはないと思うけど
他になにかあるの?
(a/b) * b + a%b == a
以上に説明できることはないと思うけど
他になにかあるの?
983はちみつ餃子 ◆8X2XSCHEME
2021/03/12(金) 03:04:36.84ID:ByeOJ4Y7 符号の向きは C++11 から仕様に入った。
(それはでは処理系定義)
C では C99 から。
(それはでは処理系定義)
C では C99 から。
984デフォルトの名無しさん
2021/03/12(金) 08:30:25.58ID:GKbHXc3G プロパティーは継承できたりインターフェースとして定めたりできるのが強み
だがそれしか強みが無i
しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる
というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん
だがそれしか強みが無i
しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる
というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん
985デフォルトの名無しさん
2021/03/12(金) 08:36:14.31ID:GKbHXc3G P=Q・X+R (0≦R<Q)
ので除数が負の%とか定義不能
被除数が負の場合はしらそん
多分Rが非負でなければならないから多分XはPより負の側に振れねばならないのではないか
ので除数が負の%とか定義不能
被除数が負の場合はしらそん
多分Rが非負でなければならないから多分XはPより負の側に振れねばならないのではないか
986デフォルトの名無しさん
2021/03/12(金) 14:00:09.40ID:9IOLdfat 未定義っぽいですね。ありがとう。
987デフォルトの名無しさん
2021/03/12(金) 16:14:00.58ID:EbD8nxkK C/C++に限らず界隈では「負数の剰余をとるべからず」という伝承がある
>>985
剰余の定義は、その定義だけではないですね
「最小正剰余」のほかには「絶対的最小剰余」もあります
https://ja.wikisource.org/wiki/%E5%88%9D%E7%AD%89%E6%95%B4%E6%95%B0%E8%AB%96%E8%AC%9B%E7%BE%A9/%E7%AC%AC1%E7%AB%A0/%E6%95%B4%E6%95%B0%E3%81%AE%E6%95%B4%E9%99%A4
自分で適当な剰余を定義したっていいのですよ
剰余の定義は、その定義だけではないですね
「最小正剰余」のほかには「絶対的最小剰余」もあります
https://ja.wikisource.org/wiki/%E5%88%9D%E7%AD%89%E6%95%B4%E6%95%B0%E8%AB%96%E8%AC%9B%E7%BE%A9/%E7%AC%AC1%E7%AB%A0/%E6%95%B4%E6%95%B0%E3%81%AE%E6%95%B4%E9%99%A4
自分で適当な剰余を定義したっていいのですよ
989デフォルトの名無しさん
2021/03/13(土) 14:10:18.80ID:9o031KiD 0へ丸めるtruncate算だったかと
mod算するときに結構困るのでユークリッド算関数は常にヘッダに入れてる
a % 2 == 1 // -1かもしれない
まあ偶奇判定くらいなら!=0で取り繕えるけど
ネットで見かける拡張ユークリッドのトイプログラムは大体間違ってるね
負の除数を想定してないgcdならそれでいいけど、ベズー係数求める時に負の被除数を扱えないと一般解の公式で他の解出してお茶は濁せるけど
有限体やら他の体とテンプレート共有できない
mod算するときに結構困るのでユークリッド算関数は常にヘッダに入れてる
a % 2 == 1 // -1かもしれない
まあ偶奇判定くらいなら!=0で取り繕えるけど
ネットで見かける拡張ユークリッドのトイプログラムは大体間違ってるね
負の除数を想定してないgcdならそれでいいけど、ベズー係数求める時に負の被除数を扱えないと一般解の公式で他の解出してお茶は濁せるけど
有限体やら他の体とテンプレート共有できない
990デフォルトの名無しさん
2021/03/17(水) 23:25:02.49ID:H7rJK4fS ttp://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf
991デフォルトの名無しさん
2021/03/22(月) 08:32:15.77ID:j6rur0Vp 静的ライブラリを作るときに-fPICを指定する必要はないよね?
992デフォルトの名無しさん
2021/03/22(月) 09:41:25.38ID:mzxuOn07 OSによるのでは
993デフォルトの名無しさん
2021/03/22(月) 23:28:52.74ID:iFQHROzx PICマイコン用のバイナリが吐かれる
994デフォルトの名無しさん
2021/03/24(水) 07:52:17.23ID:PNXF+EC1 struct a{};
struct b:private a{};
b c;
(a*)&c; //ok
この下痢糞仕様は何?
こう決まった理由が知りたい
struct b:private a{};
b c;
(a*)&c; //ok
この下痢糞仕様は何?
こう決まった理由が知りたい
995デフォルトの名無しさん
2021/03/24(水) 08:46:44.63ID:QJMmjFss996デフォルトの名無しさん
2021/03/24(水) 09:11:00.00ID:PNXF+EC1 reinterpret_castとちゃうで
997デフォルトの名無しさん
2021/03/24(水) 09:17:53.26ID:R+oM8cup たとえ(int*)&c;でも通るでしょ
998デフォルトの名無しさん
2021/03/24(水) 09:40:19.90ID:PNXF+EC1 仮想継承にするとダウンキャストはできなくなるんで
型を無視しているのでもなさそう
型を無視しているのでもなさそう
999デフォルトの名無しさん
2021/03/24(水) 10:03:59.75ID:FhOgWspo ポインタは任意のポインタに変換出来る
未定義動作になる可能性があるのはデリファレンスするコードを書いた場合
未定義動作になる可能性があるのはデリファレンスするコードを書いた場合
1000デフォルトの名無しさん
2021/03/24(水) 10:41:19.80ID:uPqg/PBu 64bitアプリで32bit整数値をvoid*にキャストしようとするとエラーになる場合があるね。
それを親切と感じることが出来れば玄人。
それを親切と感じることが出来れば玄人。
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 74日 16時間 47分 20秒
新しいスレッドを立ててください。
life time: 74日 16時間 47分 20秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 生活保護廃止、公務員の給与に最低賃金を適用⇦これをやるだけで国民の9割の不満が解消されるのにやらない理由 [218488394]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
- 台湾政党が高市首相「存立危機事態」発言に感謝の書簡「我々の心を強く奮い立たせるものでした」 [834922174]
