[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/27 11:38 / Filesize : 256 KB / Number-of Response : 1020
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part154



1 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 17:54:00.55 ID:0DW9z0rL.net]
※前スレ
C++相談室 part153
https://mevius.5ch.net/test/read.cgi/tech/1602339500/

テンプレここまで

2 名前:デフォルトの名無しさん [2021/01/08(金) 17:56:28.28 ID:GG1sOSQC.net]
おつかれー

3 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 19:34:40.54 ID:hBRzO/B9.net]
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

4 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 19:38:13.11 ID:8XBZO/70.net]
operator->*を好き勝手にオーバーロードするのは
C++厨二病なら誰しもが通る道だと思ってる

5 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 20:05:42.45 ID:gKD5AY0L.net]
厨二病以下だね沼二病か幼長病レベル

6 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 20:33:39.47 ID:eZ2LT3hD.net]
>>3
お前が死ね

7 名前:デフォルトの名無しさん [2021/01/08(金) 20:55:30.03 ID:lmjqKHzd.net]
だって演算子オーバーロード楽しいし!
それSpirit作者のジョエルさんにも言えるの?

8 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 21:03:27.15 ID:NkKDsd1u.net]
% を三次元ベクトルのクロス積にするのはかつて自分も思いついたけど、勧められないって立場の人も居て
演算子オーバーロードが自然かそうでないかってのは人に拠るなと思った
自分の価値観で言えばiostreamの >> とかってあんまり自然じゃないが
他に何がいいかって言われてもないので仕方ない

9 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 21:08:29.47 ID:gKD5AY0L.net]
<filesystem>のディレクトリ区切りがoperator/なのとかオモロイやん

10 名前:デフォルトの名無しさん [2021/01/08(金) 21:17:01.55 ID:U7HVBqAl.net]
絵文字プログラミングが来る
なので独自オペレータは出来た方がいい



11 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 21:44:49.24 ID:gxkYqo9D.net]
>>4
わしは20年ぐらい前にその道を通った
だから若者がその道を通ることについては何もいわない
ほっといて気がつかないならダメ人材だし
使える人材は自分で気がつく

12 名前:デフォルトの名無しさん [2021/01/09(土) 00:35:22.39 ID:8yDnsj0x.net]
キーワードも再定義可能にしてホスイ

13 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:15:10.33 ID:CT/R4i5r.net]
#defineでイケるやろ

14 名前:デフォルトの名無しさん [2021/01/09(土) 01:39:13.52 ID:InkVVK6p.net]
#define private public
ってテクニックのことか。

15 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 04:17:16.54 ID:kjQQkk+g.net]
>>14
それコンパイル通っちゃうの?
プリプロセスだからOKなのか・・・

16 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:21:23.56 ID:c2CH7ey/.net]
キーワードをdefineするのは規格上は未定義動作
でもだいたい通っちゃうな

17 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:27:02.27 ID:lvRTpcj7.net]
その条文どこだっけ

18 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 10:07:37.60 ID:c2CH7ey/.net]
この辺かな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すんな)

19 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:17:12.79 ID:lvRTpcj7.net]
thx

20 名前:デフォルトの名無しさん [2021/01/09(土) 20:30:21.03 ID:w9vYk25X.net]
>>13
何言ってんだおめー;;;



21 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 21:18:55.59 ID:jpx8Mcv4.net]
C++はプリプロセッサが発展する方向にいかなくて本当に良かった
プリプロセッサを吸収して凄いことになってる気はするが

22 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 21:24:33.16 ID:lvRTpcj7.net]
禿の方針だからね
スコープに従わない反逆者の排除は

23 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 21:37:52.40 ID:Te5slSqE.net]
(でも楽しいよね
(コンパイル直前のコードが数個のプリミティブにまで還元されちまう楽しい言語もあるしな))

24 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 22:11:02.76 ID:w9vYk25X.net]
プリプロセッサはC言語の目的(OSを様々なプラットフォームに移植可能な共通ソースコードとして書く)ための
必要欠く書くべからざるしくみとして導入され、できた時点で仕様としてはほぼ過不足なかった
という印象

そういう目的のブツなので、キーワードの再定義には全く不向き

25 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 07:00:15.18 ID:NGSbpihh.net]
プリプロセスおもしろいやん
俺プリプロセス大好き

26 名前:デフォルトの名無しさん [2021/01/10(日) 07:04:45.26 ID:pzwk9NYM.net]
最近は#includeと#defineしか使ってない。

27 名前:デフォルトの名無しさん [2021/01/10(日) 08:03:37.57 ID:pzwk9NYM.net]
#defineじゃなくて#pragma onceだった。

28 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 10:29:09.95 ID:eq9L0D9i.net]
どうやったらその2つを取り違えできるんだww
ほんとにつかってる??

29 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 10:29:46.47 ID:Cbi+hphF.net]
#pragma onceとか#inlude_nextとか標準に入れてほしくはある

30 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 10:45:39.55 ID:J1w4FPK7.net]
#pragma onceはもう標準のつもりで使ってるわ



31 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 11:35:58.46 ID:MuZPu68S.net]
>>25
そういう時期もあったな…(遠い目)

32 名前:デフォルトの名無しさん [2021/01/10(日) 11:49:17.12 ID:WbJbdET/.net]
#pragma便利よね ライブラリのリンク指定とかも

33 名前:はちみつ餃子 mailto:sage [2021/01/10(日) 11:50:54.98 ID:smlN1G6e.net]
>>8
そう、 iostream は「仕方ない」と思うんだよな。

C++11 で variadic template が導入されるまでは
可変長引数を安全な型システムの中で扱えなかった。
仕方がないから演算子でなんとかそれっぽくしただけ。
演算子の中で比較的それっぽいのが << や >> だっただけ。

>>9
そういう観点から見ると、パスや日付の区切りに / を使うのは
演算子にしなければならない仕方なさは感じられない。
演算子にするなら / は比較的自然な選択ではあると思うけど。

34 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 11:53:18.07 ID:5+d8OMjE.net]
シフト演算なんてほとんど使わんしなあ

35 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 11:57:06.83 ID:uVXyGOJo.net]
ファイルパスってチェーンしたいものの筆頭格だから演算子にするのは妥当だと思うけど

36 名前:デフォルトの名無しさん [2021/01/10(日) 12:20:31.40 ID:pzwk9NYM.net]
>>28
使ってるわい。

37 名前:デフォルトの名無しさん [2021/01/10(日) 12:20:58.71 ID:pzwk9NYM.net]
とはいえレスくれてありがとうw

38 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 12:38:01.52 ID:stlWAB5c.net]
>>35
std::path だと operator/= だな。
優先順位とか戻り値の型とか理由はあるんだろうが、やはり無理してる感は拭えない。

39 名前:デフォルトの名無しさん [2021/01/10(日) 23:28:34.84 ID:9cXVj8qL.net]
mutexって同時だとどうなるの?

40 名前:デフォルトの名無しさん [2021/01/10(日) 23:32:27.11 ID:9cXVj8qL.net]
信用して使うしかないけど…本当に同時で来たら…どうなるのかなぁ…と思って…。



41 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 23:43:03.84 ID:1knBg1rC.net]
同時に入ろうとしたら同時に入るのではない別の世界線に分岐するから
結局同時にならない

42 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 00:43:54.84 ID:KM6/Ii6v.net]
posix平行宇宙論

43 名前:デフォルトの名無しさん [2021/01/11(月) 00:44:15.09 ID:AtO8PUuj.net]
それだと…CPUの負荷や調子によって…同時になるって…事だよ…。

44 名前:デフォルトの名無しさん [2021/01/11(月) 00:45:46.62 ID:AtO8PUuj.net]
mutex…危ういな…どうしよう…。運に任せて…諦めるか…。

45 名前:デフォルトの名無しさん [2021/01/11(月) 00:54:29.81 ID:AtO8PUuj.net]
運任せは辛い…。

46 名前:デフォルトの名無しさん [2021/01/11(月) 01:30:50.91 ID:AtO8PUuj.net]
https://stackoverflow.com/questions/7373202/what-happens-if-two-theads-lock-a-mutex-concurrently
大丈夫だと言っているが…ほんまかいな…と思います…迷信はつきもの。

47 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 01:37:51.07 ID:KM6/Ii6v.net]
テストプログラム作ってさっさと検証しろ無能

48 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 01:59:20.31 ID:3nmpeNiQ.net]
>>46
信用できないならソースやアセンブリ読めよ。ここで名無しに答えてもらっても、信用できないんだろ?

49 名前:デフォルトの名無しさん [2021/01/11(月) 03:08:34.69 ID:KSKcxhht.net]
MutexはOSに依存するので絶対に大丈夫ということはないですが、数々のトラブルを引き起こし最も懸念されたLinuxが安定してきてるので、現在では実用上問題がないレベルにあると思います。

50 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 03:36:14.65 ID:dLrb5ZQk.net]
マルチCPUでバスリクエストが同時に出た場合の制御なんて明確に定義されてんだろうが
OS依存だハード依存だと逃げているから見えない不安に怯えることになるんだよ



51 名前:デフォルトの名無しさん [2021/01/11(月) 06:01:13.69 ID:vFi9Z+AQ.net]
LinuxのMutexって使いにくいよね
俺はWindowsから入ったからMutexって名前付きが当たり前だと思ってたんだけどLinuxのMutexには名前がない
どうやって複数のプロセス間で同じMutexを使うんだよ・・・って悩んだ
共有メモリなんかでMutexのアドレスを受け渡しするらしいんだけどさ
面倒くさくなってLinux版の同期制御はファイルロックにしちゃった。。

52 名前:デフォルトの名無しさん [2021/01/11(月) 06:47:08.93 ID:KSKcxhht.net]
LinuxのファイルロックはNFSで(※私たちにはバグのように見える)仕様通りの動作をするので気を付けたほうが良いですよ。

ユーザーが指定したファイルやディレクトリを不用意に使用すると再現性の無いバグに悩まされます。

53 名前:デフォルトの名無しさん [2021/01/11(月) 06:56:23.61 ID:vFi9Z+AQ.net]
>>52
アドバイスありがとう
Linuxで共有メモリの使い方もよく分からなくて
共有メモリも書いてる途中で読み取りされたら困るから
「書いたよー」「読み終わったよー」ってプロセス間同期したいんだけどMutex受け渡しの前に同期処理って・・・
それで共有メモリの読み書きをファイルロックで同期してMutexを渡すかなーって考えてるうちに
もうファイルロックだけでいいんじゃないかってなってしまった

一般的にはどうやってやるのがよかったんだろ?

54 名前:デフォルトの名無しさん [2021/01/11(月) 07:35:12.79 ID:KSKcxhht.net]
>>53
結局、「NFSではバグります」と注意したうえでファイルロックを使うことが一般的に行われてるみたいですよ。

逆に言うと、NFSだけ気を付ければ、問題が起きないみたいです。

55 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 08:06:23.60 ID:RSMcM3e3.net]
ちょっとググっただけだけどそんなに難しいかなぁ?
https://www.geekpage.jp/programming/linux-network/book/07/7-41.php

56 名前:デフォルトの名無しさん [2021/01/11(月) 08:06:43.86 ID:vFi9Z+AQ.net]
>>54
ありがとう ちょと安心した

57 名前:デフォルトの名無しさん [2021/01/11(月) 08:16:58.50 ID:vFi9Z+AQ.net]
>>55
コード見てみましたけどMutexの作成と共有メモリの書き込みが終わってからforkしてますね
forkした親と子ならそれでもいいんでしょうけど
実際は親子ではないプロセス間でMutex使いたくなったりするじゃないですか
Mutexが作成される前や共有メモリへの書き込み完了前にスレーブがMutexを要求しに来ると困ります

58 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 08:38:54.12 ID:WYfXTDe9.net]
>>51
名前付きも普通にある
sem_open
名前はセマフォだが当然mutexとして使える

目的がメッセージのやり取りならmkfifoも使える

59 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 08:48:31.88 ID:3OtB0f6U.net]
mutexじゃなくて名前付きセマフォなら普通にプロセス間で使えなかったっけ?

60 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 09:14:02.58 ID:RSMcM3e3.net]
>>57
応用力ないの?
>>58-59みたいにセマフォ使うこともできるし、名前付き共有メモリー + Mutexでもいいだろ



61 名前:デフォルトの名無しさん [2021/01/11(月) 09:22:15.64 ID:KSKcxhht.net]
>>60
Linuxではファイルロックで良いよ。

62 名前:デフォルトの名無しさん [2021/01/11(月) 09:28:25.14 ID:vFi9Z+AQ.net]
セマフォのほうには名前付きあったんですね見落としてました
ありがとう!

63 名前:デフォルトの名無しさん [2021/01/11(月) 09:39:24.93 ID:vFi9Z+AQ.net]
あと別のところでソケットを排他リソースで使うというアイデアを教えてもらったことあります
同じポート番号をバインドできるのは1つだけだからこれを排他に使うという案

64 名前:デフォルトの名無しさん [2021/01/11(月) 09:52:46.06 ID:KSKcxhht.net]
3年ぶりの建設的なスレだな。

65 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 10:09:50.89 ID:RSMcM3e3.net]
>>61
ファイルロックはロックしたままプロセス死ぬとリブートしても解消できないのがね

66 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 10:39:47.37 ID:sBoV/AFh.net]
>>51
pthread周りはなんであんな仕様なのか謎
CPUのアーキテクチャーを深く知れば合理性を得心できるのかどうか、

67 名前:デフォルトの名無しさん [2021/01/11(月) 11:25:14.07 ID:vFi9Z+AQ.net]
>>65
それはファイルロック(flock関数)ではなく、単純にファイルの存在チェックをしているだけじゃないですか?
flockを使ったファイルロックならプロセス異常終了時にOSによってロックが解放されます

68 名前:デフォルトの名無しさん [2021/01/11(月) 12:46:20.78 ID:vpEQZDgx.net]
ミックスジュースよりセックスジュースが好きですね

69 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 14:25:33.73 ID:EL34sMb+.net]
唐突に何いいだすねん君は!
(‘д‘⊂彡☆))Д´)パーン <ミックスジュースよりセックスジュースが好きですね

70 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 14:41:16.25 ID:dLrb5ZQk.net]
ラブジュースだろ



71 名前:デフォルトの名無しさん [2021/01/11(月) 16:14:45.22 ID:AtO8PUuj.net]
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だと仮定しても…カーネルを疑うなんて…
本当に…ナンセンスな話なので…一応…信用して使うことにします…。

72 名前:デフォルトの名無しさん [2021/01/11(月) 16:55:02.21 ID:AtO8PUuj.net]
39です…。
結局…fullでなくても…atomic_exchange_acqが呼ばれているようです…アトミック操作です…。
なので…みなさん…安心して使いましょう…。

73 名前:デフォルトの名無しさん [2021/01/11(月) 16:56:14.48 ID:KSKcxhht.net]
>>72
そこでやめずに、atomic_exchange_acqの中まで追いかけてみませんか?

74 名前:デフォルトの名無しさん [2021/01/11(月) 16:56:26.10 ID:AtO8PUuj.net]
https://blog.sakasin.net/pthread-mutex-with-glibc
ソースです…。

75 名前:デフォルトの名無しさん mailto:sage [2021/01/11(月) 21:32:01.48 ID:KM6/Ii6v.net]
Debian woody の頃まで posix thread は使い物にならなかったが Debian etch からようやく使い物になった印象だな
当時から利用している身にしては

76 名前:デフォルトの名無しさん [2021/01/12(火) 05:50:41.37 ID:pJAexhLb.net]
わりと最近ですね。

77 名前:デフォルトの名無しさん [2021/01/12(火) 07:34:00.56 ID:V95G+u6D.net]
woodyって20年くらい前だっけ
最初はJavaVMもグリーンスレッドというVM内の仮想スレッド実装だったんだよね
あれもOSネイティブのスレッドが信用されてなかったからなのかな
もちろん、現在のJavaVMはOSのネイティブスレッド使う実装になってるけどね

78 名前:デフォルトの名無しさん [2021/01/12(火) 07:44:47.10 ID:pJAexhLb.net]
Javaといえばブラック何とかプロジェクトがSUNに文句言ってなかったっけ?

79 名前:デフォルトの名無しさん [2021/01/12(火) 07:45:53.88 ID:pJAexhLb.net]
Etchが2007年と書いてあるな。

80 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 09:08:57.41 ID:e5lAHXYT.net]
設計思想的なことについて質問があります。
クラスの使い方がよく分かりません。

僕が今何かを作ろうと思ったら、関数の集まりが引数や返り値のやり取りを通じて協調するような設計をしてしまいます。
この引数や返り値が多く複雑になったりしてきたらクラスを用いた設計を考える、という理解は正しいでしょうか?



81 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 09:22:47.73 ID:XkW3hQXX.net]
>>80
正しいかどうかは知らないし気にしないでいいと思うけど、
そういう場合はただのデータの集まりとして構造体(これもクラスの一種だけど)を使うだけでも簡単になるだろうね。

82 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 13:35:30.39 ID:lxco4c0J.net]
個人的には、一度無理にでも概念(ウインドウとか表示とか作ってるソフトの主要な概念)をクラス名にして作ってみるといいとおも
やってるうちに慣れてくる

83 名前:デフォルトの名無しさん [2021/01/12(火) 14:01:10.35 ID:V95G+u6D.net]
そうだね
なにかを題材にしてオブジェクト指向やってみるのがいいと思う
でもウインドウはどうかなー そもそもUIツールキットをある程度知らないといけないし
GUIってオブジェクト指向らしからぬ部分も多いので

もっとビジネスロジック中心の題材がいいと思うよ たとえば掲示板システムとか
板には複数のスレがあって、各スレの中には複数のレスが並んでて、スレの書き込むメソッドでレスが1つ増えてーみたいな

84 名前:デフォルトの名無しさん [2021/01/12(火) 15:56:33.61 ID:LUlB/OIG.net]
>>4 >>11
. を再定義したいと思った

85 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 17:32:55.18 ID:+0XoTmdG.net]
>>82
初歩的な質問なのですが、クラスってモノじゃなくて概念でも良いのでしょうか
つまり、歩く人のプログラムを作るとき、人というクラスが歩くというメソッドを持っていても良いし、歩くというクラスが一歩進むというメソッドを持っていても良いのでしょうか
言語の仕様上はもちろんどちらでも良いと思いますが、どちらの設計の方が筋が良いということはないと思って良いですか?

86 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 17:34:51.31 ID:fQCYjk84.net]
ナントカ系の関数群みたいに相互に関連し合っているものを
暗黙じゃなく明確化するのがクラスだよ

87 名前:デフォルトの名無しさん [2021/01/12(火) 17:38:10.34 ID:V95G+u6D.net]
>>85
「歩く」をクラスにするよりは「歩ける」をインターフェースにしたらどうかな
人間クラスに「歩ける」インターフェースを実装

88 名前:キることで「歩く」メソッドがあることを保証できる

対象ドメインをどのようにモデル化するかは状況や要件次第
[]
[ここ壊れてます]

89 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 19:05:06.19 ID:mPDSlMxM.net]
メタファとして生き物がよく用いられるけどなんだかなあっていつも思う

90 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 19:50:41.34 ID:YNFRivpW.net]
>>87
「歩け」インターフェースを定義したらインスタンスが歩ける想定であることは自明なのでは…

ちなメソッドは一般にオブジェクトの状態変化を引き起こすブツなので
命令型プログラミングの範疇であり命令形で命名すうるが正しい

※ 個人の感想です



91 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 19:52:42.41 ID:YNFRivpW.net]
しかしインスタンスの生成というプロセスは関数型プログラミングから拝借しており、
命令型と関数型のいいとこ取りしようとして失敗した
classベースのオブジェクト志向は

92 名前:デフォルトの名無しさん [2021/01/12(火) 19:58:16.79 ID:GTfU1r+6.net]
何ベースのが成功なの?

93 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 09:25:15.89 ID:X1FbeZvQ.net]
場合によっては歩くクラスもありだと思うよ。
ゲームで次の行動を一つずつ記憶させたい場合とか。
commandパターン、mementoパターンでググって

94 名前:デフォルトの名無しさん [2021/01/13(水) 09:45:27.73 ID:D0cZCa+j.net]
歩くということは、位置が変化する。
現在位置は人オブジェクトのプロパティなのか?
それでええのか?

95 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 11:14:57.57 ID:XODVGtfI.net]
>>93
良くね?


>>87
インターフェースって継承される前提のものなんですよね?
どのクラスが「歩ける」を継承するんですか?

96 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:34:30.18 ID:QVnLWQ3q.net]
>>85
数値化できるものなら何でもオーケーだ
歩行を数値化するにはN個の関節を持つM本の脚をパラメータとし時間経過ごとの接地点と関節の位置をジェネレータみたいに連続的に返すような設計が考えられる

97 名前:デフォルトの名無しさん [2021/01/13(水) 13:12:01.01 ID:D0cZCa+j.net]
>>94
じゃあ将棋の駒オブジェクトはプロパティとして位置を持っているのか?

98 名前:デフォルトの名無しさん [2021/01/13(水) 14:09:32.74 ID:D0cZCa+j.net]
俺の考えるOOシステムでは、駒オブジェクトは盤面オブジェクトやルールブックオブジェクトへの参照を持っいる。

駒オブジェクトへ前へ3移動とメッセージを送ると、駒オブジェクトはルールブックオブジェクトと盤面オブジェクトを用いて、移動可能であれば盤面オブジェクトへ自身を移動するようメッセージングする。

99 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 15:31:14.00 ID:Dg6tKq+M.net]
intを継承してmyintクラスを作ることは可能ですか?

100 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 15:38:23.35 ID:CyYDkVRJ.net]
システム次第でしょ。
もしも将棋の駒が自律歩行多脚戦車だったら、GPSシステムがすべての位置情報を管理してるなんておかしいし。



101 名前:デフォルトの名無しさん [2021/01/13(水) 15:38:43.61 ID:D0cZCa+j.net]
enum class なら可能。

102 名前:デフォルトの名無しさん [2021/01/13(水) 20:01:32.91 ID:D0cZCa+j.net]
C++はテンプレートがあるので設計の詳細を先送りできる。
その特徴を生かせるように、プッシュ型を流行らせませんか?
プッシュ型は、前提が少ないので、利用者が自由に組み合わせることが出来ます。

これは、インターフェースによって事前に詳細を設計してしまう方式と真逆かもしれないが、組み合わせによって機能を作ることが出来まっする。

103 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 21:14:51.93 ID:XHABqTxh.net]
プッシュ型って何?

104 名前:デフォルトの名無しさん [2021/01/14(木) 06:54:42.42 ID:mrWYZ3Pm.net]
Caper や Bison でプッシュ型を調べてみるとわかると思います。

105 名前:デフォルトの名無しさん [2021/01/14(木) 06:59:25.06 ID:mrWYZ3Pm.net]
あらゆるソフトウェアで使いまわされるライブラリにおいて、詳細が既に決まっているのは不自由なことです。

106 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 07:12:21.89 ID:FFXK54Rt.net]
templateと比べてプッシュ型の利点が分からん。

107 名前:デフォルトの名無しさん [2021/01/14(木) 07:23:48.43 ID:mrWYZ3Pm.net]
>>105
プッシュ型はパーサーでよく使われます。
ユーザーが柔軟性を求めるからです。

Caperはプッシュ型、Bisonはパーサー側が文字を読む方式ですが、オプションとしてプッシュ型を選べます。
パーサにおいてプッシュ型とは、(パーサではなく)パーサを呼び出す側が文字を送り込みます。

それによって何が起きるでしょうか?
従来のパーサーは状態と共に行番号を保存します。
プッシュ型の場合、行番号を保存するのは呼び出し側です。

パーサーが読む文字とは何でしょうか?
プッシュ型において、Cではint、C++ではユニコード。コードポイントです。
文字デコードを行うのは、呼び出し側です。

では従来のパーサでは?
行番号を管理するためには、文字デコードもパーサーの仕事です。
つまりパーサーは大きな塊でアリ、組み合わせる部品ではありません。

108 名前:デフォルトの名無しさん [2021/01/14(木) 07:27:04.63 ID:mrWYZ3Pm.net]
プッシュ型はUNIXに通じるものがありますが、UNIXでは実現されませんでした。

109 名前:デフォルトの名無しさん [2021/01/14(木) 07:47:44.25 ID:mrWYZ3Pm.net]
パーサーは本来、構文解析が仕事です。
しかし、現状多くのパーサーは、構文解析以外の機能を密に結合している。

本来の仕事以外は分離して、小さな部品にすることで再利用性が高まる。
という感じですかね。

これはテンプレートと同じでもろ刃の剣でもあるんですよ。
詳細を設計しないんですから。

しかし、STLの寿命の長さを見て分かる通り、詳細が設計されていないという事は利用者が自由に設計できるという事で、使い出があるんです。

110 名前:デフォルトの名無しさん [2021/01/14(木) 07:48:23.53 ID:mrWYZ3Pm.net]
もちろん、パーサーに限った話ではないですよ。
例です。



111 名前:デフォルトの名無しさん [2021/01/14(木) 09:22:59.17 ID:EIDQMz1r.net]
みんながみんなパーサーを開発する側じゃないからなー
もっと身近な例はないですか?
このようなデザインパターンがプッシュ型だとこうなる、みたいな

112 名前:デフォルトの名無しさん [2021/01/14(木) 09:29:21.76 ID:mrWYZ3Pm.net]
>>110
使う側にとって良いことなんですよ。

それと、プッシュ型は万能ではないんですよ。
一部のコンポーネントの部品化に対して利益があるのです。

113 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 10:01:10.49 ID:mp+NLhBe.net]
>>111
身近な例はないかという問いに対しその回答は意味不明では?

114 名前:デフォルトの名無しさん [2021/01/14(木) 10:15:16.01 ID:mrWYZ3Pm.net]
まあそうですね。
すいませんでした。

115 名前:デフォルトの名無しさん [2021/01/14(木) 10:22:13.84 ID:FFXK54Rt.net]
身近な例で利点があるなら広めるのに協力するのもいいが今の時点で利点が分からん。

116 名前:デフォルトの名無しさん [2021/01/14(木) 15:40:36.18 ID:qrpkNJTC.net]
別にC++だけの問題じゃないんだけど…質問…例えば…エクスプローラのようにファイル一覧出すじゃん…
画像や動画は…サムネイルを出すじゃん…このサムネイルは非同期で更新になるじゃん…
一度開いたら…キャッシュから読み込みたいじゃん…このキャッシュの保存ってさぁ…一意にするのに…
ファイルパス・更新日時・サイズである程度一意になるけど…完璧な一意ではないじゃん…
同じ名前・同じ更新日時・同じサイズで上書きされたら、前の画像がサムネイルに出るじゃん…
どうすんの?

117 名前:デフォルトの名無しさん [2021/01/14(木) 15:42:53.95 ID:qrpkNJTC.net]
キャッシュなんてそんなものだから…それでいいのかなぁ…

118 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 15:53:35.11 ID:mp+NLhBe.net]
その気持ち悪い「...」をやめてくれ

119 名前:デフォルトの名無しさん [2021/01/14(木) 15:55:13.17 ID:EIDQMz1r.net]
ファイルパスと更新日時で一意になると考えていいでしょ
コンテンツが変更されれば更新日時が進むという前提で
それさえも許せないクリティカルなシステムならファイルの全バイト列から衝突率の低いハッシュ作るとかファイル読むのと変わらんことになる
クリティカルなシステムではキャッシュ使わんな

120 名前:デフォルトの名無しさん [2021/01/14(木) 16:05:02.51 ID:qrpkNJTC.net]
なるほど…。



121 名前:はちみつ餃子 mailto:sage [2021/01/14(木) 16:09:33.34 ID:9qLPLWCT.net]
https://martinfowler.com/bliki/TwoHardThings.html
> There are only two hard things in Computer Science: cache invalidation and naming things.

計算機科学においては二つの難しいことがあります。
キャッシュの無効化と名前の付け方です。

122 名前:はちみつ餃子 mailto:sage [2021/01/14(木) 16:16:29.09 ID:9qLPLWCT.net]
ファイルシステムによるけど iノード番号だったり
それに近い管理機構で一意に特定できる場合もあるんじゃないの。
サムネイルくらいなら雑でいいやという割り切りもあると思うけど、
ある程度は不整合がないようにする努力もしてると思う。

123 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 23:16:54.98 ID:9gUF6PTW.net]
特徴的な文体はblogでも見た!

124 名前:デフォルトの名無しさん mailto:sage [2021/01/14(木) 23:49:25.09 ID:9gUF6PTW.net]
スヌープとLRUでおk
この2つでダメだという香具師は、
スヌーピングのロジック設計をサボっているか、
メモリをケチって必要量に未達なだけ

125 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 08:13:56.08 ID:dLwYQ6PK.net]
おはようございますみなさま、質問させてください

ユーザー定義クラスを作成し、循環参照を防止するためweak_ptrをメンバに持たせています。
そして任意の処理でshared_ptrをweak_ptrに代入し使用したいと思っておりました。
しかし、メンバ関数内部でweak_ptrを使用すると、式にはポインタ型が必要です、旨のエラーが出てしまいます。
調べてみたところ、lock()でshared_ptrに再度権利委譲するとshared_ptr側から動くのですが、私が初心者な事もあり何か釈然としません(我が儘でしょうか……)
一度weak_ptrに落とし込んだものを再度shared_ptrに戻す部分が引っかかっているのだと思います(気にしすぎですかね)

そこでお聞きしたいのですが、クラス内部で動的に定めたいと思っているweak_ptrを使う際に、これ以外の方法はありますでしょうか?
それとも上記の通りlock()で一時的なshared_ptrに束縛した方がいいのでしょうか?

朝から長文失礼しました

126 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 08:49:06.94 ID:ld2GCDwz.net]
ロックしないと知らない間に参照先のshared_ptrで持ってるオブジェクトが破壊されてても文句言えないけどそれでもいいの?
weak_ptrってそういうものだぞ

127 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 09:17:41.99 ID:dLwYQ6PK.net]
>>125
ありがとうございます。
おっしゃる通りだと思います。
納得いたしマスター!

128 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 02:35:16.36 ID:y82ZfCrD.net]
移譲って要は継承せずにオブジェクトとして使うってことですよね?
なぜ「移譲」なんてわけわからない名前がついてるんですか?

129 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 04:45:45.04 ID:KGVX5wki.net]
移譲じゃなくて委譲な。
転送でもいいと思うよ

130 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 07:52:05.16 ID:Uy0+fZqK.net]
代理、丸投げ



131 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 09:18:39.64 ID:xem4SJ/U.net]
日本語の問題だけど移譲は同じレベルに権限等を移すこと、委譲は下のレベルに移すことらしい
委譲は継承より権限の制限があるという含みがあるんだと思う
あくまで人間の組織での比喩なんだろうけど

132 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 09:54:48.36 ID:QmODXpTw.net]
名前付けるほどのことか?と問われればたしかにそう思う
クラス内で他のクラスオブジェクトを使ってるだけw

133 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 11:29:25.06 ID:Bl6CuSRR.net]
移譲コンストラクタってC++11まで存在しなかったの?

134 名前:はちみつ餃子 mailto:sage [2021/01/19(火) 11:40:18.61 ID:Zp03eKCw.net]
>>132
はい。 C++11 で導入された機能です。
それまで存在しませんでした。

135 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 16:38:03.96 ID:8JRMUdmW.net]
C++03の頃のプログラミングめちゃくちゃ大変そうだね・・・

136 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 20:00:27.80 ID:rn87bDt4.net]
「オブジェクト指向?じゃあ継承しなきゃ!共通実装はみんな継承でポリモにしろ!」みたいなノリのクソ設計が溢れかえった時期があって
カウンターとして無理に継承せんでもオブジェクト持って使えばええんやでっていう事に名前付けたのが委譲とかコンポジションとか
しょうもないんだけど継承教に対抗するには名前が必要だったんよ

137 名前:はちみつ餃子 mailto:sage [2021/01/19(火) 21:06:03.25 ID:Zp03eKCw.net]
>>134
そのとおりだよ!
前スレで C++11 (以降) に否定的な意見も出てるが、
使える状況であえて C++03 (以前) を選択したがる感覚はわかんね。

138 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 22:52:29.91 ID:Bl6CuSRR.net]
テンプレート使わなければC++03でもいける(かも)

139 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:09:23.44 ID:7+t4BBWY.net]
なんか、ここはどこ私はだあれなやついるなw
なんでテンプレートが出てくるのか

140 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:29:07.70 ID:LToFUUAC.net]
C++03にはテンプレート無いしな



141 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:43:32.07 ID:7+t4BBWY.net]
何を狙ってボケてんのかわからん
解説求む

142 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 19:27:35.22 ID:kPiTytYK.net]
C++スゲー=俺スゲーしたいだけの学生が増えたんだろ

>>134, >>136
エアプ乙
便利にはなったが、メタプログラミングやってても委譲コンストラクタ無くてもそんなに困らんかったぞ
メンバの初期化には関数の戻り値だって使えただろ、どこで困るんだ?

143 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 19:33:42.85 ID:kPiTytYK.net]
あ、委譲コンストラクタが無くても、の話であって03と11がどうこうじゃないよ

144 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 21:35:54.62 ID:UBOdXm83.net]
constメンバの初期化をしたいとき
初期化リストで初期化すれば良いっていやー良いが
コンストラクタ毎に初期化リストを書かねばならない
メドイ…

145 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 21:36:27.27 ID:UBOdXm83.net]
あと参照メンバも…!

146 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 21:47:26.52 ID:MvJ8v0/f.net]
>>141
C++03で何が困るって、<system_error>や<filesystem>や<execution>みたいのがなかったことだよ
新機能を乱発してプログラマを喜ばせるのを慎むというハゲの主張はわかるが
あまりにも保守的すぎて現実から乖離し始めていた

147 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 21:48:56.40 ID:MvJ8v0/f.net]
<valarray>の立場がなくなるから<execution>をためらうとか本末転倒だろうが

148 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 21:57:51.96 ID:kPiTytYK.net]
>>143-144
え、そんな場面滅多に無いと思うが・・・
委譲するときは他のコンストラクタしか初期化子使えないはず・・

と思ったが非constなものは全部コンストラクタ本体で初期化、ならいけるか

149 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 23:00:47.64 ID:UBOdXm83.net]
>>146
同じことをするのに複数のやり方があったらプログラミング言語界のPerlになってしまう
お禿様の気持ちはワカル

150 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 02:42:42.14 ID:/P5UVCOb.net]
まるで Perl はプログラミング言語界の外に居るような言い方ね。



151 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 06:07:35.61 ID:lL8gSm1b.net]
なんだろう、スクリプト言語とかコンパイラ言語とかいうのかね

152 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 07:17:30.26 ID:/ZdL1i9k.net]
厄介者のperl

153 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 07:40:13.27 ID:Z8coO7Zb.net]
perlは遊び道具としては面白いのかもしれないけど本番で使うにはちょっと…

154 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 08:36:52.78 ID:RnFvGHUF.net]
Git for windowsと一緒にインストールされる遊び道具、という世界観ですね。大切にしなさい。

155 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 08:52:53.32 ID:2LdLfW0X.net]
へー、findやopenss

156 名前:lは便利に使ってたけどperlまで入ってたのか。
まぁ、もう使うことはないだろうけど。
[]
[ここ壊れてます]

157 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 09:35:52.84 ID:RnFvGHUF.net]
Perlを厄介と考えるPGのほうがPerlよりも先に厄介払いされる。若いくせに向学心がないことが垣間見える。

158 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 10:09:36.15 ID:rjSQv0Wq.net]
向学心とかw
むしろperl使ったことあるからこその意見だろ

159 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 10:25:31.85 ID:RnFvGHUF.net]
Perlを難しいと思うようだとあまり伸びしろがないね。職業変えたほうがいいかもね。正直でごめんね。

160 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 10:51:23.68 ID:/0jxrBnU.net]
>>155はマジで言ってるのか
10年くらい眠ってたのか?



161 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 11:09:21.23 ID:rjSQv0Wq.net]
最近のモダン(この言い方自体が既に古いがw)な言語使ったことないんじゃね?
あとそれなりの規模の開発したことないんだろうね
perlは書捨てのツール作ったりするには便利だったけど今更新規で使うことはないわ

162 名前:デフォルトの名無しさん [2021/01/21(木) 15:15:36.61 ID:upjC6TmF.net]
Perlの開発者ってタッチタイピングできなかったのかな?
なんであんなに1文字の特殊変数だらけの言語作っちゃったの?キーボード入力が楽になるとか思っちゃったのかな?
結果は可読性の低いクソースコードが量産されただけだったよね

163 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 16:04:26.02 ID:eIfq2EBT.net]
>>160
gnu-makeやshell scriptも同じ。
emacsも、キーバインドを丸覚え出来る人しか使えない。
作者が記憶力が桁違いにいい人だったりしてな。

164 名前:デフォルトの名無しさん [2021/01/21(木) 16:22:10.60 ID:jCImDRpq.net]
>16 :デフォルトの名無しさん:2006/03/10(金) 22:15:19
>>>10
>> こんな変数名があちこちに散らばっているのがPerl
>
>大学の研究室のボスは、特殊変数の表をふ〜んと2分ほど眺めて完全に暗記した。
>
>そういうレベルの人たちのための言語なんだなと思って、トイレで血の涙を流した。

165 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 16:57:53.30 ID:eIfq2EBT.net]
表を見た直後なら、俺も暗記してるぞ。
しばらくたったら忘れる。
短期記憶と長期記憶の違いだ。

166 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 18:03:23.48 ID:ukSw99eK.net]
Perlはglobが使えるようになったらuse strictの下でも参照渡しとかできてC++的に組めるようになるからおk
しかしglobを使うことと理解することは別宇宙の話なのであった

167 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 18:10:26.51 ID:ukSw99eK.net]
正確には型グロブ、

168 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 18:24:32.27 ID:RnFvGHUF.net]
このスレ、初心者多すぎ。丸暗記なんて誰もしないぞ。何のためにオンラインヘルプあると思ってんだろう。
辞書持ち込み禁止に慣れた学生の気分なのかな。

169 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 18:26:55.41 ID:RnFvGHUF.net]
自身の理解力のなさを胡麻化すために大げさな言い回ししているように見える。マジでPGむいてないから転職したほうがいいよ。

170 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 18:30:55.76 ID:RnFvGHUF.net]
>>160 みたいな己の能力のなさを棚に上げておおげさな物言いをする人には調査の仕事を振ることすらできないんだが。



171 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 19:06:10.15 ID:/ZdL1i9k.net]
https://descartes-search.com/media/5-programming-languages-you-wont-use-2030/

Perlファンたちはその堅牢なパフォーマンスとスケーラビリティを主張するが、すでにPythonのような他の言語に代替され始めている。10年後にはその信者の数も減り、永久に消え去ることだろうw

172 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 19:17:51.03 ID:RnFvGHUF.net]
ちょっと

173 名前:したことをやるのに適しているのがスクリプト言語なのに、そのスクリプト言語の初歩にさえつまづいてしまう人はPGに向いてないんだよ。
正直でごめんね。Perlだけの話してるわけじゃないんだわ。
[]
[ここ壊れてます]

174 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 21:03:47.74 ID:ukSw99eK.net]
>>169
Perl 6が出るまで無限に待たされそうな気がするから
バージョン5系の消滅は無限の未来なんじゃないかな…

175 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 21:28:48.83 ID:cjnTDlz3.net]
人って第一印象が重要でしょ。
言語もそうだと思うの。
Perlだけの話をするけど、Perlは第一印象で損してる感じ。
PG経験あれば直感的に避けようとする人も少なくないのでは?

176 名前:はちみつ餃子 mailto:sage [2021/01/21(木) 21:30:02.98 ID:ooF1treM.net]
>>171
Perl 6 は 2015 年に安定板がリリースされたぞ。
ただし、旧来の Perl と互換性は全然ないので後に Raku と改称された。
要するに別言語になってしもうた。

177 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 21:40:40.11 ID:RnFvGHUF.net]
>>172
ドルマークを多用するPerlはシェルスクリプトに慣れた人にはむしろ入りやすいはずだけどね。

178 名前:デフォルトの名無しさん [2021/01/21(木) 21:46:06.32 ID:6tk1Snw3.net]
あわしろ氏はJavaはオワコンこれからはPerlと言ってるけどな。

179 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:21:06.42 ID:rjSQv0Wq.net]
なんでこの人自分以外はperl使えない前提なんだろ…

180 名前:デフォルトの名無しさん [2021/01/21(木) 22:23:21.95 ID:RnFvGHUF.net]
知っている人も多いと思うけど、bash/zsh向けに便利な入力補完ツール fzf が存在する。
そのGitHubにはfzfにPerlを併用するサンプルコードが散見される。
https://github.com/junegunn/fzf/wiki/Examples

今やPerlは、sedやawkより多機能なちょっとしたテキスト改変ツールとして、Perl本来の役割に回帰している。
PerlをCGIを書くための言語と思っている人にはPerlがオワコンに見えるかもしれないが、現実は違う。



181 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:35:21.87 ID:RnFvGHUF.net]
python3が入っていない環境はわりとあるけどperlが入っていない環境はまずない。

182 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:35:36.69 ID:Z9MWAls1.net]
なんでC++スレでPerl, Perlと連呼するんだろう
おおかた、その心理を察することができるので草生えるwww

183 名前:デフォルトの名無しさん [2021/01/21(木) 22:41:15.38 ID:RnFvGHUF.net]
本スレテーマであるC++やJavaなどのコンパイル言語のコーディングの生産性を高めるにはスクリプト言語の有効活用が欠かせない。
makeやantではかゆい所に手が届かないもどかしさは今も昔も同じなんだよ。

184 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:54:28.47 ID:H50jUx0j.net]
>>168
Perl狂信者かよ

185 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 22:59:11.40 ID:/ZdL1i9k.net]
うかつにもPerl厨の秘口を突いてしまった

186 名前:デフォルトの名無しさん mailto:sage [2021/01/21(木) 23:06:26.51 ID:rjSQv0Wq.net]
>>177
> PerlをCGIを書くための言語
いつの時代の人よw

187 名前:デフォルトの名無しさん [2021/01/22(金) 00:49:01.09 ID:di1fs6eX.net]
たしかルビーの素となった言語がペールでは?

188 名前:デフォルトの名無しさん [2021/01/22(金) 01:19:07.37 ID:55qwSi9o.net]
macOSのソフトウェア更新ツールHomebrewはRuby製。マカーがいる限りRubyは不滅。

189 名前:デフォルトの名無しさん [2021/01/22(金) 13:19:25.84 ID:pJ+Dy7HC.net]
>>157
PerlもPHPも難しいとは思わないけど
だからこそ排除すべき

190 名前:デフォルトの名無しさん [2021/01/22(金) 13:20:41.30 ID:pJ+Dy7HC.net]
>>160
>1文字の特殊変数だらけの言語

Rubyのことですね判ります



191 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 14:12:04.30 ID:aLDuncuZ.net]
>>187
Rubyはそれはない。
Perlと間違ってないか?

192 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 14:18:28.68 ID:WLGQ46hZ.net]
C++のところで延々と続けるのもなんだけど、TECOってのは相当複雑怪奇だったみたいね

193 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 22:15:36.76 ID:HHqI ]
[ここ壊れてます]

194 名前:RAh/.net mailto: C++が今後関数型プログラミングを言語としてサポートしていくことはありますか? []
[ここ壊れてます]

195 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 22:18:18.81 ID:3W/g7okM.net]
<functinal>で足りるんじゃね?

196 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 22:50:10.68 ID:LtnZZu+T.net]
こちらでどうぞ
https://mevius.5ch.net/test/read.cgi/tech/1427572389/

197 名前:デフォルトの名無しさん mailto:sage [2021/01/22(金) 23:49:36.96 ID:LcAiXyQN.net]
>>192
C++の「マルチパラダイム」の中に関数型が今後入ることはあるか (あるいはもう入ってるか) という質問なんですが、変なことを聞いていますか?

198 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 00:00:03.65 ID:rMuiLyZn.net]
ぅえ?

199 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 01:38:03.71 ID:PXGkLjAZ.net]
もう入ってるでしょ?

200 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 04:37:52.61 ID:Vx6mcd5N.net]
Perlのソース汚いイメージしかないけどな



201 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 07:19:17.61 ID:E7+6hgZm.net]
std::functionとラムダ式で関数はほぼ第一級オブジェクトとして扱えるからC++はとっくに関数型言語ですよ
モナドだってやろうと思えば作れるよ

202 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 13:50:31.25 ID:1/fAmr9E.net]
じゃーHaskellにできることはC++でもできるし、同じように書けるって言うのかい

203 名前:はちみつ餃子 mailto:sage [2021/01/23(土) 13:52:40.96 ID:Q+Wu8A2P.net]
>>198
なんでそうなるのかようわからんが。

204 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 14:06:29.89 ID:pKYkJfCY.net]
>>160
>1文字の特殊変数だらけの言語
APL記号?

205 名前:はちみつ餃子 mailto:sage [2021/01/23(土) 14:54:28.68 ID:Q+Wu8A2P.net]
>>188
https://docs.ruby-lang.org/ja/latest/class/Kernel.html#V_--21

206 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 16:26:10.57 ID:LPDMRZtK.net]
>>200
懐かしいな
俺アンペールのいじってたよ

207 名前:デフォルトの名無しさん mailto:sage [2021/01/23(土) 18:58:05.34 ID:C4WlxIYr.net]
>>198
そんなクソみたいなこと言うんだったら、まず「関数型言語」の定義から言えよ。
Lispが関数型言語じゃないとか言い始めそうだな。

208 名前:デフォルトの名無しさん [2021/01/24(日) 11:36:54.35 ID:wSlEv8S7.net]
Rubyは関数型ωωω

209 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 12:17:53.22 ID:/MPXRGah.net]
カオスコードって意味ならc++とperlが双璧だわな。rubyは別の意味で糞だが。

210 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 14:46:51.42 ID:bXJjYU1w.net]
rubyの糞とrailsの糞がかけ合わさって悪臭漂う糞になる



211 名前:デフォルトの名無しさん [2021/01/24(日) 21:13:47.08 ID:hPeuQsPP.net]
肛門を保護するために出る粘液はイイ匂いがするので、化学的に類似品が合成され、香水の原料になっています。
ウンコは臭いですが、ウンコの周りには良いものがあるかもしれない。

212 名前:デフォルトの名無しさん mailto:sage [2021/01/24(日) 23:17:47.88 ID:bXJjYU1w.net]
Co-mon++

213 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 00:51:35.02 ID:h/LmkNzq.net]
>>207
腸液は質感、匂いともに精液に酷似してるっていうのはよく言われてるけど、それのことじゃないよね?
良い匂いの分泌液なんて聞いたことがない

214 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 09:53:48.54 ID:RU5Fvovq.net]
やだこのスレホモ臭い

215 名前:デフォルトの名無しさん [2021/01/25(月) 10:13:42.80 ID:uSgkqdKl.net]
と言いつつ嬉しそうな吉宗であった。

216 名前:デフォルトの名無しさん [2021/01/25(月) 13:06:55.63 ID:sPc2eBUP.net]
PerlとC++は、見づらいソースコードに慣れる能力を鍛えてくれる。
Perlをオワコン扱いする人は情弱である。

217 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 13:11:37.73 ID:54hHF458.net]
厄介者のperl厨

218 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 13:34:11.10 ID:lM5Uli0g.net]
糞コードに触れるとアンチパターンがわかるというのは確かにあるが、それを人に勧めるのは気がひける。

219 名前:デフォルトの名無しさん [2021/01/25(月) 13:48:32.46 ID:sPc2eBUP.net]
まずい酒の味を知らない者には、うまい酒の味を見分けることはできない。

220 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 21:12:20.67 ID:bQwFUjl3.net]
美味い酒の味を知ったら不味い酒は飲めん



221 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 22 ]
[ここ壊れてます]

222 名前::13:56.33 ID:IR169uBT.net mailto: 酒は飲まんからようわからん []
[ここ壊れてます]

223 名前:デフォルトの名無しさん [2021/01/25(月) 22:56:10.85 ID:sPc2eBUP.net]
まずい酒を飲めなくなることは、プログラミングに置きかえればクソコードのメンテナンスができなくなることを意味しており、スキル低下でしかない。

224 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 23:11:18.97 ID:bBvI6B4m.net]
まずい酒はわかるけどうまい酒はマジわからん…

225 名前:デフォルトの名無しさん [2021/01/25(月) 23:57:21.75 ID:sPc2eBUP.net]
うまい酒については「水のように飲みやすい」というほめ表現もあるが、なら水飲んどけよという話でもある。

226 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 23:57:36.36 ID:t4dFVxvz.net]
<body>
!unti {nuritakuri}
<body/>

227 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 00:02:06.39 ID:Qnn6Y+tc.net]
<head>
<bukkake> seisi <bukkake/>
<strong> naaaaaaaaa!!!<strong/>
<head/>

228 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 02:05:34.14 ID:wg8lZWjJ.net]
>>220
ほんまこれ
前にカエルの肉を食ったやつが「ほんと鶏肉とおんなじようなもんだから!食べてみて!」
ってしつこいんだが、だったら鶏肉でいいだろなんでわざわざゲテモノ食わにゃならんのか??となる

229 名前:デフォルトの名無しさん [2021/01/26(火) 03:51:19.13 ID:uiGtA95I.net]
寄生虫が良い風味出すから。

230 名前:デフォルトの名無しさん [2021/01/26(火) 06:09:38.08 ID:ZRZozNwf.net]
macOSのHomebrewいいね。Perlが最新の5.32.1に即対応。人柱上等なところに惚れる。



231 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 07:49:52.25 ID:ZI8ZD6Xl.net]
安めの食材や有り合わせでうまいもん作れる腕があっても
腐ったものはどうにもできない

例えるなら、これだろ

232 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 07:59:37.62 ID:xVPuSdRM.net]
>>220
酔える水なら。

233 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 11:52:17.15 ID:XuLptVzr.net]
>>223
今ジビエなどとおしゃれに言ってるがゲテモノ食いが今の事態を招いてる

中途半端な科学信仰が何もかも迷信にしてしまって自然を正しく畏れなくなった

234 名前:デフォルトの名無しさん [2021/01/26(火) 13:45:24.16 ID:uiGtA95I.net]
ちょっと腐ったほうが柔らかくなってアミノ酸も多いよ。
熟成させたと言えばグルメも安心だし。

235 名前:デフォルトの名無しさん [2021/01/26(火) 13:48:13.24 ID:uiGtA95I.net]
野菜は立てておくと腐らないんだけど、その代わり成長するからね。
光合成できるかも?と思ってなけなしの養分使って葉を伸ばすんだろうけど、光合成は出来ません。

236 名前:デフォルトの名無しさん [2021/01/26(火) 13:54:11.58 ID:uiGtA95I.net]
野菜の活〆を発明したら儲かるだろな。
放射線以外で。

237 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 21:06:31.25 ID:Du8Hqhh0.net]
いいかげんスレ違い。

238 名前:デフォルトの名無しさん [2021/01/26(火) 21:46:24.92 ID:ZRZozNwf.net]
プリプロセッサマクロだらけの“汚い”コードを否定したらC/C++の強みを失うことになる。
JavaやC#はプリプロセッサマクロが貧弱なのが玉にキズだ。

239 名前:デフォルトの名無しさん mailto:sage [2021/01/26(火) 21:51:10.66 ID:ZRZozNwf.net]
pybind11スレがないこんな世の中じゃ〜Python〜
まぁマクロの塊のような代物だが。

240 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 06:03:44.65 ID:yQalyIAE.net]
C++はコミュニティで発言力のある人が大抵率直にものを言い過ぎる、悪く言えば口が悪いので忌み嫌われてるとこある



241 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 07:30:48.85 ID:eLUquqZ0.net]
>>229
カダベリンやムスカリンが発生してたり
セレウス菌が大量にいるのは
そういう問題じゃねえぜ

242 名前:デフォルトの名無しさん [2021/01/27(水) 07:48:28.28 ID:4l9V085Z.net]
でも、Linux板なんか失敗したボランティアの住所載せて、放火しろとは言ってませんよ??言ってませんよ??・・・などの書き込みあるからな。
それに比べれはだいぶ良識的では?

243 名前:デフォルトの名無しさん [2021/01/27(水) 11:26:52.94 ID:cJSBZXf9.net]
C/C++のプリプロセッサも貧弱すぎ

244 名前:デフォルトの名無しさん [2021/01/27(水) 17:43:27.13 ID:nPuTGnvU.net]
C++例外のスタック情報がとれないのはC++の欠点。
例外でスタック情報を使えるJava/C#/Python/Perlはエライ。

245 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 21:51:38.91 ID:NT655YPf.net]
おまえは二度とC++使うな

246 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 23:04:53.57 ID:TqcnYSNG.net]
>>239
スタックフレーム作ればイケるってば

247 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 09:07:27.76 ID:dmDIUcy2.net]
>>235
例えば誰?

248 名前:はちみつ餃子 mailto:sage [2021/01/28(木) 10:23:46.51 ID:vBYpvnJx.net]
>>239
gdb にアタッチしたことないんか?

C++23 には stacktrace が入るから
デバッガを使いこなせなくても少し楽にトレースできるかもな。

249 名前:デフォルトの名無しさん [2021/01/28(木) 10:52:39.05 ID:dNWrUHbO.net]
>>223
フグは豚肉に触感似てるけどフグの方が美味い

250 名前:デフォルトの名無しさん [2021/01/28(木) 10:54:00.53 ID:dNWrUHbO.net]
>>228
日本で感染爆発が起きてないのは以前からジビエが流行してたからか



251 名前:デフォルトの名無しさん [2021/01/28(木) 10:55:14.42 ID:dNWrUHbO.net]
>>230-231
白菜は外の皮じゃなくて中の芯から先に食べろと言われている

252 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 11:40:01.79 ID:eLxqvNeX.net]
>>200
ユニコ時代だからAPLよりずっと先行ってるぞ
組み込み演算子で∩∉とか集合論の記号採用してたりアトミックな演算子は⚛++とか洒落効いてたりする
一方で古代perlのプレフィックスは緩和されてる

253 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 11:51:37.25 ID:eLxqvNeX.net]
∅∘∩ ⊍∪ ⊖ ⊎ ∖≅ ∈ ∉ ∋ ∌ ≡
≢ ⊂ ⊄ ⊃ ⊅ ⊆ ⊈ ⊇ ⊉ ≼ ≽.«»≠␤
他組み込みではこんな感じか
>= やらよりmずっと可読性高いと思う、エディタもvimとか高機能なのなら問題なかろう
␤文字を表示してくれるのは特に便利

254 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 11:58:59.45 ID:kskG1wa2.net]
>>245
さすがにコウモリはどこの地方でも食わんだろ

255 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 17:23:15.04 ID:8Al9oSyF.net]
なんでプリミティブ型って継承できんの?

256 名前:はちみつ餃子 mailto:sage [2021/01/28(木) 17:29:22.44 ID:vBYpvnJx.net]
>>250
やりたいときってあるか?

257 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 17:41:41.73 ID:GsoT0xyU.net]
クラスAのオブジェクトをクラスBのメンバにするときってどうやってAのコンストラクタ呼ぶの?

class B{
 A a;

public:
 B(){
  // この辺でAのコンストラクタを呼びたい
 }
};

258 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 17:48:00.82 ID:WrE+/6so.net]
>>252
メンバのコンストラクタの方が先に呼ばれる。だからそこでは既にAは構築済み。
どうしてもBのコンストラクタ内でAのコンストラクタ呼びたいなら、メンバ変数はポインタで持つ

259 名前:デフォルトの名無しさん [2021/01/28(木) 18:07:20.07 ID:IHrlZHr2.net]
>>243
gdbはおいとくとして、Visual StudioってC++例外のスロー位置を追跡できたっけ?

260 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 18:50:38.47 ID:Hqj+H5f7.net]
>>252
初期化リストを使う
B() : a(hoge, piyo)



261 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 18:54:30.61 ID:IHrlZHr2.net]
あとで再初期化したくなること多いから、結局コンストラクタの実装を別の関数に分離すること多いよね。
コンストラクタの種類が増えたら使いまわしたくなるし。

262 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 19:24:37.48 ID:q3mIN91/.net]
>>243
デバッガ使いこなせないとか話にならんだろ・・

263 名前:デフォルトの名無しさん [2021/01/28(木) 19:28:49.13 ID:IHrlZHr2.net]


264 名前:デバッガやシンボルがない環境でもスタックトレースできたほうが良いと思うけどね。
後発言語の生産性の高さはこの辺の充実ぶりにあるでしょ。
[]
[ここ壊れてます]

265 名前:デフォルトの名無しさん [2021/01/28(木) 19:42:24.27 ID:IHrlZHr2.net]
他プロセスと連携するシステムにはデバッガを当てにくい事が多い。
タイミング依存の不具合を追跡する場合、デバッガがまったく役に立たない。

266 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 20:25:47.81 ID:eBfsAdOM.net]
>>258
その手の生産性と成果物の効率はトレードオフでどっちを重視するかが違うだけでしょ

267 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 20:36:13.14 ID:IHrlZHr2.net]
デバッガ使いこなすとか言って悦に入ってる人と会話が噛み合わないんだが。

268 名前:デフォルトの名無しさん [2021/01/28(木) 20:36:14.66 ID:yp+dwtvR.net]
>>258
だよね
むしろデバッガをアタッチできる環境ならスタックトレースはなくてもなんとかなる
ユーザー環境でスタックトレースがテキストファイルに落ちるようになってるとトラブルシューティングがしやすい

269 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 21:29:31.41 ID:oPlwADge.net]
>>261
ここほとんどアマチュアの人だから許してやろうやw

270 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 21:48:11.74 ID:q3mIN91/.net]
>>261, >>263
悪いがプロだよ
IDEの機能を使いこなせてない初心者が、先に学ぶべきことから逃げて言語だけでどうにかさせようとするような
(いつものことだが)はちみつのミスリードに釘を刺しただけだ



271 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 21:51:13.66 ID:q3mIN91/.net]
>>261
あと、流れを読む限り俺の発言が気に入らなくてファビョってるのは君の方だよね、俺1行しか書いてなかったし(しかも大した内容じゃない)w
何が気に障ったんだ?

272 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 21:51:23.69 ID:oPlwADge.net]
いやごめん、俺は流れは一切追ってなくて他意はないよ
茶化したかっただけ
気にしないで

273 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 23:50:09.41 ID:g6qVZG7L.net]
発狂やないかw
Perlの人かな

274 名前:デフォルトの名無しさん mailto:sage [2021/01/28(木) 23:53:15.94 ID:RfcrpqT0.net]
>>253,255
じゃあ、Bを構築してしばらく経ってからわかる情報を使ってAを構築したいとき、Aのインスタンスをメンバとして持つのは不可能ということですか?
ポインタで持つ以外の方法はない (想定されてない?) のでしょうか

constなメンバ変数を初期化するときも近いことを思います

275 名前:デフォルトの名無しさん [2021/01/29(金) 00:10:27.15 ID:ZIYbfTXe.net]
>>268
そういうコンストラクタ制約を持つクラスはけっこう多い。
WindowsのC++向けGDI+ライブラリのクラス群はまさにこれが当てはまる。
広範に存在している以上は受け入れるしかない。
今時は標準でshared_ptrなどの共有ポインタクラスを使えるので、さほど問題にならないでしょ。

276 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 00:19:48.35 ID:SRnp44iw.net]
>>268
Aに引数なしのコンストラクタ、コピーorムーブ代入演算子があるなら、後で作って代入でもいいけど
まぁ特に理由なければ(スマート)ポインタで持った方が無難だし楽

constはどうしようもない

277 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 00:22:16.89 ID:MWSZTtHp.net]
>>268
「Bを構築してしばらく経ってからわかる情報」を返すヘルパー関数を作って初期化リストの中で呼べばいいじゃない

278 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 07:49:13.10 ID:/axUqcOX.net]
データメンバをconstってあんまりやらないな
publicに晒すとかじゃなきゃメンバ関数を
constにするだけで足りるから

あ、staticメンバのconstはよくやるけどね

279 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 08:02:53.38 ID:1V7SRlCX.net]
>>251
ある
実装は同じunsigned longでも意味が違うから別クラスとして扱いたいときとか
private継承できたらナア……
現状(C++03)はプリミティブ型と同じ演算子(のうちの当座のアプリケーションで使うやつ)をいちいち実装したクラスを作って
NDEBUGマクロで実装を切り替えるみたいな涙ぐましい努力が要る

280 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 08:05:13.74 ID:1V7SRlCX.net]
訂正orz
誤: private継承
正: public継承かつoperator unsigned long()はprivateかつunsigned longからの構築はexplicit



281 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 08:08:37.91 ID:1V7SRlCX.net]
メンバをconstにして代入演算子を定義せずにいるとデフォルトの代入演算子をが定義できないとコンパイラに文句を言われる俺環、

282 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 09:20:50.39 ID:koPyq8om.net]
>>273
それ、継承できたとして式の中で混在しても区別されないんじゃね?
テンプレートの型引数で区別するような使い方くらいしか思いつかないが。

283 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 12:20:22.74 ID:c2S2Mocm.net]
メンバ変数のconstはポインタ型ならすることあるけど、値で持つメンバ変数はあんまり意味なくない?
constなくても勝手に外部から書き換えられないように、ちゃんと隠蔽しとけばいいだけでしょ

284 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 12:35:16.78 ID:2DekME/2.net]
>>277
class内の処理においても変更しないつもりだ、変更されることはない、と明示することで意識しておかなければならないことを少し軽減できるのだから、無駄ではないと思う。
手間をかけずにconstにできるならしておけばいいし、逆に無理して複雑なことをしてまでconstにする必要はないという程度のことかと思う。

285 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 12:55:03.34 ID:c2S2Mocm.net]
>>278
たしかにconst付いてればコンストラクタで設定した値がずっと変わらないことが
明示的になるから無意味ではないか

286 名前:はちみつ餃子 mailto:sage [2021/01/29(金) 14:10:30.45 ID:heeNhc25.net]
>>273
そういう用途なら opaque alias という提案だけは出てるけど
どう見てもグダグダなんで、場当たり的な方法のほうがマシだと思うよ。

287 名前:デフォルトの名無しさん [2021/01/29(金) 16:04:20.47 ID:5pIDnM+S.net]
>>251
3値のboolean作るときってboolean継承すべき?

288 名前:デフォルトの名無しさん [2021/01/29(金) 16:07:44.73 ID:5pIDnM+S.net]
>>256
言いたいことは判るが
コピーコンストラクタやムーブコンストラクタが勝手に使われるから
デフォルトに任せてると何が起こるかは判ってた方が良い

289 名前:デフォルトの名無しさん [2021/01/29(金) 16:10:21.66 ID:5pIDnM+S.net]
>>259
COMサーバーというかDX用にフィルタ書いてると訳判らなくなった

290 名前:デフォルトの名無しさん [2021/01/29(金) 16:56:37.48 ID:RxAp4EkX.net]
>>281
3値のbooleanを作って何するの?
boolへのポインタにしてtrue / false / nullptr の3値でなんとかならんか?



291 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 17:20:59.69 ID:ADFs+h5F.net]
boostにtriboolってのがあるな

292 名前:はちみつ餃子 mailto:sage [2021/01/29(金) 17:23:22.91 ID:t7wU8l8M.net]
>>281
仮に真偽値型を継承可能であったとして、三値型が真偽値型を継承するのはおかしいだろう。
場合によって柔軟な判断が必要な場合はあるものの、
継承は is-a 関係を表したいときに限ったほうがよろしいというのが一般的な設計原則だと思うが。

293 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 17:25:47.23 ID:GtDK4kd8.net]
nullableか、DBのフィールド値?

294 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 18:57:54.24 ID:ZIYbfTXe.net]
はちみつ餃子「スタックトレースできないならデバッガ当てればいいじゃない」

295 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 19:41:08.91 ID:rAmh2V0K.net]
典型的な円楕円問題だな

296 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 19:56:26.71 ID:ZIYbfTXe.net]
テンプレートを使えば、クラス継承に依存しない記述が可能。
iostreamが黒歴史扱いである現実を踏まえての話。

297 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 21:24:08.77 ID:WFMo+mcm.net]
とりあえずiostream批判しとけば訳知り顔ができた気に浸れる浅はかなやつ

298 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 21:35:39.96 ID:nnAlz0gZ.net]
c++ニワカあるあるだよなw
iostreamとりあえず批判奴w

299 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 21:39:11.47 ID:ZIYbfTXe.net]
iostreamは使いもしないメンバ変数を継承することを強要される悪い手本でしょ。

300 名前:デフォルトの名無しさん mailto:sage [2021/01/29(金) 22:16:38.63 ID:WFMo+mcm.net]
何も説得力を示さずに突然「悪い」と言い出す



301 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 01:56:51.26 ID:SJAC6oP5.net]
iostreamはクソなのは正解だが別に批判するようなことでもない
なぜなら使わなければいいだけの話だからだ

302 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 02:06:50.03 ID:OHt9F1SU.net]
無理にクラス継承を使わずオーバーライド関数とそれを使うテンプレート関数を充実させたほうが幸せになれる。

303 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 02:41:04.49 ID:PJvUkb6d.net]
別に無理して継承を使っているわけではない
どっかの馬の骨が気に入らんからといって
あれを使うなこれを使うなと言われるほうが無理そのものだ

304 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 02:53:37.72 ID:OHt9F1SU.net]
例えば、ファイルに書き込む処理があったとする。
ファイルハンドルとして有名な型としては、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");
}

305 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 03:53:39.52 ID:ULcRPxme.net]
ドヤってるところすまんがそれオーバーライドじゃない

306 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 04:01:05.04 ID:PJvUkb6d.net]
プゲラ

307 名前:デフォルトの名無しさん [2021/01/30(土) 05:45:11.84 ID:SLqQC90z.net]
フリー関数とクラスメンバでは、インテリセンスが効くか効かないかの違いもある。

308 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 05:52:17.44 ID:OHt9F1SU.net]
そんなあなたに名前空間

309 名前:デフォルトの名無しさん [2021/01/30(土) 06:06:53.60 ID:SLqQC90z.net]
クラスの場合、名前空間を書かなくても、インテリセンスが効く。

310 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 06:47:43.00 ID:budoESfZ.net]
コンストラクタの初期化リストで
class A{
 int x;

public:
 A(int x) : x(x) {}
};
みたいにしたとき、ちゃんとメンバのxがコンストラクタの引数のxで初期化されますよね?
メンバの x と同名の引数の x が同一のスコープに同居しているようで紛らわしいかなと思ったのですが、こういう書き方を避ける慣習はありますか



311 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 07:04:07.72 ID:ULcRPxme.net]
自分は普通にその書き方してる
避ける人も居るっぽいけど好きなようにすればいい

312 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 09:09:49.20 ID:PHKUCpSE.net]
iostreamマンセーバカってのは型安全ならどんな仕様でも良いと思ってるカスが多いからな。
型安全は評価する一項目に過ぎないってのに。

313 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 09:29:38.23 ID:vDjChjwr.net]
iostreamは整形のための情報をわざわざ状態として持たされるのがクソ
当時は状態が邪悪だっていう考え方が一般的じゃなかったからしょうがないけど

314 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 09:38:20.91 ID:2pTx0la6.net]
でも状態もってなかったら記述が煩雑になりすぎない?
HTMLのマークアップとまでは言わんまでも

315 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 09:59:20.80 ID:OHt9F1SU.net]
整形設定を記憶する変数インスタンスをiostreamインスタンスと分離すべきって話でしょ。
必要に応じて差し替えできるように参照渡しするか、逆にiostreamを参照渡しするとか色々やれたはず。

316 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 10:06:40.70 ID:OHt9F1SU.net]
というか他のオブジェクト指向言語だと整形情報がFormatterクラスとかに分離されているのが普通だし。

317 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 10:32:05.24 ID:PJvUkb6d.net]
FORTRANのFORMAT文が好きな人をどうこうしようとは思わない

318 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 10:40:52.47 ID:hVJYorL3.net]
初歩的な質問なのですが、stringクラスの内部バッファはデストラクタで破棄されるため自分では一切管理しなくていいという認識で良いのでしょうか?

319 名前:デフォルトの名無しさん [2021/01/30(土) 11:17:24.76 ID:SLqQC90z.net]
アロケータによるけど、普通は管理しなくて良いのでは?

320 名前:デフォルトの名無しさん [2021/01/30(土) 12:47:13.80 ID:EWZvTk3z.net]
>>308
状態持ってても無駄に煩雑(複雑ではない)



321 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 12:57:10.51 ID:8FYOnD7D.net]
iostream 型安全なのはいいけど、char/signed char/unsigned char ぜんぶ文字扱いするのはやめて欲しかった。

322 名前:デフォルトの名無しさん [2021/01/30(土) 13:18:35.30 ID:SLqQC90z.net]
単項プラスで。

323 名前:はちみつ餃子 mailto:sage [2021/01/30(土) 13:18:38.04 ID:4OMKN/Z4.net]
>>309
入出力を直接的に司るバッファクラス (basic_streambuf) と
書式制御を司るストリームクラスを分離したデザインになっているし、
必要に応じて差し替えることも出来るよ。

iostream においてそれがわかりやすいか、良いデザインであるかは別として、
ちゃんと分離したデザインになってる。

324 名前: mailto:sage [2021/01/30(土) 14:53:52.50 ID:L1O2TNoD.net]
>>304
私は馬鹿なのでメンバ変数とコンストラクタ引数を x, _x というふうに書き分けています、馬鹿が感染るかもしれないのでお勧めはしません

325 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 15:08:20.24 ID:S5wIZr5N.net]
C++でのメンバ変数は、標準的には m_xと書く。

326 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 16:04:40.96 ID:0ahE8ZR3.net]
>>319
何処信者だよ
ダッサw

327 名前:デフォルトの名無しさん [2021/01/30(土) 16:41:05.48 ID:SLqQC90z.net]
MicrosoftとAdobeがその書き方多いですね。

328 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 17:13:12.28 ID:S5wIZr5N.net]
なお、_x は、命名規約上、禁止。先頭が _ の名前はコンパイラなどの
システム予約なため。

329 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 17:14:26.98 ID:2r/QlSUC.net]
そうだったっけ?

330 名前:はちみつ餃子 mailto:sage [2021/01/30(土) 17:19:55.79 ID:4OMKN/Z4.net]
>>304
>>318-319
命名規約の方法論は色々なのでプレフィクスを付けるルールが定めてある場合もあるし、
むしろ一致させていくようにしているものもある。
私自身は、少なくともメンバに値を設定するだけの単純なコンストラクタである場合には
名前を一致させていくスタイルで書く。

C++ を使う上でのガイドラインとしてよく参照されているのはグーグルのスタイルガイドで、
データメンバの名前は最後にアンダースコアを付けるようにルールを定めている。
https://google.github.io/styleguide/cppguide.html#Variable_Names

その一方では C++ の設計者である Stroustrup は型やスコープを変数名に含めるのは好ましくない
(しかし部分的に便利な場合もあることは認めている) と書いている。
https://stroustrup.com/bs_faq2.html#Hungarian

どちらの習慣が圧倒的優勢ということはないと思う。

>>322
グローバル変数としてはアンダースコアで始まる名前は予約されているけど、
そうでない場合には問題ない。

ただし、

・ アンダースコアで始まって大文字が続く名前
・ アンダースコアが連続 (名前の先頭部分以外でも) する名前

は名前の種類やスコープにかかわらずどこでも予約されている。



331 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 17:30:01.20 ID:2r/QlSUC.net]
互いの信仰を侵害してはならないがチーム内では統一されている必要がある
規約の背景は明確である必要がある

332 名前:デフォルトの名無しさん [2021/01/30(土) 18:08:50.99 ID:OHt9F1SU.net]
>>317
まず、FILE*とostreamが一対一対応していないのがダメ。
せっかくC言語でファイル、パイプ、標準IOがFILE*型としてで統合化・抽象化されていたのに、
C++でostreamとfstreamで分離される劣化が起きた。

333 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 18:30:25.89 ID:PJvUkb6d.net]
ios_baseで統一する形に変わっただけ
それをFILE*がどうたらと駄々こねるのは
頭が堅すぎる実年齢に無関係の老害だ

334 名前:デフォルトの名無しさん [2021/01/30(土) 18:36:35.02 ID:OHt9F1SU.net]
パイプ処理をostream系で書く奇特な人ってどのくらいいるの?

335 名前:デフォルトの名無しさん [2021/01/30(土) 18:41:09.24 ID:OHt9F1SU.net]
pythonは定数がないから全部大文字の変数は定数のようにみなしましょう的な談合がある。

336 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 19:00:34.72 ID:0ahE8ZR3.net]
定数というか型もない

337 名前: mailto:sage [2021/01/30(土) 19:09:23.04 ID:L1O2TNoD.net]
>>322
束縛領域が狭いローカル変数とかには、_x を使ってもいいのではないか?と考えていますが‥‥

338 名前:デフォルトの名無しさん mailto:sage [2021/01/30(土) 20:32:34.21 ID:PJvUkb6d.net]
data_
size_

339 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 03:18:57.87 ID:6QCY/vGM.net]
>>331
実は#defineマクロの中で使われるケースがあってね。
_xが、アプリの中で使われてない事を前提にしないとマクロが作れない
場合とか。

340 名前:デフォルトの名無しさん [2021/01/31(日) 06:52:18.40 ID:gXTMTlGe.net]
HTTPサーバーのサンプルで、関数型言語がCを凌駕して、C実装の作者が??になってるやり取りをどこかで見たのですが、わかる方いらっしゃいませんか?

おそらくC++は簡単に勝てるはずなんですが。



341 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 07:27:56.74 ID:fCVb5Gn/.net]
dmrが?

342 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 09:14:46.77 ID:bSEeGU13.net]
>>333
c++実装者がユーザから参照可能な形でそれやってるの見たことあるの?

343 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 09:22:03.74 ID:fCVb5Gn/.net]
>>333
#define A(_x) (std::cout << #_x)

int main()
{
int _x = 5;
A(_x);
std::cout << _x;
}
何か問題でも?

344 名前:デフォルトの名無しさん [2021/01/31(日) 10:19:42.43 ID:BqL9JwJS.net]
ひどいな
https://qiita.com/threecups/items/75a4b9ca1298270c5c62

345 名前:デフォルトの名無しさん [2021/01/31(日) 10:23:16.43 ID:BqL9JwJS.net]
>>331
_で始めると激しくコンパイラ依存になる

346 名前:デフォルトの名無しさん [2021/01/31(日) 10:50:22.50 ID:BqL9JwJS.net]
>>334
Erlang?

347 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 10:57:57.30 ID:+XHxoAeu.net]
>>339
繰り返すが言語仕様上はグローバル変数ではない名前の頭がアンダースコアで始まるだけなら問題ない。

現実に出来が悪いコンパイラがたくさんあるのであれば仕方がないが、
少なくとも俺はそんなのに遭遇したことはない。

348 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 11:04:21.78 ID:fCVb5Gn/.net]
>>338
DLLのビルドに使ったコンパイラと
そのDLLを使うアプリをビルドするコンパイラが違っても動くんだぞ
ABIの指定は仕方ねえだろ

349 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 11:29:10.73 ID:2WBeknRq.net]
>>334
これか?
サーバーじゃなくてパーサー部分だけだけど
https://blog.8arrow.org/entry/2014/10/23/063044

350 名前:デフォルトの名無しさん [2021/01/31(日) 12:10:02.04 ID:gXTMTlGe.net]
>>343
それです。
ありがとうございます。



351 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 13:12:26.22 ID:ZnRwde8F.net]
>>341
英語サイトでも、説明の仕方が誤解を招くようなものがありまして、もしかしたらそれは誤解かも知れません。
https://stackoverflow.com/questions/25090635/use-and-in-c-programs
「Here's wh

352 名前:at 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 のように _ が連続するものは、識別子の中間であっても予約されている
とのことです。
[]
[ここ壊れてます]

353 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 13:18:09.37 ID:ZnRwde8F.net]
>>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 と表示される。

354 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 13:42:32.29 ID:Rr91L/mp.net]
int と自作クラス A の pair を priority_queue に入れようと思ったら pair<int, A> に対する less の定義(?)が要るって言われました
int だけに基づいてソートしてくれたら結構なんですが、最も簡単な書き方はどんなですか

また、自作クラス A は array を継承しているのですが、less の定義も引き継ぐ方法はないのでしょうか

355 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:05:10.94 ID:WjHCKOmN.net]
いろんな見解があってややこしいから、安全側に倒して「_で始まる名前は一切使うな」でいいと思ってる
コンパイラ実装するような奴以外はそれで困らんやろ

356 名前:デフォルトの名無しさん [2021/01/31(日) 14:10:22.05 ID:gXTMTlGe.net]
【HOW】予約済みの席に座る方法【TO】

357 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:15:41.43 ID:WjHCKOmN.net]
>>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;

358 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:54:17.91 ID:bSEeGU13.net]
>>345
ファイルスコープとローカルスコープは違うよ。
あと、今議論中なのはアンダースコアひとつで始まるメンバ変数についてなんで、アンダースコアの連続がアウトなのは誰でも知ってるし、餃子も324で書いてる

359 名前:デフォルトの名無しさん [2021/01/31(日) 15:06:11.72 ID:gXTMTlGe.net]
盛 り 上 が っ て ま い り ま し た ↑

360 名前:デフォルトの名無しさん [2021/01/31(日) 15:07:16.87 ID:gXTMTlGe.net]
SRELLって知ってますか?



361 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:15:54.45 ID:ZnRwde8F.net]
>>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 が二重に使われるのを避けたのかも
知れません。

362 名前:デフォルトの名無しさん [2021/01/31(日) 15:18:08.68 ID:gXTMTlGe.net]
inを踏むとか言ってみたくなるじゃないか。
責任とれ。

363 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:18:17.21 ID:ZnRwde8F.net]
どうやら、
「identifiers with file scope」は、「ファイルスコープを持つ識別子」
であり、with は、「持つ」の意味で使われているようです、。

364 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 15:41:47.21 ID:bSEeGU13.net]
>>354
予約されてるとはつまり使うなってことだけど、いずれにせよファイルスコープの話であって、ローカル変数の話じゃないよ。

365 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:03:58.33 ID:fCVb5Gn/.net]
>>346
#define a(x) { int z = 1; z = x * 2; printf("%d",z);}
int y = 5; a(y);
int z = 5; a(z);
これと何が違うの?
下線で始まることとは無関係だろ

366 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:08:45.08 ID:q0ry4PhJ.net]
STLコンテナの継承ってしない方が良いんですかね?

たとえばarrayに機能を追加 ([i][j] で i 行 j 列の要素を取得する等) して行列クラスを作りたいとき、
・arrayを継承する
・行列クラス内で要素を格納するメンバを array として持つ
の2パターンが考えられますが、皆さん的にはどっちが好ましいですか?

行列 is an array なので今こそ継承の使いどころだと思ったのですがいかがでしょうか

367 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:16:47.40 ID:WjHCKOmN.net]
arrayは仮想デストラクタ持ってないからポリモは出来ない
データ構造使うだけなら必要ない
やめとけ

368 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:20:57.91 ID:NgKJGEE4.net]
かか関数型マクロなら不用意に定義されていても
 int y = (a)(x)
という書き方おすれば問題無くマクロじゃない関数a()の方が呼ばれるので問題無い!
事前に
 typedef double a;
とかされていた場合は知らんが、

369 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:21:36.60 ID:2wqasnUt.net]
好きにしたら?
C++なんて自己流全開で俺スゲーしてなんぼ、他人の顔色伺ってたらダメ
行列なんてプロダクションではどうせ出来合いのライブラリ使うんだし

370 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:22:25.80 ID:q0ry4PhJ.net]
>>360
じゃあメンバとして要素(array)を持てば良いってことですよね?
[]の定義の仕方はわかるのですが、[][]ってどうやって定義するんでしたっけ?



371 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:27:00.30 ID:+XHxoAeu.net]
>>363
直接には出来ない。 (二引数を受け取れるようにしようという提案はある。)
operator[] を持つ別のクラス (のオブジェクト) を返すという形で実装する。

372 名前:デフォルトの名無しさん [2021/01/31(日) 16:27:38.50 ID:X7lGC0go.net]
case by case だろうけど
Array と Matrix に関してなら
直観的に考えると後者かな
継承する意味が無い

373 名前:デフォルトの名無しさん [2021/01/31(日) 16:30:29.11 ID:X7lGC0go.net]
[][][]だと3引数になるの?
[][][][]だと4引数になるの?
って疑問が出るので
operator[] を持つ自分自身のクラス (のオブジェクト)が正解だと思う

374 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:31:13.60 ID:NgKJGEE4.net]
std::array<std::vector<double> > x;
みたいな

375 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:32:01.22 ID:NgKJGEE4.net]
ジャグ配列になってしまう…orz

376 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:32:06.68 ID:fCVb5Gn/.net]
継承といえば
type_infoは仮想デストラクタ持ってるけど
派生クラス作ったやついる? 実験でなく

377 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:34:24.04 ID:ZnRwde8F.net]
>>358
命名規約に従って変数名をつけていれば、>>346のマクロはバグらない。
一方、>>358のマクロは、命名規約に従って合法的に定義されたローカル
変数zに対して使ってもバグる。
その違い。

378 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:34:43.94 ID:+XHxoAeu.net]
>>366
operator{] にこだわらずに要素にアクセスするメンバ関数を用意するのでもそんなに困らない。
見栄えだけの問題。

まあ見栄えも大事なんだけど。

379 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:36:28.41 ID:ZnRwde8F.net]
>>357
そうではなく、_xxx は、グローバル変数で使うことが予約されているので、
ローカル変数では使ってはならない、と読み取れるように思う。

380 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:38:11.57 ID:q0ry4PhJ.net]
>>366
すみません。どう書いたら良いのか分かりません
[]は
int& operator [] (int i) {return elem[i];}
みたいな感じですよね?



381 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:43:15.04 ID:fCVb5Gn/.net]
>>370
そのためにinlineとconstexprが用意されてるわけだが
なぜマクロで作らなければならないんだ?

どこぞのOS屋がmaxなんてクソマクロ作ってたせいで
みんな迷惑してたよな

382 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 16:45:04.61 ID:+XHxoAeu.net]
>>372
ファイルスコープで予約されている名前とローカル変数で名前がかぶっても
単にシャドウされるだけなので衝突しない。

ローカル変数名として使うべきでないという理由にならない。

383 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:51:19.01 ID:ZnRwde8F.net]
>>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);
と書いたときと結果が変わってくる。

384 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:55:15.98 ID:wwbd/Qx2.net]
こういうクソしょーもない話って馬鹿でも理解できるから盛り上がるよね

385 名前:デフォルトの名無しさん [2021/01/31(日) 16:57:55.61 ID:ZnRwde8F.net]
>>375
まあ、そうなんだけども、多分、英語の意味をそのまま素直に汲み取れば、
単純に>>372の意味のはず。
またそれは>>376のような状況を防ぐことが出来る。

>>374
まあ実際それはそういうこともあることは有るが、マクロでしか書けないような
例もあるわけで、>>376のようなマクロ作者のせっかくの配慮が、命名規約
を破って書かれたアプリでは逆効果になってしまうことがある。

386 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:00:34.53 ID:ZnRwde8F.net]
[補足]
なお、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文に書いたときに異常動作
をしない。

387 名前:はちみつ餃子 mailto:sage [2021/01/31(日) 17:08:36.84 ID:+XHxoAeu.net]
>>378
素直に読めばグローバルスコープで予約されているものは
グローバルスコープで予約されているという意外の意味を読み取ることは出来ない。

そこからローカル変数も制約されるという主張が出てくる理由が不在なんで、
何を言うてんのやろ……? ってなるわけ。

388 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:11:34.77 ID:ziXVeJXQ.net]
>>350
in instantiation of function template specialization ... requested here
というエラーが出ます

389 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:14:33.59 ID:fCVb5Gn/.net]
>>376
だから二重評価が問題になるようなことをマクロでやるなって
その例だってinlineで書けるだろ

邪道なやり方を保護するために
本筋が迷惑を被るのは本末転倒だ

390 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:05.39 ID:ZnRwde8F.net]
>>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を持つ識別子として使用されたら、話がおかしいと思うが。

「この自動車は、仕事で使うために予約されています」
の場合、その自動車を私用で使えば、規則違反だよね。



391 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:15:45.54 ID:fCVb5Gn/.net]
int _x; //こんなのがあっても
#define b(x,y) {int _x=x; int _y=y; f(_x,_y); g(_x,_y); } //ブロックスコープで保護されるだろうが

392 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:19:07.49 ID:ZnRwde8F.net]
>>382
でも、_ が最初に来る名前をアプリが使っちゃいけない、というのは伝統的にそういう
ことが一番の目的だと思うぞ。
もう一つは、コンパイラの内部でこっそり使う場合があって、それと知らないうちに
衝突する可能性が僅かにあるため。
なぜこっそり使うかと言うと、絶対に衝突しないようにコンパイラ側を
書こうとするとコンパイラ作りに手間がかかるから。
もし、アプリ側が命名規約を守ってくれていれば、コンパイラ作りが楽になる
ことがある。

393 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:20:06.45 ID:ZnRwde8F.net]
>>384
b(_y,_x)
と書いたらどうなるか考えてみたらしだんご。

394 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:25:17.52 ID:fCVb5Gn/.net]
>>385
おまえさんはコンパイラ屋か?
そうだとして同業者は__builtin_va_argのように注意深くやってるぞ
自分らのエゴのために客に制限をかけるようなことを
でかい声で叫びまくるのはやめてくれ

395 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:30:48.87 ID:ZnRwde8F.net]
>>387
まあ、本当はコンパイラ内部でこっそり使う場合、絶対に衝突しないような
もっと変な名前を使っているから大丈夫なんだ。
起動時の TickCounter の値を変数名の一部に入れたりとかね。

396 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:37:15.73 ID:2WBeknRq.net]
>>383
ローカルスコープで同じ名前の別変数を定義するのは「その自動車を私用で使う」ことには当たらないって言ってるの

397 名前:デフォルトの名無しさん [2021/01/31(日) 17:42:24.07 ID:/1NNOLNs.net]
ヘッダーファイルに書くか、ソースファイルに書くかの違いも大きい。
ヘッダーファイルに書くときは名前衝突に対する細心の注意が必要。

398 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:45:15.36 ID:fCVb5Gn/.net]
>>386
{int _x=_y; int _y=_x; f(_x,_y); g(_x,_y); }
どうなるって言いたいんだ?

399 名前:デフォルトの名無しさん [2021/01/31(日) 17:51:16.48 ID:/1NNOLNs.net]
C/C++の場合、スコープだけ意識するのは不十分で、ヘッダーかソースかで厳格さを変える柔軟性が必要。
ヘッダーに書くと影響範囲が大きいから。

400 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:57:13.23 ID:fCVb5Gn/.net]
テンプレートなんか普通にヘッダに内容全部を書くが
マクロでバカやるやつがいなければ平和だよ



401 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:58:49.95 ID:A8yllSCF.net]
ローカルスコープでも _x が禁止だというなら >>346 のマクロ a 定義内で _x を使っていい理屈もわからんよな。

402 名前:デフォルトの名無しさん [2021/01/31(日) 18:55:26.91 ID:gXTMTlGe.net]
std::pair<>を継承してquadを作る場合どうなりますか?

403 名前:デフォルトの名無しさん [2021/01/31(日) 18:58:05.19 ID:gXTMTlGe.net]
std::regexが意外と使える子に成長してますが、標準化委員会では捨て去る提案まで出てるそうで。

404 名前:デフォルトの名無しさん [2021/01/31(日) 19:37:14.68 ID:/1NNOLNs.net]
std::regexはプロパティが貧弱なので結局、従来の正規表現ライブラリ使う羽目になる。
std::regexと互換性のあるインターフェースを持つ正規表現クラスを提供するよう呼びかけるのが現実的。

405 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:51:04.44 ID:vFnk+kXo.net]
順序付き pair って自分で順番に格納するのと2要素のsetにするのどっちが良いですか

406 名前:デフォルトの名無しさん [2021/01/31(日) 20:39:53.24 ID:/1NNOLNs.net]
pairはSTLのアルゴリズムの恩恵を得るための物。
自宅の郵便受けを豪華にしたところで、郵便事業には何の関係もない。ただの趣味の世界。

407 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 21:08:09.18 ID:vFnk+kXo.net]
set< pear<int, int> > で、ある数を含む pear を高速に検索する方法ってある?

408 名前:デフォルトの名無しさん [2021/01/31(日) 21:47:36.00 ID:jyYnHelr.net]
set<int, vector<pair<int,int>*>>
元の集合に1億個程度のペアが入ってるとすると、住所録めいたものをあらかじめ生成しておく

配列でやっても速そう
list[m].empty()
こういうリストで空っぽかどうかわかればいいわけだ
vector<vector<pair<int,int>*>>>;

それならドでかい二次元配列に入れた方がラクかもしれない

連想配列でも出来る
map<int ,vector<pair<int,int>*>>>

静的な話だったが動的つまり追加と検索が交互に起こるとおそらく話は違ってくる

全部試して早かったモンが高速である、程度の他愛ない結論に落ち着く

409 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 22:01:19.63 ID:gvpDZJRs.net]
構造体にしろよバカども
読みにくいだろ

410 名前: mailto:sage [2021/01/31(日) 22:54:08.94 ID:wKQ2AmTw.net]
>>333
>>339
では _x ではなく x_ にしようっかな‥‥



411 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 23:01:41.96 ID:eyFvwlDf.net]
googleスタイルガイドはそちらを推してるな

412 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:17:42.16 ID:FSry25xS.net]
>>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の値に等しくなってしまう。
これではマクロ作者が意図したことではなくなってしまう。

413 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:19:32.38 ID:FSry25xS.net]
>>394
まあ、それはもっともな指摘なのだが、アプリ本体では使用禁止で、
マクロでは使用可能と勝手に解釈してしまうのが一つの流儀。

414 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 01:22:56.68 ID:FSry25xS.net]
>>389
そうではなくて、ローカルスコープで使うことそのものが、file scope
で使ってないことに当たるので、規約違反と言うことになると解釈できる
気がするんだ。

なぜそんなルールにしたのかは分からんがな。

415 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 03:22:30.15 ID:fw9rYrIy.net]
>>405
残念だったね。インライン関数使おうね。

>>406
あなたの流儀を規格の定めであるかのように話すのは迷惑なのでやめてくださいね。

>>407
file scope で予約されてる名前を file scope で使ってないなら問題ないね。
規約違反などという解釈にはならない。気のせい。そんなルールになってない。ってことで終われよ。

416 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:01:58.51 ID:v6ebtUL1.net]
>>400
unordered_map<int, int>

417 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:30:17.18 ID:LhepLs74.net]
>>406
マクロ定義内の仮引数名は当のマクロ定義外の何者とも関係しないのでは…
いわゆる束縛変数

418 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 07:38:30.21 ID:LhepLs74.net]
として安全に取り扱われる

一方>>346の_xはa(x)が展開された結果が他のプリプロセッサ定義で再置換され得るなら危険
これが起きるかはプリプロセッサの仕様(規格)を見たら白黒付くが
個人的には君子なので危うきには近づかないことに死体、

419 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 08:09:47.67 ID:v6ebtUL1.net]
うちの若いのがあんなアホマクロ書いてたら張っ倒す
まあ、やらかしそうなのはいないけど

420 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 09:26:53.82 ID:5yr9aQzL.net]
>>346
そもそもそのマクロで生成される変数はファイルスコープでないから、そもそも問題外では?

仮にファイルスコープな変数を宣言するようなマクロでも、ユーザが意図せず



421 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:32.41 ID:xFB8fPis.net]
仕事に情熱が持てなくなった

422 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:43:38.91 ID:VhfMLcQM.net]
>>346
アホだ

423 名前:デフォルトの名無しさん [2021/02/01(月) 12:06:54.06 ID:ZelzH3+k.net]
>>414
コロナの影響だろな。
福島大爆発の影響も計り知れない。
「原爆ぶらぶら病」で検索してください。

424 名前:デフォルトの名無しさん [2021/02/01(月) 12:30:15.68 ID:jyRtFT93.net]
>>408
>file scope で予約されてる名前を file scope で使ってないなら問題ないね。
そうじゃない。
英語原文を読めば、file scopeで予約されているのではなく、file scopeで
使用するために予約されているのだ。
だから、file scope以外で使用することが禁止されている。

425 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:32:18.30 ID:jyRtFT93.net]
>>417
日本語で言うなら、「file scope 専用」。

426 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:46:40.95 ID:/T40sBmV.net]
>>414
ちゃんと飯を食え。
週末はちゃんち休め。

年10日は連続した休暇をとれ

427 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 12:55:04.41 ID:ioMwojjO.net]
>>417
その一文ばっかりやたらこだわるけど
これが属しているセクションの名前って「17.4.3.1.2 Global names」なんだわ
グローバル名前空間の名前以外については言及してないの
ドラフトならインターネットで無料で見られるんだからこの辺の全容見てきな?

428 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:14:13.18 ID:Z79JHlVc.net]
>>417
あらゆる場所で使ってはいけないのなら、7.1.3でわざわざ1つ目と対比させるように使用用途を限定して記載した理由を説明してよ。
普通はコンパイラ実装者のために予約されている、だけで十分でしょ

429 名前:デフォルトの名無しさん [2021/02/01(月) 13:45:48.95 ID:fos4FOVO.net]
仕事に情熱が持てなくなった

430 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 13:50:50.97 ID:jyRtFT93.net]
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.



431 名前:デフォルトの名無しさん [2021/02/01(月) 14:08:01.06 ID:fos4FOVO.net]
>>373
obj& operator [] (int i) {return elem[i];}
もちろんelem[]の定義はobj elem[];
obj.shape() も実装すると便利

432 名前:デフォルトの名無しさん [2021/02/01(月) 14:13:00.08 ID:fos4FOVO.net]
>>416
「コロナでゴロゴロ病」

433 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 15:47:43.70 ID:Z79JHlVc.net]
>>423
そのサイトを紹介して何の証明になるの?

434 名前:デフォルトの名無しさん [2021/02/01(月) 16:16:30.24 ID:ZelzH3+k.net]
>>426
https://isocpp.org/

435 名前:デフォルトの名無しさん [2021/02/01(月) 16:22:14.79 ID:ZelzH3+k.net]
C++ is the only real language for expert developers.

436 名前:デフォルトの名無しさん [2021/02/01(月) 16:55:19.50 ID:fos4FOVO.net]
C/C++は好きだし比較的最強の部類だと思うけど
夢未過ぎは判断を誤るから色んな言語を適材適所に使えるようになるのが理想

437 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 17:40:26.58 ID:LhepLs74.net]
システム記述言語はアセンブラを除けばこの世にCとC++とRustしか、

438 名前:デフォルトの名無しさん [2021/02/01(月) 17:46:42.82 ID:ZelzH3+k.net]
中国人のありがたいお言葉ですぞ。

439 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:02:36.06 ID:jyRtFT93.net]
大体、この板には中国人や韓国人はほとんど来ず、来ているのはアメリカ人
やヨーロッパやアフリカが多いらしい。

440 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:44:36.44 ID:+21BJdPm.net]
いやrustが最強でしょww



441 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:47:23.23 ID:CDWd/LQ7.net]
Goは駄目なん?

442 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 18:57:50.94 ID:0s4gr52A.net]
自作の構造体をsetに入れたいときって operator < さえ定義しとけば良いの?
eraseとかは全部のメンバが同じものを見つけて消してくれると思って良い?

443 名前:デフォルトの名無しさん [2021/02/01(月) 21:08:59.66 ID:ZelzH3+k.net]
検索するとひろみをお勧めしてくる時点で無理だった。

444 名前:デフォルトの名無しさん [2021/02/01(月) 21:34:17.50 ID:ZelzH3+k.net]
しかもチップも取るんかーい!

445 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:43:42.23 ID:CtNYZU7D.net]
>>435
erase含め、同値性は!(a<b)&&!(b<a)で判定される
全メンバ一致で同値と

446 名前:ンなしたいなら辞書順比較する比較関数を定義すればよし []
[ここ壊れてます]

447 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:46:24.33 ID:FbSt8IWH.net]
演算子オーバーロードは地雷度高い。

448 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 22:53:14.56 ID:CtNYZU7D.net]
まあ、setに入れるためだけなら演算子オーバーロードするより関数オブジェクト使う方がいいかね

449 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:03:45.93 ID:f9q1oLiO.net]
C++の質問じゃないとは思うんですが、上位数ビットを0で埋めたいといった場合は
「0埋めしたいビットを0、他を1にしたもので&演算する」
であってますか?

450 名前:デフォルトの名無しさん [2021/02/01(月) 23:11:37.27 ID:ZelzH3+k.net]
合ってます。



451 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 23:17:45.03 ID:f9q1oLiO.net]
>>442
ありがとうございます
今までは例えばQWORDの上位3バイトを0埋めしたいってとき(value << 3*8) >> 3*8って言う2命令使う馬鹿な方法でやっていました・・・

452 名前:デフォルトの名無しさん [2021/02/02(火) 02:08:00.00 ID:DmcXRB7X.net]
へ椅子ブックが少し綺麗になってます。

453 名前:デフォルトの名無しさん [2021/02/02(火) 02:10:27.05 ID:DmcXRB7X.net]
RedditのC++コミュは17万人、オンラインが500人以上。
凄いね。

454 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:17:10.33 ID:uFATDe77.net]
ビット演算の中で最速なのってシフトじゃなかったっけ?
だから下手したら>>443の方がフェムト秒レベルでは微妙に早いんじゃない?

455 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 10:29:21.33 ID:kGc73xZq.net]
命令語長がマスク分だけでもQWORDに対して、シフトなら1バイト程度か

456 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 12:37:23.36 ID:vWAdhQ36.net]
>>446
CPUの世代やアーキテクチャによって違うが、
Latencyが、Shiftの方がandより少し遅いことがある。

457 名前:はちみつ餃子 mailto:sage [2021/02/02(火) 12:49:48.88 ID:+MtixY9O.net]
>>434
Go は GC が前提にあるから少し制約が強いけども、
OS のカーネルを書くのでもない限り思ったより足かせにならないという評価はあるみたいだね。

458 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:08:50.07 ID:aIAA0dxH.net]
Goはクソすぎるから駄目だ
何が駄目といってまず名前が駄目

459 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 13:45:57.34 ID:8HFbTrXI.net]
GoはPC初心者用
昔でいういわばBASIC

460 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:03:08.15 ID:FSwj4KRK.net]
バレルシフタと単純ゲート
レイテンシも糞もねえだろ



461 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 18:11:36.53 ID:8HFbTrXI.net]
でもその縛りプレイが大好きな変人も居る

462 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:23:15.74 ID:likaPPB8.net]
operator ==も定義しておくとなお良い
==のために<が2回呼ばれるのもアホらしいと感じるはず…
結局std::rel_opsを使って全部定義するという結論に落ち着く

463 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:25:04.30 ID:likaPPB8.net]
インテルのやつはバレルシフタじゃない気配がする…
シフト結果をテーブル化した方が速かったことg

464 名前:デフォルトの名無しさん mailto:sage [2021/02/02(火) 22:28:35.48 ID:likaPPB8.net]
あるいは最大限バレルシフタにしようとしているがパイプライン1段に収まっていないだけかもしれん…

465 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:25:34.21 ID:p0NvFN6a.net]
>>443
gcc, clang, msvc で最適化最大で試してみたら and をとるように最適化されたぞ。
主要コンパイラがそのように最適化するということは (前後の状況によるかもしれないけど)
たぶん and のほうが効率的ってことなんだろう。

466 名前:デフォルトの名無しさん [2021/02/03(水) 00:38:50.10 ID:53EFMpkm.net]
ビットシフトは64bit整数でのコンパイラ解釈が信用できないからAND演算子使うのが確実だと思うけどどうかな。

467 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 00:51:08.70 ID:5b6XJ+8s.net]
>>458
落ち着いてよく考えてみよう
お前がC++で作った成果物のうち、お前自身が書いたコードの割合なんてごくごく僅かに過ぎない
仮にそんなレベルで互換性が当てにならないような環境があったとして、お前が直接書いていない他の99%のコードがまともに動くと本気で思うか?

468 名前:はちみつ餃子 mailto:sage [2021/02/03(水) 00:54:51.58 ID:p0NvFN6a.net]
0xffffffffff とか書いてたら桁数を正しく書けてるか不安になる……

今の C++ だと桁区切りも入れられるけど、
どう入れたら意図がわかりやすいかようわからんし、
シフトで表現するのもありな選択だと思う。

469 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 01:01:02.57 ID:+m9V7fCu.net]
>>458
具体例をお願いできますか?

470 名前:デフォルトの名無しさん [2021/02/03(水) 01:20:23.24 ID:53EFMpkm.net]
コンパイラがちゃんと32bit整数への丸め警告を出してくれるならいいが、しれっとコンパイルされたらお手上げ。



471 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 02:47:38.99 ID:+m9V7fCu.net]
>>462
丸めって暗黙の型変換のことですか?
シフト演算は特に関係しないと思いますが……

472 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:01:31.58 ID:QcjMAifW.net]
>>460
0x0000'ffffull

473 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:29:42.77 ID:y3dS6mbz.net]
unsigned long long x = (0x1ULL << 32) - 1ULL;
ならちゃんと動く(と思う)が
unsigned long long x = (0x1 << 32) - 1;
とかだとイマイチ不安が…

474 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 06:38:54.06 ID:Nl+WsQpo.net]
>>465
下の方はイコールの右辺にintしか出てこないのだから、intが32bitの環境なら32bitでしか計算されないだろう

475 名前:デフォルトの名無しさん [2021/02/03(水) 10:23:38.02 ID:q8Ed7guF.net]
丸めと暗黙の型変換は違うものでは?

476 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 11:47:09.95 ID:HtH84Poo.net]
丸めや打ち切りは浮動小数点数の概念やね

477 名前:デフォルトの名無しさん [2021/02/03(水) 13:02:19.58 ID:53EFMpkm.net]
ビットシフト記述は自然すぎてソースコードに埋もれてしまう。
64ビットマスクのAND記述は見た目がどぎついので、かえって人間の注意を引くことができる。

478 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 14:45:43.48 ID:J722wycU.net]
なにいってんだこいつ

479 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 15:50:32.48 ID:pE1foWCw.net]
>>465
やっぱり、32BITの時が一番プログラミングし易かったな。
64BITになると、64BITと32BITを区別して書く必要が出てきて、
書くのが面倒になった。

480 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 19:12:23.88 ID:XaYGR0Wv.net]
そう?ポインタサイズくらいしか違いなくない?



481 名前:デフォルトの名無しさん [2021/02/03(水) 21:29:02.90 ID:53EFMpkm.net]
まじめにC/C++標準型size_tを使っている人には32bitと64bitの処理切り分けが地味に辛い。

482 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 22:36:28.54 ID:y3dS6mbz.net]
>>465の下の方のやつは符号拡張されたりする気がするorz

483 名前:デフォルトの名無しさん mailto:sage [2021/02/03(水) 22:40:25.83 ID:Ea4RwHR/.net]
>>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];}
};
ということですか?

484 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 03:22:45.38 ID:R0EDVzG0.net]
>>473
size_t は、型名が長いし _ も含んでいるし、打つのが辛い。
それにコードに締める長さも長くなるので画面が狭くなるし。

485 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 04:17:06.60 ID:SkZt7jTc.net]
>>473
まじめに、て別にsize_t使ってたら偉いわけじゃない
サイズを表したいけどいちいち考えたくない場合の選択肢だぞ

486 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 11:32:06.33 ID:sIhIIpMX.net]
size_t型はSTLを使う人なら避けて通れない。

487 名前:デフォルトの名無しさん [2021/02/04(木) 11:40:48.70 ID:ZzRKCYY/.net]
>>471

488 名前:
それ本来そこにあった問題に気付いていないだけだったと思うぞ
[]
[ここ壊れてます]

489 名前:デフォルトの名無しさん [2021/02/04(木) 11:44:02.03 ID:ZzRKCYY/.net]
>>475
class obj{
 array<obj, ?> elem;
public:
 obj& operator [] (int i) {return elem[i];}
};

490 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 12:06:17.02 ID:DWE1XJjK.net]
>>480
それってarrayのarrayとかvectorのvectorとか配列の配列として行列を作るのと同じですよね?
一次元配列に要素を格納しておいて[][]でアクセスするのは不可能なんでしょうか
row majorやcolumn majorを自由にできる、等の理由でそちらの方が好ましいのですが



491 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 12:29:12.61 ID:waKgX41w.net]
一次元配列を内包しているクラスのoperator[](int y)が、下記のようなクラスを返すようにすればできる。

class Row {
vector<int>& 一次元配列への参照
int 列数
int y
int& operator[](int x){ return 一次元配列への参照[列数*y+x]; }
};


でも自分ならoperator[]は使わずもとのクラスにindex(x, y)みたいな関数を用意して対処すると思う。

492 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 13:10:42.29 ID:g2cSm/y9.net]
malloc とか new で確保したメモリ領域を使うように
vector ( または array ) をインスタンス化するにはどうすればよいですか?

493 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 13:13:43.37 ID:ttCVH4wp.net]
>>481
こういう雰囲気で他のクラスをひとつ間に入れることでなんとかなる。

https://wandbox.org/permlink/ZXI1nkkCLRJQPtAJ

だけど俺も >>482 の言う通り operator[] にこだわらずに適当なメンバ関数でやる方法を推すわ。
実態として二引数なのだし、記法のためだけに余計な定義をするの馬鹿らしいと思う。

提案としては hoge[i, j] みたいな感じで二引数のインデックスを受け取れるようにする案は出てるんだが、
現状ではこのときのカンマは普通にカンマ演算子として解釈される。
前準備として、 C++20 からはブラケット内でのカンマは非推奨にするという変更が入っている。
https://timsong-cpp.github.io/cppwp/n4861/depr.comma.subscript

494 名前:はちみつ餃子 mailto:sage [2021/02/04(木) 13:20:29.03 ID:ttCVH4wp.net]
>>483
ある時点で確保済みのメモリの上にオブジェクトを構築するには
std::uninitialized_default_construct を使う。

でも std::vector 自体を適当なメモリの上に構築できても
std::vector 内で使うメモリは std::allocator で確保しようとするから、
必要ならアロケータを定義する必要がある。

495 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 15:40:11.75 ID:R0EDVzG0.net]
>>479
いや、全て32BITは、それに全て統一することで速度とメモリ効率と実用性の
バランスが取れていた。
ところが64BITだと実用上、表せる値の範囲はオーバースペックで
変数のメモリに占めるバイト数が8バイトと余りにも効率が悪い。
なので、多くの数値は32BITとし、必要な部分だけ64BITにするという
面倒な選択を強いられる様になった。
アドレスが64BITなので、それを整数型に入れるためには32BITの整数では
不足するので引きつられて整数も64BITを必要としがちになり、大混乱
が生じている。
(また、メモリーもアドレスを32BITより多くを必要とするアプリは非常に稀。)

496 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 16:48:02.49 ID:DWE1XJjK.net]
>>482
ありがとうございます
ストラウストラップの「プログラミング言語C++」に「行列クラスの設計」なるセクションがあったのを覚えてるので、そちらではどうしていたかも見てみます

497 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:07:22.68 ID:dB2jWvbu.net]
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 は使ってはいけないのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:51:26.68 ID:b9gCdorg.net]
>>487
485も見てねー

499 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 17:52:07.72 ID:b9gCdorg.net]
まちがえた。484

500 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 20:56:33.92 ID:ZyzsEROR.net]
配列のunique_ptrは色々と中途半端で使いづらいからオススメしない



501 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:14:32.91 ID:b9gCdorg.net]
>>488
unique_ptr<Hoge[]> p;
p.reset(new Hoge[4]{a, b, c, d});
でよいのでは?

502 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:20:26.07 ID:un3OWVjy.net]
>>486
32bitアプリでも今どきなら64bit整数を使える処理系は多いだろ
そもそもアドレスを整数型に入れるっていつの時代の人よw

503 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:47:34.63 ID:/RiZUiBF.net]
>>493
アドレスを整数に入れるのは過去の話じゃないぞ

504 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 22:51:09.67 ID:sIhIIpMX.net]
intptr_t整数型を使ってたのっていつの時代?

505 名前:デフォルトの名無しさん mailto:sage [2021/02/04(木) 23:24:48.23 ID:hMfhfQWp.net]
uintptr_tならいつもお世話になっております

506 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 00:01:41.63 ID:NIkVqohR.net]
この手合いのボケを量産するのはC++の害だな

507 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 01:35:15.82 ID:EB7VAtvO.net]
むしろCの害

508 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 01:52:47.05 ID:xbM9VFWh.net]
Rubyって結局勉強しないままPythonの時代になってしまったな

509 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 04:42:48.12 ID:ZuGfyZDY.net]
同様にC++を勉強しないままRustの時代になる

510 名前:デフォルトの名無しさん [2021/02/05(金) 09:51:39.70 ID:U76qOqQA.net]
>>488
https://www.it-swarm.jp.net/ja/c%2B%2B/new演算子よりもstd-makeuniqueを使用する利点/826350881/amp/
https://ja.stackoverflow.com/questions/24876/make-uniqueの利点



511 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 13:28:24.98 ID:ou/gU5gH.net]
c++やらずにrustとか馬鹿量産するだけにしか思えんな。

512 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:10:32.07 ID:Xzu/prlh.net]
それ言ったらノーコードがどうたら言ってる奴らはもっとやばそう

513 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:17:08.86 ID:M7C1cdPI.net]
ノーコードていってノードツリーみたいなのでフロー管理するやつ
よくゲーム系ツールにありがちだけど、サンプルみたいな単純な処理ならともかく
こみいったフローになってくるとノード間の接続線がものすごいことになって
とても管理しようという気になれない、まさに見た目どおりのスパゲティプログラムに

514 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:18:44.73 ID:ou/gU5gH.net]
>>503
それはもう50年くらいずっとそうだろ。
ノーコードとか逆に俺様言語作ってるのとほぼ変わらん状態にしかならんという
しょーもない展開しか見たことない。

515 名前:デフォルトの名無しさん [2021/02/05(金) 15:14:07.00 ID:zImWQG8r.net]
VCPKGのupdate、upgradeが常に失敗するんだけど、使えてる人いますか?
小まめにupdateしないからだろか?

516 名前:デフォルトの名無しさん [2021/02/05(金) 15:14:37.91 ID:zImWQG8r.net]
Goは標準ライブラリが圧倒してる。

517 名前:デフォルトの名無しさん [2021/02/05(金) 15:18:44.78 ID:zImWQG8r.net]
半年に一度フルビルドみたいになってしまう。

518 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:12:02.35 ID:A9cGRDK5.net]
Goは何がクソといってまず名前がクソ

519 名前:デフォルトの名無しさん [2021/02/05(金) 16:36:26.85 ID:zImWQG8r.net]
C++は基本だから、義務教育で習得するべき。

520 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 16:50:43.11 ID:/MNAnFTn.net]
言語仕様がでかすぎるからC言語で精一杯
オマケで紹介される程度かな



521 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 18:21:14.28 ID:7P5D6x+s.net]
>>505
昔はアセンブラすら触れない奴がC言語とか笑わせるなとか真顔で言う人がいたんだぜ。

別に仕事ができるのならRustでもPythonでも何でもいいと思うぞ。

522 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 19:09:46.26 ID:AjJLCZml.net]
仕事ができるのならw

523 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 20:48:06.29 ID:ou/gU5gH.net]
>>512
仕事ができるならなw
できないカスがクソみたいなもん押し付けてくるから文句が出るんだよ。
rustでもpythonでもまともなコード書いてりゃ文句はないわ。
まともじゃないから文句が出る。

524 名前:デフォルトの名無しさん [2021/02/05(金) 21:49:13.85 ID:a81hUa+F.net]
というか、プログラマとしてrust(鉄さび、腐食)になるというダブルミーニングを狙ったんだと思うけど。

525 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 21:59:53.11 ID:kFtfKVND.net]
お前らってド素人のくせになんでいっちょまえの口利くん?
それって不思議だわ

526 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:34:33.49 ID:EB7VAtvO.net]
Rustの名前は金属の錆じゃなくてサビ菌が由来

527 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:36:07.20 ID:NIkVqohR.net]
Rottenでいい

528 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 22:48:47.57 ID:a81hUa+F.net]
Perl6はRakuになってしまったし、Rustもいずれ「わびさび」の境地でSabiに改名されるでしょ。

529 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 03:04:22.39 ID:kQVOjfvp.net]
「まともなコードが書けるなら」じゃなくて、まともなコードを強制するのがRustという言語の方針だと思うが

530 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 04:45:05.79 ID:oQfB5lBJ.net]
>>284
昔からのプログラミング/電気界隈の慣習だから仕方ないけど、2要素のミニマルなブール代数しか扱わないにも関わらずboolean型を称するのがそもそもキモい
プログラミングで使うような半順序関係は、9割booleanで書くのが一番スッキリする
一般のbool型をプリミティブにして、そこからt/fやら三要素やらに派生するのが合理的に思う



531 名前:デフォルトの名無しさん [2021/02/06(土) 04:50:47.70 ID:GfZyzG1j.net]
ブーリアン革命。

532 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 05:13:59.88 ID:oQfB5lBJ.net]
革命というか、クラスシステムでブール代数をエミュレートしてるのが現状のOOPじゃないかと
まあ言語によって可補性はマチマチだけど、全てについてスーパークラス/サブクラスなクラスを設けるのは、メインストリームの言語では大体そうだろ

533 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 07:27:56.30 ID:S9Y30hRK.net]
>>520
だとしたら胡散臭さ200%のカルトだな

534 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:31:12.13 ID:rZdEmaWa.net]
>>524
Java、Kotlin、Scala、C#、Ruby、Python、PHP
あたりのどれかを触ってみれば、危険な記述を言語仕様レベルで封印することのありがたさが分かる

他言語も触ってみることをオススメする

535 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:34:34.84 ID:5Ze23T9D.net]
よくわからんが安全カミソリみたいなものかね?

536 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:10:31.61 ID:rZdEmaWa.net]
>>526
そんな感じ

まぁ、C++もマスターすれば危険な記述を避けることはできるんだけど...
プログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う

537 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:11:15.51 ID:S9Y30hRK.net]
>>525
ありがとう、おまえさんのレベルの低さがよくわかった
文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな
アプリの内容

538 名前:として良からぬ事を企むという次元には程遠いわけか []
[ここ壊れてます]

539 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:12:54.42 ID:rZdEmaWa.net]
>>528
投稿した瞬間の不意打ちレスワロス

540 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 10:17:55.71 ID:u/OM7jGY.net]
>>527
> プログラマーが悪vログラマーが悪意を持ってプログラムを記述しない限り安全なコードになるようにしようという試みは大切だと思う

>>528
> 文法や動作がよくわかってなくてマシンに警告してもらわなきゃ自分では判断できないんだな

この流れは大草原不可避



541 名前:デフォルトの名無しさん [2021/02/06(土) 11:01:19.43 ID:PohEB++t.net]
>>504
Unity とか UE はきらい?

542 名前:デフォルトの名無しさん [2021/02/06(土) 11:07:09.44 ID:PohEB++t.net]
>>509
めっちゃわかります
https://blog.golang.org/gopher
write.kogus.org/articles/S78LHt

543 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 11:09:03.81 ID:gLiOOG5V.net]
rustの縛りプレイはマルチスレッドでのメモリ管理のクソ面倒さが原因だろう

544 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:19:39.89 ID:S9Y30hRK.net]
>>527
いーや、くだらねえ
プログラマを信頼しない方針はあれもダメこれもダメの制限だらけになるだけだ
おまえさん自身も実社会で職場の誰よりも制限だらけなんだろう
重責を担ったことのないやつは人のせいにすることしか考えねえ

545 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:25:16.36 ID:UXUwo66G.net]
それだけ無責任で信頼出来ない人間が多いって事だろ

546 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:31:39.86 ID:58EQLFGq.net]
信頼はタダではないからな
バグを流出させたら銃殺ぐらいが妥当

547 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 12:53:16.04 ID:DutNpJ49.net]
>>528
お前のレベルが極めて高いのは分かったが、お前の共同の開発者もお前のようにハイレベルだとは限らない

548 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:19:02.89 ID:Hu1Z4B3S.net]
>>534
負け犬の遠吠え

549 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:29:55.66 ID:EjDQT0l8.net]
>>460
「(type)~0」でどう?

550 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:32:30.22 ID:TGsCRbLO.net]
>>536
ハゲを流出させたら〜と空目した



551 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:33:33.54 ID:rZdEmaWa.net]
>>538
しー!余計なことを言うんじゃないっ!

552 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:38:49.17 ID:Hu1Z4B3S.net]
>>528はスマートポインタを知らなさそう
文章から溢れ出る無能感

553 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:44:48.20 ID:S9Y30hRK.net]
構ってちゃんは、スマポ憶えたてらしいなw

554 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:46:38.15 ID:gYQHLnIz.net]
天才の俺が書くプログラムは絶対正しいから無駄なバカよけ機能はいらないしテストのような下等なことはしない
って豪語してたいつぞやの天才くんが帰ってきたのかな

555 名前: mailto:sage [2021/02/06(土) 13:50:19.96 ID:kbrcRlAn.net]
>>544
私は馬鹿なので天才のコードというのがどんなのか凄く興味があります…

556 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:53:43.56 ID:ROiZJzWf.net]
コテハンでこの程度の文章も読めないのは

557 名前: mailto:sage [2021/02/06(土) 13:55:54.96 ID:kbrcRlAn.net]
>>546
そりゃ馬鹿だからでしょう…

558 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 13:59:04.79 ID:aJ9IYVGP.net]
どう考えても誰かさんに対する皮肉なんだよなぁ...
まぁ、荒れるから誰とは言わないけど

559 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:05:03.59 ID:fN0CSTPN.net]
傲慢かましすぎもへりくだりすぎも良くない

560 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:06:38.65 ID:zTEH7215.net]
>>548
すでに荒れる種をまいてるきみが一番有害



561 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:12:51.02 ID:aJ9IYVGP.net]
>>550
いや、俺は別にS9Y30hRKは天才だと思ってるぞ!誰もS9Y30hRKの事をゲロカス老害だとか、バグを減らす上での有害な存在だとか、人を見下すだけの無能だとか、自分にとって都合のいい妄想を口に出す病人だとか、構ってちゃんだとか、そんなこと全

562 名前:R思っていないから!!S9Y30hRKは天才!!疑う余地もなく天才!!ハイレベルなバカで誰もついていけないとか、そんなこと思っていないから!!!
だから!それ以上この話はやめろぉおおおお!!!
[]
[ここ壊れてます]

563 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:21:36.41 ID:rZdEmaWa.net]
>>545
馬鹿でも扱えるくらい綺麗なコードが天才のコードだと思う
C++は表現豊かな言語だから...他の言語も触ると、綺麗な記述方法を学ぶ良い機会になるよ

564 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:56:25.58 ID:58EQLFGq.net]
>>552が扱えるかどうかが天才か否かの基準か!

565 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:01:56.11 ID:S9Y30hRK.net]
綺麗かどうかじゃない
何を実現したのかだ
綺麗に書くのはエチケットだが一番大事なことではない

566 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:11:21.64 ID:f5ipo2xA.net]
>>553
銃殺は銃刀法違反及び殺人罪に接触することすら理解できないお前でも分かるコードが存在したら私はそのコードを書いた天才を尊敬する

567 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:21:29.14 ID:58EQLFGq.net]
行政が法律に基づき行うなら問題無い
人が作った法律なら人が改正することができる

568 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:22:17.24 ID:S9Y30hRK.net]
スレ違い板違い失せろ

569 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:28:25.66 ID:58EQLFGq.net]
>>557
>>555に対するレス

570 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 15:30:29.13 ID:f5ipo2xA.net]
自作自演?



571 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:36:26.06 ID:oR/8CbQ7.net]
やらかしちゃいましたねー
人を見下しておきながら、人を見下す側もウッカリミスはするという事が証明されました

こういうウッカリ屋はプログラミングでも不具合を引き起こします
馬鹿でも天才でもウッカリ屋でも保守できるコードは記述するように心がけましょう

572 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:38:50.88 ID:oR/8CbQ7.net]
>>560
他にもテストの自動化、バージョン管理ツールの導入等もして不具合が流出しない仕組みを揃えておきましょう
以上

573 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 16:54:20.22 ID:bwIKlxQ8.net]
std::stringにUTF-8のコードを入れてプログラムを書いていますが、これを正しく編集する
にはUTF-8での文字の境界を正しく認識しないと駄目ですよね?
それは一般的にはどう処理するものなのでしょうか。

UTF-8のビットパターンとバイト数のことは知っていますが、それを自分で処理すべきか、
さらには絵文字とか複数のユニコードが組み合わさったものはどうするのか、とか。

574 名前:はちみつ餃子 mailto:sage [2021/02/06(土) 17:05:10.96 ID:N9CbrPsc.net]
>>562
コードポイント単位での処理で良いのであれば自分で適当に書いてしまってもいいと思う。

高度なものになると ICU などのライブラリを使う。
書記素クラスタ単位での処理が必要だったり正規化だったりといった場合では
コードを書けば済むというものでもなくて巨大な表が必要だし歴史的な変な規則が盛りだくさんだから
よほどの根性がないと自分ではどうにもならないと思う。

575 名前:蟻人間 mailto:sage [2021/02/06(土) 17:07:58.83 ID:gG6zzvvp.net]
>>562 Windowsだったら
#include <windows.h>
MultiByteToWideChar(CP_UTF8, 0, ...);
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, ...);
WideCharToMultiByte(CP_UTF8, 0, ...);
IsTextUnicode(...);
などが使えると思われます。

576 名前:デフォルトの名無しさん [2021/02/06(土) 17:41:00.54 ID:GfZyzG1j.net]
スカラー値が一文字を表現するとは限りませんが、ユニコードスカラー値を基本にするのが現実的な妥協点だと思います。
きちんと処理するのは、データベースとアルゴリズムが必要なので、少人数では無理です。
ICUが有力な選択肢となりますが、これも気難しいライブラリなので、用途に合わないかもしれません。

事実上、世界中の様々な民族の文字を統一的に扱う目論見は破綻していると思います。

577 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 17:44:16.27 ID:+KPQZs33.net]
https://youtu.be/wN0x9eZLix4

578 名前:蟻人間 mailto:sage [2021/02/06(土) 17:50:18.63 ID:gG6zzvvp.net]
https://ja.wikipedia.org/wiki/UTF-8

>任意のバイトの先頭ビットが "0" なら1バイト文字、"10" なら2バイト以上の文字の2番目以降のバイト、...(中略)...であると判定できる。

579 名前:蟻人間 mailto:sage [2021/02/06(土) 17:55:50.63 ID:gG6zzvvp.net]
つまり、

uint8_t utf8_byte = ...;
if (!(utf8_byte & 0x80)) {
// 1バイト文字。
} else if ((utf8_byte & 0xC0) == 0xC0) {
// マルチバイト文字の先頭バイト。
} else {
// マルチバイト文字の非先頭バイト。
}

580 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 18:11:29.66 ID:6eQmSTNr.net]
プログラミングのお題スレ Part18
https://mevius.5ch.net/test/read.cgi/tech/1594702426/453

UTF-8 は、先頭ニブル・4ビットで、1〜4バイト文字を判別しています

こういう規則か?



581 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 19:16:40.60 ID:S9Y30hRK.net]
>>561
殺虫剤のパラドックスって知ってる?

582 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 20:33:00.74 ID:zn5WrP4C.net]
>>570
恥の上塗り?w

ただし、自動化されたリグレッションテストの場合は、同じテストを繰り返すことでリグレッションが低減しているという有益な結果を示すことができる。
https://note.com/akiyama924/n/nc006015de2d2

583 名前:デフォルトの名無しさん [2021/02/06(土) 21:07:07.97 ID:GfZyzG1j.net]
テストロボットだぞ、ガシャーン!ガシャーン!

584 名前:デフォルトの名無しさん [2021/02/06(土) 21:08:55.93 ID:GfZyzG1j.net]
片山さんの自動パズルとか、ウェブだったら☆1万くらいついてそうだけど。
なんでWindowsにこだわるんだろ。

585 名前:蟻人間 mailto:sage [2021/02/06(土) 22:54:31.87 ID:gG6zzvvp.net]
>>573 JavaScriptで動くものはすでにある。
https://katahiromz.github.io/xword.js/
あるが、ビジネスとして展開する能力がない。

586 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 23:50:48.27 ID:58EQLFGq.net]
クレブナー基底で解くやつ!

587 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:07:42.85 ID:HYoiJUgB.net]
>>571
質問に答えてねw

588 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 06:47:27.09 ID:jX/y7Db/.net]
>>576
ん?
どの質問?
>>570ならリンク先読めばいいだけだろ
恥ずかしくて読めないのかもしれないけどw

589 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:26:36.56 ID:HYoiJUgB.net]
>>576
俺の質問にアンカーつけといてどの質問はねえだろ
恥ずかしくてとぼけてんのおまえさんだろ

590 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:29:49.52 ID:p49/UnNX.net]
テストはやらないよりもやったほうがはるかに良い
前の版通ったテストが最新版でも通るという品質は担保される
殺虫剤のパラドックスよりも恐れなければならないのは
いっぱい作ったテストコードが事実上同じテストでしかないという事態になることの方
※ 個人の感想です



591 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:49:47.79 ID:m5BD34IK.net]
>>578
別に完璧になくせるなんて誰も言っていないのに勝手にツッコんでるの何?としか思ってないよ

592 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 08:57:32.70 ID:HYoiJUgB.net]
>>580
おまえさん、こう言ったんだぜ

> 不具合が流出しない仕組みを揃えておきましょう

流出しなくなんかならねえ
不具合はポカミスばかりとは限らない
おまえさんのような浅はかな思想で突っ走った先に
碌でもない結末が待っていることだってある

揃えられるものなら揃えてみな
自分ができねえことを他人に言うな

593 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:11:28.01 ID:p49/UnNX.net]
人は思い込みを反証することで生

594 名前:きていける
だが完璧に反証できないこともある
ユニットテストはそのかけがえのないものを教えてくれた
[]
[ここ壊れてます]

595 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:41:41.73 ID:m5BD34IK.net]
>>581
え?それ俺じゃないけど
テストやればバグが無いといえるわけじゃないから安心するなってだけで、テストするなって話じゃないよね
主旨は同じだよね
何が気に入らないの?

596 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:00:05.54 ID:HYoiJUgB.net]
ああ、俺じゃないで逃げるのか
情けねえやつだな

597 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:07:20.85 ID:jX/y7Db/.net]
>>578
アンカーつけてると言うなら
> >>570ならリンク先読めばいいだけだろ
って書いてあるだろ
よほどアホでもない限りそんなアホなこと言うわけ無いと思ったからどれ?
って聞いたんだけど、想像以上のアホだったってことかな?w

598 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:10:29.25 ID:jX/y7Db/.net]
>>581
不具合はなくせないから仕組みも努力もいらんと言うならそれでいいんじゃね?
お・ま・え・ん・と・ろ・こ・で・は w

599 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:13:42.72 ID:2AGAGJ05.net]
マスクも手洗いもコロナを100%防げるわけじゃないから
マスク付ける必要も手を洗う必要もないね

600 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:20:21.65 ID:HYoiJUgB.net]
テストツールいらねえなんて言ってねえぜ
テストツール万能論はアホの考えだと言っている



601 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:21:25.49 ID:HYoiJUgB.net]
で、身に覚えのあるやつが返事してるから
ニヤニヤ笑ってるのさ

602 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:48:37.66 ID:2AGAGJ05.net]
「テストツール万能論」を主張したレスなんて一つも見えないんだけど
存在しないものを見てニヤニヤしてる変態こわい

603 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:56:59.83 ID:HYoiJUgB.net]
それを>>587がぬかすとは笑止な

604 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:11:45.24 ID:0QEz1MW7.net]
構い過ぎじゃね?

605 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:52:54.07 ID:jX/y7Db/.net]
>>591
まさかと思うけど>>587がマジで言ってるとか思ってないよね?w

606 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:03:05.54 ID:2AGAGJ05.net]
ああ・・・そういうことね・・・すまん触るべきじゃなかった

607 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:47:28.22 ID:p49/UnNX.net]
すまんで済んだらユニットテストは要らんわ!

608 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 14:09:34.56 ID:qbLU6RFF.net]
野菜食えで馬鹿みたいにブチギレるホリエと一緒やな

609 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:05:54.73 ID:HYoiJUgB.net]
>>593
奴は「必要ないね」とぬかしたんだ
別に武漢熱に話をすり替えようとすり替えまいとそこは関係ない

610 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 15:41:29.20 ID:yi1XmM9H.net]
>>597
文章を字面通りにしか解釈できない人?



611 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 16:31:48.90 ID:jcLu/xd9.net]
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が作られちゃったぽいのですが
これだとメモリを倍使っちゃってるし、時間も掛かってますよね
どういうふうにしたら、喚ばれた側の関数で参照渡しに出来るのでしょう

612 名前:蟻人間 mailto:sage [2021/02/07(日) 16:37:08.22 ID:sfdJNFTq.net]
>>599
右辺値参照かstd::swap

613 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:13:26.18 ID:8CWTHaUD.net]
>>600
サンプル貼ってよ

614 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:21:04.63 ID:jcLu/xd9.net]
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の例も出してくれたらこれから色々いたスカリマス

615 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:24:59.07 ID:8CWTHaUD.net]
>>600
ほれほれ
貼れんのか

616 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:28:56.01 ID:yi1XmM9H.net]
>>599
参照渡し自体はできてるはず。
ただ参照渡ししたvectorをクラスのメンバに代入して、代入されたクラスメンバの方を更新しているからvectorを渡した元の方にはまったく影響が無いというだけ。

617 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:29:10.92 ID:jX/y7Db/.net]
>>598
もうそう言うことにしないと自我が保てないんだろw

618 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 17:59:39.88 ID:p49/UnNX.net]
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"; //値が変わった!(予定
}
};

619 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:00:52.99 ID:HYoiJUgB.net]
>>598
だったら何だとぬかす気だ?
> 存在しないものを見てニヤニヤしてる変態こわい
> 文章を字面通りにしか解釈できない人?

要するに話になんない奴ってことだろ
言ったことにも裏の意味にもコメントされたくない
じゃあ相手しねえでやるから黙ってろゴミ

620 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:02:35.24 ID:p49/UnNX.net]
訂正orz
誤: private: std::vector<short> _stdSansyo;
正: private: std::vector<short>& _stdSansyo;

もしcSansyo.setSansyo(moto)の呼び出し時に参照を渡したいんじゃああ!
という向きにはsansyo::_stdSansyoはstd::vector<short>* _stdSanshoにして
ポインタを持つようにすべき



621 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:10:05.07 ID:p49/UnNX.net]
ちゅかもっと大きな一般原則としてつぎのどっちかにすべき
(1) std::vector<short>の実体の所有権をmain()(で定義いているmoto)に固定してcSanshoクラスにmotoのアドレスを記憶させない
(2) std::vector<short>の実体の所有権をcSanshoクラスのインスタンス(_stdSansyo;)に固定してmain()でmotoを定義するのをやめる
※ 個人の感想です

つまり出題が悪い。出し直し

622 名前:はちみつ餃子 mailto:sage [2021/02/07(日) 18:10:05.98 ID:hHDgzHUe.net]
>>602
元の考え方を変えずに動作させるにはその方法は十分に妥当だと思うよ。

ただ、もっと複雑なプログラムになったときにうっかりデータよりポインタのほうが
長生きすることになっても発見しづらいデザインになっている。

可能なら全体のデザインを見直すべきという話で、
いっそ所有権を渡してしまったほうが間違いにくいかもねという意味で右辺値参照や swap の話題が出ているので、
>>599 をベースにして右辺値参照や swap を使う例に書き換えるのは難しい。
別物になってしまう。

623 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:11:12.01 ID:yi1XmM9H.net]
>>607
自分以外の複数の人を同一人物だと思っちゃう人?

624 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:14:03.86 ID:p49/UnNX.net]
>>611
ネットの総意とか言い出しちゃう人?

625 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:16:20.19 ID:p49/UnNX.net]
検証不能な事物を錦の御旗にするような人間が
ソフトウェアのテスト推しなのは
大いなる矛盾である氏ね

626 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 18:18:25.00 ID:HYoiJUgB.net]
>>611
あの流れで
> 文章を字面通りにしか解釈できない人?
なんてぬかすやつは複数ID自演厨と見なされて当然だ
疑われたくなければ口の利き方に気をつけな

疑いは晴れてない
この後の発言にも気をつけるんだな

627 名前:デフォルトの名無しさん [2021/02/07(日) 18:24:44.17 ID:4v/nAOdw.net]
>>566
なにこれ

628 名前:デフォルトの名無しさん [2021/02/07(日) 18:29:05.24 ID:U/6f7Qk0.net]
参照をフィールドに保持するのは、一部のパーサーくらいでは?

しかも、状態を関数に切り分けないとデバッグが辛いので、仕方なくそうするだけで、バッド何とかの類だし。

629 名前:デフォルトの名無しさん [2021/02/07(日) 18:31:34.10 ID:U/6f7Qk0.net]
むかし5chで誰かが、プログラムを書くときは必ずテストしてるはずなんだって言ってましたが。
それを単体テストとして書いておけばずっと使えて便利だよと。

その書き込みを見て世界中の人がテストフレームワークを書き始めたんですよ。

630 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 19:06:50.71 ID:n+epGkV9.net]
>>616
想像力が足りなすぎ
>>617
想像力が豊かすぎ



631 名前:デフォルトの名無しさん [2021/02/07(日) 20:53:42.20 ID:U/6f7Qk0.net]
バッドエンディングですね。

632 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 21:03:56.50 ID:ZOvCZ0cx.net]
グローバル変数使うなとは言わないけどコメントもないのはキツい
grep掛けて検索しても訳分からん
ポインタで飛び火してるときなんてもう…

633 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 22:09:55.11 ID:IiZq+u+t.net]
演算子オーバーロードの厄介さはキーワード検索で拾いにくいこと。
反復子もそうだが。ま、言い出したらきりないが。

634 名前:仮トリップ mailto:sage [2021/02/07(日) 22:57:26.65 ID:HI2f2oIL.net]
>>561を書いたのは私なんだけどなぁ...
面倒くさそうな人がいるし、一般論だけ言って立ち去ろって思っただけ

635 名前:仮トリップ mailto:sage [2021/02/07(日) 23:02:22.83 ID:HI2f2oIL.net]
ちなみに、>>561以降は何も述べてない。
私は一般論を語っただけだから、他の人が私と似た考えでツッコミを入れただけに過ぎない。

殺虫剤のパラドックス?それがどうした?
私はテストコードを書いて不具合を激的に抑えているが?

殺虫剤のパラドックスを説明したところで、不具合を限りなくゼロに近づける試みが無駄であることの証明にはならない。

636 名前:蟻人間 mailto:sage [2021/02/07(日) 23:09:32.25 ID:sfdJNFTq.net]
>>622-623
自我の芽生え、おめでとう!
では、かえるの歌を歌います。

【...JASRAC権利関係の為、自主検閲...】

♪パパーン
(全員でクラッカーを鳴らす)

637 名前:デフォルトの名無しさん [2021/02/07(日) 23:20:12.91 ID:IiZq+u+t.net]
殺虫剤のパラドックスなんてものは存在しない。
ただの退行テスト不足だ。

638 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:24:22.18 ID:PnrMZIJR.net]
殺虫剤のパラドックスって言いたかっただけやろw
そもそもテストで発覚したバグを修正したら同じテストで摘出できないのは当たり前
摘出できたら単なる修正漏れだしw
JSTQBの関係者か信奉者が言い出したんだろうけどあまり意味のない用語だと思う

639 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 06:42:41.05 ID:HwnOmmQF.net]
蒸し返さなくていいから……

640 名前:デフォルトの名無しさん [2021/02/08(月) 07:03:25.17 ID:nKLqWVxG.net]
虫返さないですと!?



641 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:05:43.31 ID:NGjwD54G.net]
>>610
そもそも>>600は的外れだと思うんだが
メンバの方を参照かポインタで持つ、で終わりだろ
3行目以降完全に蛇足

642 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 11:20:50.36 ID:VJ9lplXi.net]
>>627,628
そういうのは無視しろ

643 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:00:56.57 ID:zDqHH6LK.net]
スルーの法則

644 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 12:43:41.70 ID:DuebuhTc.net]
>>602
>>599
誰か
永続的に使用するなら shared_ptr

645 名前:で受け取れ。今のままだとsetSansyoを呼び出す側が所有権手放していいのかわからなくて困るだろ。
て指摘した?
今や生ポインタなんて性能優先のときに内部的に使用するもんで、インターフェイスで使用するもんじゃない。

あと、参照も関数内だけで使用する引数に使うもんで、永続的に所有する引数に使うもんじゃない。
[]
[ここ壊れてます]

646 名前:デフォルトの名無しさん [2021/02/08(月) 14:04:18.90 ID:VJ9lplXi.net]
コンストラクタでなら参照型のメンバ変数に保存できる。ほとんどの人はやらないけど。

647 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 18:54:29.18 ID:DuebuhTc.net]
>>633
できるのと実際に実装するのは別の話だわな。
所有権の無いオブジェクトの参照を保存するなんて狂気の沙汰だ。

648 名前:デフォルトの名無しさん [2021/02/08(月) 19:12:34.60 ID:nKLqWVxG.net]
アイキャンユーキャン。

649 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 20:51:28.21 ID:U8Md53kE.net]
>>633
クラス間に親子関係のようなものがあって、子の生存期間が常に親の生存期間内にあるような場合は、親への参照をメンバ変数とすることは普通にあると思うけど。例えば>>484とか

650 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:15:43.14 ID:NGjwD54G.net]
shared_ptr(またはスマポ)至上主義の変なやつ以前から居るんだよな
相手にするな



651 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:37:27.20 ID:UsSsiWeS.net]
ナマポ使ったほうが良い場面なんて皆無でしょう

652 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 21:48:31.75 ID:2GJiXyxS.net]
出たwナマポ完全否定奴w

653 名前:デフォルトの名無しさん [2021/02/08(月) 21:58:57.06 ID:VJ9lplXi.net]
参照型のメンバ変数は参照オブジェクトの生存期間を保証できないからweak_ptrで保存しておいて使う時だけshared_ptrを取得するのがC++的な解決なんじゃないの。

654 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:08:09.48 ID:FKp3giDs.net]
スマポにしたら所有権の問題を考えなくてよい
というわけではないからスマポ使えというのは妥当ではない
逆に所有権に矛盾が無ければインスタンスは生成元が与えた参照を持って良い

ていうかスコープを抜けたら自動的に解放される系のクラスを書いたら
エラー処理上エラー通知先としての生成元オブジェクトの参照保持はほとんど不可避

655 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:11:14.29 ID:NgGwlfwa.net]
コピー禁止のshared_ptr欲しい

656 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:25:23.27 ID:bp+4mh0R.net]
すべてスマポで書くスタイルも悪くないと思うけど、メイヤーズ神もツリー構造で子が親のポインタを持つときはナマポで十分と書いている

657 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:27:43.60 ID:34Jom8HU.net]
木のノードは子へのポインタじゃなくて子のノードIDを持て😡

658 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 22:48:15.38 ID:NgGwlfwa.net]
自分よりポインタの方が寿命が長いことが保証されているなら確かに生ポで問題ないが
それが成り立つ状況ってなかなかないよな。

659 名前:デフォルトの名無しさん [2021/02/08(月) 23:02:19.81 ID:VJ9lplXi.net]
参照先の実体がまだ生存しているかどうか知るにはweak_ptr::expired()を使うしかないのが現状でしょ。

660 名前:デフォルトの名無しさん [2021/02/08(月) 23:07:56.19 ID:nKLqWVxG.net]
Chromiumはstd::unique_ptrを全面的に使ってるけど、ポインタを使う設計そのものが古いような気がする。



661 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:13:28.50 ID:BwguerZK.net]
まあcコードを全く使わないってのならいいんでないの。
ただc++のポータビリティーは君が思ってるより低いけどね。

662 名前:デフォルトの名無しさん mailto:sage [2021/02/08(月) 23:23:15.47 ID:cR8ppl+C.net]
露骨すぎるマウント取りたがりダッセーwww

663 名前:デフォルトの名無しさん [2021/02/09(火) 01:58:29.04 ID:qUmf+U4D.net]
マウントじゃなくてポインタでは?

664 名前:デフォルトの名無しさん [2021/02/09(火) 02:46:23.52 ID:jPnyP+Vp.net]
C++に特化したAPIなんてどこのOSでも提供されないから、結局、Cの配列と互換性のあるstd::vectorやstd::arrayを使わざるを得なくなる。

665 名前:デフォルトの名無しさん [2021/02/09(火) 04:01:45.22 ID:qUmf+U4D.net]
>>644
木もコンテナで良いですよね。
所有権がハッキリしてて。

666 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:34:27.86 ID:nSJhwzEU.net]
>>651
data()を必ず使う手合いか?

667 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 07:39:10.06 ID:s3p3GZ7R.net]
木は木全体を収める領域ごと一気に解放する場合もあるから別に

668 名前:デフォルトの名無しさん [2021/02/09(火) 17:49:12.66 ID:KrtnTLUi.net]
>Cの配列と互換性のある

doubt

669 名前:デフォルトの名無しさん [2021/02/09(火) 17:53:30.91 ID:LEWRJrN2.net]
ダウトとデビューって似てるよね

670 名前:デフォルトの名無しさん [2021/02/09(火) 18:35:55.16 ID:qUmf+U4D.net]
親が子のポインタを所有する木は、親を消すとネストして子孫のデストラクタを呼ぶので、スタックが枯渇します。

したがって、子から順番に消さなくてはなりません。



671 名前:デフォルトの名無しさん [2021/02/09(火) 18:56:53.48 ID:qUmf+U4D.net]
その様はまるで摩天楼がドミノ倒しのように連鎖倒壊するようでもあり、DOMINOというピザにもなっています・

672 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 19:07:16.84 ID:IPYpL0sA.net]
なんと後味の悪い話

673 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 20:39:36.84 ID:zHOwdh/n.net]
意味が分からない

674 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:07:48.14 ID:Rh87rJZX.net]
>>657
それで枯渇するようじゃ木の探索すらできない。

675 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:13:02.23 ID:5Ac7csWH.net]
探索はループでもできるんで、たとえば数万個の要素を持つツリーを子から消せというのは真理なのかも

676 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:27:40.55 ID:AojZLEiV.net]
消すのは独立して実行できるので別スレッドに送れば実質コスト0

677 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:38:09.75 ID:s3p3GZ7R.net]
>>662
DFAとPDAではやれることの範囲の違いがちげう

つかこの場合は安易にスマポとかコンテナを使うから破棄ごときにトラバースの手間がかかるんである

678 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:44:42.72 ID:5Ac7csWH.net]
それもそうであるな

679 名前:デフォルトの名無しさん mailto:sage [2021/02/09(火) 21:50:17.60 ID:s3p3GZ7R.net]
ちゅか垂直探索なら木をメモリに持っておく必要が無い
水平探索ならメモリ上に世代1、世代2、....と木を育てていく(らしい)が
兄弟ノードを全部見終えたのでいざ従妹ノードに移ろうとするときに
親ノードへの参照は欲しい木がするがするとshared_ptrなら即循環参照になり、
子の情報で親(子孫がいっぱいぶら下がっている)を生成できるわけもないから、
ウィークポインタの出番でもない

680 名前:デフォルトの名無しさん [2021/02/10(水) 01:37:49.58 ID:XIZePh+h.net]
子から消さなかったばかりに。
2000人を乗せた航空機が洋上で消えた。
ってなるかも?



681 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:48:13.89 ID:ZYaksnCf.net]
A380でさえ853席だが2000人なんてどうやって載せるんだろう

682 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:51:41.17 ID:2ozOIzIF.net]
く、空中で衝突するとか…

683 名前:デフォルトの名無しさん [2021/02/10(水) 01:53:08.99 ID:XIZePh+h.net]
インドでは屋根の上にも乗ります。

684 名前:デフォルトの名無しさん [2021/02/10(水) 01:55:11.55 ID:XIZePh+h.net]
https://trafficnews.jp/post/80031

証拠写真みつけてきた。

685 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 01:55:17.84 ID:uF0JvJPV.net]
GTA5のMOD作成者みたいな会話だな

686 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 02:01:19.54 ID:uF0JvJPV.net]
>>653
昔はdata()がなかった。(遠い目)

687 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 06:40:17.61 ID:ZYaksnCf.net]
アントノフの貨物室にすし詰めでどんくらい乗れるかな

688 名前:デフォルトの名無しさん [2021/02/10(水) 06:40:27.16 ID:XIZePh+h.net]
東京: TK
京都: KT
大阪: OSK
淡路: AWG

689 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 07:59:22.76 ID:FGGGEnfF.net]
航空機や原発みたいなクリティカルなシステムでは
全部固定長の配列で書いてあるんじゃないの

690 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 08:06:21.27 ID:uF0JvJPV.net]
釣れますか。
ヒープのほうが少し安全です。



691 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:25:11.13 ID:4XPmMtZj.net]
>>671
どこが証拠やねん!
せいぜり100人やないかヽ(`Д´)ノ

692 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 14:32:04.65 ID:TFzLuCg0.net]
すみません、std::for_each を使っていて continue したくなりましたが、サポートしてないです
よね? これって:
1. for_each は continue する必要がないような処理に限ってに使うべき。
2. ループの中で大きい if ブロックを作って空の処理にすればよい。
3. その他

693 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 15:13:45.18 ID:ZYaksnCf.net]
returnすれば?
for_each(begin(foo), end(foo), []{ if(bar) return; });

694 名前:デフォルトの名無しさん [2021/02/10(水) 16:06:00.49 ID:HSfvjOUE.net]
return は continue ではなく break じゃないの?
質問者の2.大きなif分で実質何もしないでいいと思う

695 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:20:11.24 ID:ZYaksnCf.net]
for_eachをbreakするにはthrowかlongjmpがいるぞ

696 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 16:35:39.62 ID:S47HOUGT.net]
きったねぇジャンプだ

697 名前:デフォルトの名無しさん [2021/02/10(水) 16:51:31.94 ID:HSfvjOUE.net]
あ、ラムダ式になってたのか

698 名前:はちみつ餃子 mailto:sage [2021/02/10(水) 17:51:08.81 ID:tNqysU9n.net]
>>679
for 文で書いた方が短く書けそうだけど、
あえて for_each を使いたい理由が何かあったりするの?

699 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:41:41.17 ID:FGGGEnfF.net]
Perlなら問題無くできる(continue→next、だが
C++規格委員会がfor_eachのcontinueを許可しないのは最後の一線なのかもしれん…

700 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:57.06 ID:teDb7k99.net]
何の一線よ



701 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 20:18:41.39 ID:ln/pLvjf.net]
いやreturnでいいだろ…
許可しないってなんのことだよ

702 名前:デフォルトの名無しさん [2021/02/10(水) 21:21:18.68 ID:+e+FbMSY.net]
vectorで一億件ほどで、飛ばしたいのが100〜1000件程度なんだろう

703 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:51:25.56 ID:QYfnOwKH.net]
>>679
for_eachをrange based forに変更は出来ないの?

704 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:59:01.21 ID:ZYaksnCf.net]
>>690
おまえのスキルのためにか?

705 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:17:23.69 ID:qtVJ0qYe.net]
range based forなら普通にcontinueできるぞ

706 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:18:26.21 ID:ln/pLvjf.net]
>>689
飛ばす手段があったとして、飛ばすかどうかどこでどう判断するの?

707 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 04:16:42.30 ID:nrDdTgaQ.net]
early returnは正義

708 名前:デフォルトの名無しさん [2021/02/11(木) 11:22:44.35 ID:n0GRjtoR.net]
>>685
テンプレのときとか

709 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 17:53:02.68 ID:Iq2aKjep.net]
679がなぜfor_eachを使うのかを無視するのは
他人の領分を侵すお節介だ

for_eachの使い方をアドバイスできんやつは
しゃしゃり出てくるな

710 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:00:13.22 ID:hRfccug1.net]
よくよく話を聞いてみたらまるで異なる解決策が見つかるなんてよくあることじゃん。そんな経験ないの?
何をしたかったか確認するのは重要



711 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:15:41.21 ID:Iq2aKjep.net]
流れをよく読んでみろよ
for_eachをロクに使ってないやつなのモロバレだろ
質問者が尋ねていないことを答えたいから協力しろなんてぬかすのは
回答者の資格ねえんだよ

712 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:18:25.32 ID:Iq2aKjep.net]
自分が何か尋ねているときに
質問内容に付き合ってやれる懐のねえやつは
うぜえだけだろが

713 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:23:57.31 ID:Iq2aKjep.net]
質問内容において自分より下なやつに教えを請いたいかよ

714 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 18:34:11.92 ID:hRfccug1.net]
for_eachを使う場合の答えはとっくに出てるのに何言ってんの?

715 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:17:08.97 ID:15xoUz1R.net]
3のその他で答えただけ。

716 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:01:29.92 ID:veopzNW6.net]
他人の領分なんて侵してナンボ

717 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:03:18.37 ID:qccRsQET.net]
>>702
はあ?returnではいけない理由は?

718 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:19:00.69 ID:a/CQbB/Z.net]
>>679はループしたいだけだろ
std::for_eachを何が何でも使わなければならない特殊な事情があるなら仕方ないけどそんなこと言ってないし

719 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:23:31.36 ID:nDjPJyoP.net]
>>704
returnで良いと思うよ。

720 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 20:50:06.93 ID:Iq2aKjep.net]
>>701
680は俺だが何言ってんの?



721 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 21:58:36.08 ID:bviF/sLG.net]
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

722 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 22:06:56.76 ID:bviF/sLG.net]
>>688
for_eachを勘違いいてたわサーセン、
確かにfor_each<bgn, end, Function>のFunction(*it)からならreturnするで良さげ

723 名前:デフォルトの名無しさん [2021/02/11(木) 23:28:48.49 ID:Ooe4jkn9.net]
>>707
アンパンマンはキミだ。

724 名前:はちみつ餃子 mailto:sage [2021/02/12(金) 01:36:02.90 ID:2OOQ6m86.net]
>>708
宣言の有効範囲は宣言された場所からその宣言を含むブロックの終わりまでというのが原則
(クラススコープなどの例外はあるのでその他にも関連するルールはあるかもしれんけど)
なのでどちらもエラーになるのが筋だと思うし、 gcc や clang で試したらどっちもエラーだった。

逆にどういう理屈で前者が通るのかは気になる。

725 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:02:20.64 ID:45Tu3B4L.net]
>>708
当たり前だね
最初の例ではtargetEntryをグローバル空間に導入しているからbaz()とfoo()の両方から見える
2番目の例ではtargetEntryをbaz()のブロック内に導入しているから、そこに包含されないfoo()のブロックからは見えない

ただし、これはfoo()を関数原型と関数定義に分けて関数定義をbarよりも後方に置いた場合の話だ
原文のままでは>>711が言うとおり通るわけがない

726 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 06:03:16.30 ID:45Tu3B4L.net]
- barよりも後方
+ usingよりも後方

727 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:01:12.63 ID:3x5iWh5q.net]
確かにideoneでもVS2019でも両方エラーになるのですだが、
1番目の例はVS2010ではビルドも通って動くもーん

ソース:
https://ideone.com/DC8fMv

実行結果(※ VS2010限定):
1: 100
続行するには何かキーを押してください . . .

728 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:04:11.00 ID:3x5iWh5q.net]
ちな関数テンプレートfoo()の定義をusingよりも後方にしたら全てでビルドが通って動く
まそりゃーそうならないとおかしいが

729 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:12:42.48 ID:45Tu3B4L.net]
>>714
通ってねえじゃん
何が言いたいんだ?

730 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:17:08.75 ID:3x5iWh5q.net]
>>716
> >>714
> 通ってねえじゃん
> 何が言いたいんだ?
※ VS2010限定



731 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:24:49 ]
[ここ壊れてます]

732 名前:.77 ID:45Tu3B4L.net mailto: だから何?
ill-formedなのがわかっても自分が正しいと強弁したいのか?
[]
[ここ壊れてます]

733 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:27:26.57 ID:3x5iWh5q.net]
全員の主張を再検証しただけでつよ?
>原文のままでは>>711が言うとおり通るわけがない (>>712)
が覆されてご機嫌ななめ??

734 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:32:07.63 ID:45Tu3B4L.net]
覆った?
おまえVS2010限定で逃げただろ
ill-formedはill-formed
これを覆せたら出直して来な

735 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:34:53.80 ID:45Tu3B4L.net]
俺も昔のバージョンのコンパイラは使うがバグ技は使わないし
そういうことをする厨二病とは組みたくない

736 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:38:38.54 ID:3x5iWh5q.net]
>おまえVS2010限定で逃げただろ
VS2010ではビルドが通るというのが話の発端なので…
1番目の例がill-formedであろう点は同意

737 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 07:51:23.22 ID:45Tu3B4L.net]
orzなんだろ
何が誰が悪いのかわかったら素直になれよ
居直る態度が気に入らねえ

738 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:12:22.74 ID:3x5iWh5q.net]
何が悪いのか、はともかく
誰が悪いのかとは一体…
つか現象(事実)の提示に対してそれを反発と解釈して勝手に炎上しないでいただきたい;;;

個人的にはVS2010のバグである可能性でほぼ確定とは思いつつ、
例1と例2で動きが違うことから、MSVC2010は、グローバルなシンボルについて
template foo()や関数baz()の中の解釈に入る前に名前空間を確定させる実装なのだと感じる
(template foo()の解釈ロジック自体にバグがあるなら例1、2とも同じ結果になるのが自然

再発防止のためには、C++規格のどこをどう読めば良いんじゃorz

739 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 08:57:55.62 ID:45Tu3B4L.net]
>>719は明らかに煽り口調だろうが
和解したいなら、あの態度を撤回しろ

俺は和解なんかできなくて構わんが

740 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:26:37.15 ID:1W1GlA05.net]
匿名掲示板で誰が何を言ったのどうのとみっともないぞデフォルトの名無しさんよ



741 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:29:35.12 ID:jxDcSv/l.net]
どう見ても>>716がイミフな言いがかりつけてるだけにしか見えんが…

> 確かにideoneでもVS2019でも両方エラーになるのですだが、
> 1番目の例はVS2010ではビルドも通って動くもーん

742 名前:デフォルトの名無しさん [2021/02/12(金) 13:22:44.45 ID:x9NfpsA7.net]
匿名でも江副とかQZとか片山やはちみつが糞なのは伝わってくるω

743 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 18:24:14.30 ID:45Tu3B4L.net]
単発IDになりやがった
どこまでも腐ってやがるな

744 名前:蟻人間 mailto:sage [2021/02/12(金) 19:12:56.39 ID:fTOQtm+W.net]
どこでも動くように標準化しましょうねって話だよね。

745 名前:蟻人間 mailto:sage [2021/02/12(金) 19:29:19.43 ID:WC9JZZt5.net]
G++とかclang++などの複数のコンパイラで警告最大にして自動ビルドすれば再発防止できると思われます。

746 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 19:37:54.63 ID:3abO7oQ0.net]
流れをぶった切って質問です。

あるクラスで生成、削除を一切合切プライベートにしたい(ファクトリメソッドでスマートポインタを渡す)んだけど、
::deleteを対象クラスだけプライベート、あるいはコンパイルエラーにする
ことって可能かしらん?

747 名前:蟻人間 mailto:sage [2021/02/12(金) 19:46:11.11 ID:WC9JZZt5.net]
>>732
private dtor使え、だとよ。
https://stackoverflow.com/questions/631783/what-is-the-use-of-having-destructor-as-private

748 名前:蟻人間 mailto:sage [2021/02/12(金) 19:55:37.68 ID:fTOQtm+W.net]
dtorはデストラクターの略ね。
死のトラクターじゃないよ。

749 名前:デフォルトの名無しさん [2021/02/13(土) 02:57:21.77 ID:ZCgeuP6g.net]
映画化決定。

750 名前: mailto:sage [2021/02/15(月) 00:20:32.87 ID:M7Hs01/T.net]
>>728
私が馬鹿なのは私自身が認めていることですが、片山さんはすごいと思いますよ、何よりも片山さんは多産ですし、私は片山さんを尊敬しています‥‥



751 名前:デフォルトの名無しさん mailto:sage [2021/02/15(月) 12:30:59.56 ID:tZ1nblID.net]
>>733
ありがとう。参考になりました。

流石にグローバルdtorの直接呼び出しを気にしている人は居なさそうですね。
通常の使い方じゃないから気にするな、が正解かしらん。

752 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:45:49.14 ID:zTH+X1Xm.net]
画像
https://genkibox.com/linepic/wp-content/uploads/2017/10/line0049.jpg

753 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 18:59:33.07 ID:zTH+X1Xm.net]
つかprivate dtorって何の解決にもなって
なくね?
クラスFooのデストラがprivateな時点で
Fooのfirendでも何でもないstd::shared_ptr<Foo>はビルドエラーになる宿命なのでは…
あとp.get()->Delete()とされるのも恐ろしいすぐる………

754 名前:デフォルトの名無しさん mailto:sage [2021/02/16(火) 19:15:28.82 ID:Pme6j5oX.net]
>>739
そのあたりは回避策ある。
どのwebページに解説あったか覚えてないけど……

755 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 08:24:04.17 ID:Pn/OWNHb.net]
operator <=>を定義しても
==と!=が使えるようにならないのは、なんで?

756 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 11:29:34.99 ID:u6Au0MiC.net]
https://cpprefjp.github.io/lang/cpp20/consistent_comparison.html
のoperator==節で仕様とその理由についても説明してあります

757 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:05:07.17 ID:8kTif7Fu.net]
relops

758 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:07:48.78 ID:ZhVk2C4b.net]
relops

759 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 12:14:57.71 ID:7xS0C1vs.net]
なるほどわからん。弱順序って何よ?

760 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 13:36:33.88 ID:peDNmUYI.net]
>>745
二項関係で、反射律、推移律、比較可能性を満たすもの



761 名前: mailto:sage [2021/02/17(水) 21:10:31.90 ID:n4obO1jB.net]
>>746
擬順序とか半順序と呼ぶ本もありますね、
ただ、その「比較可能性を満たす」とはなんでしょうか?私の教科書では、擬順序には反射律・推移律だけしか要請されていなかったと記憶しているのですが?

762 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:46:57.44 ID:ZhVk2C4b.net]
普通に言葉通り任意の2つの元を比較できるということなのでは…

木構造で「親は子より大きい」という順序を定義しただけ
(全順序集合(例えば整数)で全ノードをラベル付けしてしまうというチート手段に訴えことなく、
 文字通り「if (aはbの親) { a > b; }」という規則と(a, b)の反射律、推移律を導入しただけ
では兄弟間の大小が定まらない、
みたいな

763 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:47:32.54 ID:ZhVk2C4b.net]
のは半順序で、
整数みたいなやつが全順序

764 名前:デフォルトの名無しさん mailto:sage [2021/02/17(水) 23:59:39.55 ID:ZhVk2C4b.net]
なお{ 全順序集合 }⊂{ 半順序集合 }なのは確定的に明らかなので、
反射律・推移律だけしか要請されていなかったらそれは全順序集合の集合を含む半順序集合の集合の意味となりぬ
つまり全順序集合の集合と半順序集合の集合が区別できん
両社を区別したい議論のときは比較可能性の有無を宣明せねばならんぬ、

765 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 00:34:07.44 ID:48a8FzyN.net]
a≦b または b≦aが成り立つ時、比較可能
弱順序ってしらなかったけど、半順序とは違うようだ
「半順序?弱順序?二項関係・順序関係まとめ」って記事

766 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 03:35:31.61 ID:sRdwF113.net]
束論やってるけど弱順序とか初めて聞いた…
マ界用語?

767 名前:741 mailto:sage [2021/02/18(木) 06:50:20.77 ID:brZHVFLx.net]
>>74

768 名前:2
まだ何とも言えないが
thx!
[]
[ここ壊れてます]

769 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 10:08:01.17 ID:48a8FzyN.net]
弱順序は、半順序よりは制限強いが全順序より弱いもので、
ある種のソートアルゴリズムでは全順序よりは制限緩められるけど
半順序までは緩められない、ってのがあるみたいね

770 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 13:16:30.49 ID:9Yl3mCZH.net]
>>752
束って何で勉強すればいいん?



771 名前:デフォルトの名無しさん mailto:sage [2021/02/18(木) 14:43:05.98 ID:48a8FzyN.net]
アルゴリズムとの関連はちょっとわからんけど

数学としての束論って単独の本は少なくて、代数学の本に載ってるんじゃないかな
もしくは順序集合の話として集合論の本

772 名前: mailto:sage [2021/02/19(金) 04:42:11.06 ID:3tFNJrqv.net]
>>748
>普通に言葉通り任意の2つの元を比較できるということなのでは…

いや、それは全順序ですよ
・擬順序
・順序
これらの演算子を≦としたとき、かならずしも任意の二元 a, b について a ≦ b の真偽が定まらなくてもいいと思います

擬順序に対して「a ≦ b かつ b ≦ a ならば a = b」という縛りが追加されるのが順序、
順序に対して、任意の二元 a, b について「a ≦ b」または「b ≦ a」のどちらかである、という縛りが要請されるのが全順序
だったかと

773 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:38:08.11 ID:mpGE+xsF.net]
wikipediaの「推移関係」の項目より

半順序 - 反対称的な擬順序
擬順序 - 推移的であると同時に反射的
全擬順序 - 完全的な擬順序
同値関係 - 対称的な擬順序
厳密弱順序 - 強半順序関係で等価関係での比較が不可能な場合
全順序 - 推移的で反対称的な完全関係

全順序、半順序くらいしか知らんかった

774 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:51:11.65 ID:gWMDVcMR.net]
OOPの本だとサブクラス関係は前順序って書いてるよな?擬順序ともいうのか
推移的、A→B∧B→C |- A→C 、サブクラスのサブクラスはサブクラス
かつ反射的、AはAのサブクラス

775 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 20:55:11.79 ID:fAhRarpN.net]
>>757
>いや、それは全順序ですよ
は? その条件が共通なだけだろ

776 名前: mailto:sage [2021/02/19(金) 21:23:56.68 ID:3tFNJrqv.net]
>>760
一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいいのですよ
すべての二項間で順序の真偽が定まるのは、順序の中でも一番強いものである全順序で初めて導入される、と私は解釈しています

777 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:44:53.04 ID:gWMDVcMR.net]
ブール代数 型システムで検索しても出てこないけど>>523
可補分配束の定義見てると確かにそんな気はしてくる

インスタンス関係かサブクラス関係なのか?どっちでも成り立ちそうだけど、取り敢えず静的チェックをパスすることを考える

要素が無いと言う意味でCのvoidを冪集合ブール代数の最小元、空集合とみなす
void *は何でも指せるという意味で最大元
まともな型システムなら(少なくとも)上記の擬順序以上は要求る
演算は多重継承とvirtual 定義が∨/∧に対応?クラス図書いてみたら成り立ちそうに思える
型チェック通らない全ての型を考えられるし、それが¬
型述語で定義してればそのまま!演算子になる

778 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:14.25 ID:gWMDVcMR.net]
確証が持てなくてもどかしい…数学できる人ツッコミ待ち

とりあえずダイヤモンド継承を許さない言語だと、常に∧/∨は定義されないからブール代数にはならない事には気付いた

779 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:55:34.53 ID:hHLb88jw.net]
ググってる時点で、というかそのことを隠しもしないニワカ

780 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 21:56:36.22 ID:gWMDVcMR.net]
>>764
隠して5chなんかで偉ぶってどうすんのさ



781 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:01:35.27 ID:aORwmd7L.net]
質問ですがムーブコンストラクタを有する基底クラスの
派生クラスでムーブコンストラクタを
派生クラスがムーブコンストラクトされる際に基底クラスにアクセスしようとする場合であっても
安全に書く方法って何かあるんでしたっけ

782 名前:デフォルトの名無しさん [2021/02/19(金) 22:03:03.40 ID:6z9jMlRH.net]
作ったクラスをmapにいれるときoperator<を書かなきゃいけないのがめんどい

783 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:08:24.37 ID:aORwmd7L.net]
あとムーブコンストラクタを有するクラスを
詳細を隠ぺいする目的でインターフェースを設けたとき
インターフェース経由でムーブコンストラクトする方法って何かあるんでしたっけ
アブストラクトファクトリイーを作るしか無い?

784 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:11:39.72 ID:aORwmd7L.net]
この場合アブストラクトファクトリイーといっても、元のクラスFooに対して
IFoo IFoo::move() { ... } が定義してあって
 IFoo x = (適当な生成手段)
ののち、
 IFoo y = x.move()
でxが破壊されるやつ!

785 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 22:36:29.47 ID:F7SsNRLa.net]
それインターフェースとして使えてないよ

786 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 00:40:16.16 ID:iK8Sr3o/.net]
領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
memcpy(b.data(), a.data(), n*sezeof(T))
で良いんですかね?

UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか

787 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:38:00.62 ID:YJV0xwOV.net]
>>771
ド素人かよ

788 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 01:42:23.87 ID:upzAgg50.net]
>>771
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな

789 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 08:11:48.90 ID:BRyl48dG.net]
>>761
その「一番弱い」とか言ってるのは前順序だろ。

ククク... 前順序は順序四天王の中でも最弱...
ウィキペディアにも書いてあるのに間違うとは面汚しよ...

790 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 11:17:36.76 ID:ZF+WEG2v.net]
半順序とかいう訳が悪い
英語のpartial orderの方が分かりやすい



791 名前: mailto:sage [2021/02/20(土) 11:27:39.73 ID:mkFIMg3t.net]
>>774
本によって用語にブレがあるのは数学では常識でしょう?だから>>761 では定義もあわせて書いておきました

792 名前:デフォルトの名無しさん [2021/02/20(土) 11:30:33.89 ID:ec7b4JGn.net]
あとは裁判で争うしかないでしょうね。

我々には判決が出せませんから。

793 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:52:10.16 ID:N5IkYQZo.net]
>>771
前提条件として

・ T の型が trivially copyable である
・ vector の大きさが必要な大きさ分に出来ている

ならそれでもいいよ。
でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、
作法的にはあまり使わないに越したことは無いって感じ。

794 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 11:56:56.24 ID:N5IkYQZo.net]
>>771
>>778
と思ったけど、 vector<T> ではなくて vector< vector<T> > なのか。
それだと領域が連続するという前提が成り立たないんじゃないんですかね。

795 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 12:51:28.34 ID:K0wy5MAI.net]
>>770
どういう意味じゃ…
ムーブコンストラクトする手段をインターフェースとして公開したい需要は論理的に有り得る
それともIFoo::move()に実装が伴うからという意味?

796 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:23:36.69 ID:XZPJJfWU.net]
>>779
なぜ?
行優先か列優先かは置いといて、vectorの要素は連続するのだからvectorのvectorも連続するのでは?
サイズやキャパシティが変わったときに不連続になりうるということ?

797 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:39:27.43 ID:ZF+WEG2v.net]
vectorのvectorの中身はサイズ値とバッファポインタが連続で並んでるだろうな

798 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 14:57:30.99 ID:upzAgg50.net]
>>781
正しくコピーしたければ、
memcpy(b[0].data(), ...)
みたいにしないと。
このとき当然b[1]のデータ領域はb[0]の後ろに連続していない

799 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 15:27:01.55 ID:N5IkYQZo.net]
>>781
vector 型のオブジェクトが連続して並んでいることは保証されるよ。
でも vector 型のオブジェクトのメモリレイアウトがどうなってるかは保証されない。

常識的な実装は >>782 が言う通りヒープから持ってきたメモリのポインタなどを持ってるだけ。
データそのものを内包しているわけではない。

800 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 16:22:37.93 ID:UDAFNKrx.net]
ほらCと同じ基本の部分を教えずにいきなりSTLとか勧めるからこういう初心者が出てくる・・



801 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:06:29.35 ID:1TZxH4Mg.net]
ある程度出てきても問題ないだろ。ちゃんとドキュメント読んで理解してくれる人も多いんだろうし、
「Cと同じ基本の部分」を教えたところでちゃんと理解してくれない人も居るだろうし。

802 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:09:29.42 ID:UDAFNKrx.net]
ちょっと何言ってるかわかんない

803 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 17:54:39.09 ID:ZF+WEG2v.net]
相談室に初心者が来て何の問題があるのか

804 名前:はちみつ餃子 mailto:sage [2021/02/20(土) 18:06:15.32 ID:N5IkYQZo.net]
>>788
程度による。

805 名前:蟻人間 mailto:sage [2021/02/20(土) 19:27:14.79 ID:VmESNyRi.net]
>>771

> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
> memcpy(b.data(), a.data(), n*sezeof(T))
> で良いんですかね?

待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。

ダメです。

806 名前:蟻人間 mailto:sage [2021/02/20(土) 19:49:01.06 ID:HfYkFRCd.net]
C++のvectorでは、演算子[ ]がオーバーロードされてるから、C言語の常識が通用しないんだよ。

memcpyは危険な関数だから簡単にメモリー破壊できるんだよね。

std::vector v;
int a = 5;
memcpy(&v, &a, sizeof(a)); // vのメモリー破壊。

807 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:38:26.44 ID:PUIofNKd.net]
>>791
流石にそれは質問者のレベルにも達してないんで問題外

808 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 20:44:29.23 ID:Rkd/h2tQ.net]
別にここで何が正しいかを結論できなくてもいいのだが

>>776
そう言うなら「推移的かつ反射的であるのみの順序関係」が「弱順序」と書いてある本を
教えてくれる?
手元になかったらうろ覚えでもいいけど。〇〇の××先生がそう言ってたみたいのでもいいw
知識として一応確認しておきたいかなと。

809 名前: mailto:sage [2021/02/20(土) 21:19:47.30 ID:mkFIMg3t.net]
>>793

>>761 では「推移的かつ反射的であるのみの順序関係が『弱順序』」とはいっていませんよ、よく読んでくださいね
>>761 で言っているのは「一番弱い順序、推移的かつ反射的であるのみの順序関係は、実は任意の二項間においてかならずしも順序関係の真偽が定まらなくてもいい」としかいっていませんですよね‥‥
曲解もはなはだしいと思いますね

ちなみに私の教科書ではこれを「擬順序」と定義しています、大熊正氏の本ですが、私には一生かかっても私には読めないでしょうから、あとはググってください

810 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:44:52.70 ID:K0wy5MAI.net]
std::vector v(sizeof(int));
int a = 5;
memcpy(&(v[0]), &a, sizeof(a)); // おk



811 名前:デフォルトの名無しさん mailto:sage [2021/02/20(土) 21:47:14.25 ID:K0wy5MAI.net]
つかこうかorz
std::vector<int> v((size_t)1);
const int a = 5;
memcpy_s(&(v[0]), sizeof(v[0]) * v.size(), &a, sizeof(a));

812 名前:蟻人間 mailto:sage [2021/02/20(土) 21:58:40.54 ID:HfYkFRCd.net]
この場合は素直にループを書くか、それとも格好良くstd::copy使うのが楽かな。

813 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:26:13.27 ID:G4m9GHw4.net]
for文回したら死ぬ病気にでもかかってんのか?

814 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 01:29:00.28 ID:oO8KGr2m.net]
条件を満たすならmemcpyのほうが圧倒的に早いからな

815 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 01:32:42.66 ID:jd0qgVVy.net]
それほど速くならない・速くなくていい場合のほうが圧倒的に多いってのもあるけどな。

816 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:13:29.79 ID:ZrTKdY4P.net]
そもそもそんなクソみたいなコードはふつう書かない

817 名前:770 mailto:sage [2021/02/21(日) 03:54:49.57 ID:HYHVDYIS.net]
>>780
IFooっていう名前からしてインターフェースってJava/C#的な意味でのそれだと思ってたけど
それならポインタなり参照なりじゃないと機能してないよっていうかコンパイルエラーでしょってツッコミ

818 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 03:58:42.63 ID:0HHdBuLy.net]
メモリコピーを最適化する前に、他にすべきこと沢山あるだろ的な答えになるよな、確かに。
PG界の真理情報だわ。

819 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 05:11:43.88 ID:L28MHLBD.net]
valarrayでxorとか

820 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:43:27.01 ID:F92hI73d.net]
>>802
オブジェクトAがconstメンバとして保持しているブツの所有権を移してオブジェクトBを構築することは
ムーブコンストラクタでないと_なのでムーブコンストラクタである必要があり
この要請はオブジェクト全体が直接アクセスかポインタや参照経由の間接アクセスかとは独立愚連隊、

>>803
真に高速化を求められる内側のループでstd::vector<int> xとかしないから
>>796はひとつながりの省略のないコードとして読んだら判断を誤りうる



821 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 07:51:19.71 ID:F92hI73d.net]
じゃなかったorz
 Foo::Foo(const Foo& src) { (srcを変更して新しいインスタンスを初期化) }
はconst_cast<Foo>的な危険手段でないとやれないが
 Foo::Foo(Foo& src) { (srcを変更して新しいインスタンスを初期化) }
とするとなんかコンパイラが警告を出すから
 Foo::Foo(Foo&& src) { (srcを変更して新しいインスタンスを初期化) }
にせざるおえないという、

822 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:21:42.30 ID:Dqlg3tSu.net]
関数と関数オブジェクトってどう使い分けるの?

823 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 13:30:17.46 ID:YxY+Ievf.net]
こういう馬鹿にはちゃんとベンチマークとれって言ってやるのが正しい行い。

824 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 14:32:16.15 ID:HYHVDYIS.net]
>>805
そんなこと聞いてるんじゃなくて
提示されたコード片じゃどう考えても動かないから何したいか分からんのよ

https://wandbox.org/permalink/ancQey3IkQKyWsu1

こっから始めてどこをどうしたいか教えてくれ

825 名前:デフォルトの名無しさん [2021/02/21(日) 14:47:26.80 ID:9WgNecVw.net]
404 Not Found

826 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 15:33:36.83 ID:HYHVDYIS.net]
すまん
https://wandbox.org/permlink/ancQey3IkQKyWsu1

827 名前:デフォルトの名無しさん [2021/02/21(日) 16:21:41.69 ID:u2qGdVDT.net]
過疎ってるし、初心者どころかJavaの質問でもOKでは?

828 名前: mailto:sage [2021/02/21(日) 19:01:13.83 ID:3Ebck9FU.net]
>>807
この質問に対して回答をつける用意がありますが、しばしお待ちを

829 名前: mailto:sage [2021/02/21(日) 19:27:36.57 ID:3Ebck9FU.net]
>>807,813
昔のコードを今読んでみたんですが、実のところ関数オブジェクトにする必要性があったかどうか、今の価値観のもとでは首をかしげています
数値計算のプログラムって、無自覚にバンバン書いてると例えばルンゲ食ったをやっているとこと他とかが混ざり合って収拾がつかなくなる、と思って関数オブジェクトにアイソレートした記憶があって、それを思い出して読んでみたんですけれども、今読んでみても、なんだか、ねえ‥‥
https://mevius.5ch.net/test/read.cgi/tech/1434079972/72

830 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:07:12.76 ID:F92hI73d.net]
>>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を受け取れるようにしたいワケ



831 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:09:12.28 ID:F92hI73d.net]
ちなみにWandboxでソースコードをフォークする方法は
初心者なので
わかり
ません

832 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:14:47.49 ID:LxNhpnKU.net]
generate_Foo()がコケてるのはnewのところでFooのコピコンがないだけだろ
コピコン書くか、ムーコン使いたいならnew Foo(std::move(foo3))にすればいいだけ

後半も意味不明
*q = *pってそれスライシングだぞ

833 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:23:47.49 ID:F92hI73d.net]
>>817
普通の(ムーブでない)コピコンは書けないなぜなら>>806の理由により

>*q = *pってそれスライシングだぞ
どゆこと?
Foo foo1とFoo foo2だと
foo1 = foo2
とできるのに、

834 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 20:26:48.03 ID:F92hI73d.net]
ちょっと補足すると、IFooには現状代入手段が無いから、
*q = *pはそもそもコンパイルが通ることはなく、目的とする機能を形而上的に表す仮想コード
のつもり

835 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:03:58.63 ID:+My/Unlg.net]
>>814
処理を意味でまとめるようなことなら積極的にやるべきだと思いますが、それは関数オブジェクトじゃなくて関数でもできますよね?

836 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 21:05:03.53 ID:HYHVDYIS.net]
>>815
コピー代入演算子とムーブコンストラクタだけ定義するとか意味分からんし
インターフェースによる隠蔽より先にそっち解決しなさい
何がしたいのか自分で本当にわかってる?

837 名前: mailto:sage [2021/02/21(日) 21:07:32.53 ID:3Ebck9FU.net]
>>820
まあ、そのとおりであり、そうなんですよね…
>>814 は関数オブジェクトである必然性はありません、関数オブジェクトを積極的に使う例としては STL にご登場願うしかないのかもしれませんね

838 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 22:29:56.45 ID:LxNhpnKU.net]
>>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部分が代入される
これをスライシングという

839 名前:はちみつ餃子 mailto:sage [2021/02/21(日) 23:00:12.09 ID:jd0qgVVy.net]
>>822
関数オブジェクトに「関数」とついているのは関数と同じ記法で呼び出せるということに意味があって、インターフェイスの問題。
状態を持った関数 (関数オブジェクト) も状態を持たない関数 (関数ポインタ) も統一的に扱えたらうれしいねって話なので、
状態を持たず、高階関数に渡すこともない場合は関数オブジェクトにする意味はないな。
(普通の関数も static 変数への参照を持ってたりする場合もあるので必ずしも状態を持たないわけではないけど。)

840 名前: mailto:sage [2021/02/21(日) 23:42:46.53 ID:3Ebck9FU.net]
>>824,820,(>>813,814,822)
結局、どーでもいい一発芸で、ああ動くね‥‥、と思ったまま放置してましたね<関数オブジェクト
https://mevius.5ch.net/test/read.cgi/tech/1434079972/21
https://ideone.com/9KIuSD
あとはラムダ式の理解のための存在という認識、か



841 名前:はちみつ餃子 mailto:sage [2021/02/22(月) 00:10:55.10 ID:oiAqsUn6.net]
「ラムダ式が関数オブジェクト (型の定義と生成) の構文糖」というのは
既存のプログラムとの整合性を壊さない上手いアイデアだと思うけど、
しばらくしたら「関数オブジェクトはラムダ式の実体」という説明のほうが
通りがよくなったりするかもしれないね。

842 名前:デフォルトの名無しさん [2021/02/22(月) 04:39:33.19 ID:7qATnC1I.net]
関数オブジェクトで状態を渡せるのは結構なんだが、コピーコンストラクタ渡しなので、
手の込んだ状態管理だった場合は結局、C言語と同じ

843 名前:ュユーザー定義変数を介して状態を読み書きすることになる。 []
[ここ壊れてます]

844 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 08:23:10.03 ID:Dz0hZ3aS.net]
>>827
shared_ptr使えば、大抵の場合は問題ないんじゃない?

845 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 09:54:32.23 ID:Y0MZ31oO.net]
>>807,820ですけどQZで始まる人あまりにもレベル低いというか回答者として不適格だと思うのでNGします

846 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 10:22:59.45 ID:1euWwsnd.net]
>>829
答えてもらってる立場で偉そうに。常識ないの?

847 名前:デフォルトの名無しさん [2021/02/22(月) 11:11:29.17 ID:M+ptXBNl.net]
いやでも実際・・・QZはね・・・
50過ぎのおっさんが無理して絡みにいってるけど空回りしてる感じなんだよね
ほんと残念だけども

848 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 11:36:36.23 ID:7qATnC1I.net]
関数オブジェクトに対するラムダ式の優位性は、ローカル変数を比較的安全かつ手軽に参照渡しできることだろう。

849 名前:デフォルトの名無しさん [2021/02/22(月) 12:08:03.12 ID:5Ezd+ZoO.net]
あわしろ氏がQzはアカン言うてたけど、ターゲット変えたのかな?

急にその手の書き込みが増えてあからさますぎる。

850 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 16:15:54.50 ID:rpJl6SNk.net]
>>831
QZの回答は糞だとして、回答者に対して>>829みたいな態度をとることがどう正当化されるわけ?



851 名前:デフォルトの名無しさん [2021/02/22(月) 17:04:18.35 ID:M+ptXBNl.net]
回答者には無条件で感謝しないといかんのか?
気持ち悪いな

852 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 17:39:33.90 ID:rpJl6SNk.net]
>>835
感謝しろなんて言ってないぞアホ

853 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 19:14:24.66 ID:SaDkzfTf.net]
>>835
回答を得るのに適切な行動を取りゃいいよ。
変にヘイトを吐くとつっかかる奴がいるから回答から遠くなる。
>>829は感情を制御する訓練をしないとな。

854 名前:デフォルトの名無しさん [2021/02/22(月) 19:28:11.36 ID:M+ptXBNl.net]
たしかに
勝手にNGしとけば十分で煽るように宣言するは意味はまったくないね
擁護した俺が悪かったごめん

855 名前: mailto:sage [2021/02/22(月) 19:57:55.16 ID:R3R68rti.net]
>>831
認めましょう

>>838
私の意見に一番近いですね
私は、馬鹿な私の意見を見たくない人も多いと想定しており、馬鹿な私が発言するときは馬鹿の印としてトリップをつけるようにしています、それだけは確約しますので、後は好きなように NG に入れていただいて結構ですよ
私はそういう人に干渉するつもりはありません

856 名前:デフォルトの名無しさん [2021/02/22(月) 20:02:59.96 ID:5Ezd+ZoO.net]
そういう書き込みを見ると、あわしろ氏よりQzのほうが大人に見えるなあ。
まあでも、あわしろ氏には技術評論社がついてるからね。
謝っといたほうが良いんじゃないの?

857 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 20:52:21.84 ID:jfkpe4Eh.net]
>>834
俺も以前質問したら、明らかに見当違いなマウント取りたいだけの回答が来て、言い返した時
君みたいな事言われたよ
回答くれるのは有難いが・・・ねぇ。
まぁそういうのはスルーしろ、ってんならまだわかるけど

ちなまともな回答くれた人には礼言ってるからね

858 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:08:29.88 ID:51epSMYu.net]
知らんがな。キミの意見だけ聞いてその時どっちに問題があったかどうやって判断すればいいんだよ

859 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 21:18:11.70 ID:jfkpe4Eh.net]
そういう話じゃねーよ

860 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:38:10.30 ID:6MWC7t1x.net]
あるクラスのメソッドを他所で借りたいというか使いたいときって移譲(インスタンス化)するかコピペするしかないの?



861 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 00:41:49.01 ID:Z5ZYenTn.net]
>>844
メソッドをクラスから分離してテンプレート関数にすれば、クラスの継承関係がなくても使えるので便利。

862 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 01:01:30.38 ID:48JMuLBY.net]
>>844
メンバアクセスしていないならstatic関数にしてクラス名::メソッド名()で呼べる
ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど

あと継承する手もあるけど「借りたいから」程度の理由で場当たり的にやると確実に泥沼化する

863 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 04:11:59.35 ID:kBU50DXM.net]
>>846
> ただメンバアクセスしていない時点でその関数は本当にそのクラスに属すべきなのか再考したほうがいいけど
極論、引数をとって返り値を返す関数だけで全てのことが実現できますよね?
そう思ったらクラスのメソッドにするよりも何でもクラス外の関数にする方がお得というか楽な気がしてしまいます

864 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:21:43.52 ID:7kgSemXY.net]
そのとおりで極力フリー関数にするべき
(非静的)メンバ関数というのはデータメンバーの一貫性を保つためだけに使うもんだよ

865 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 07:27:00.90 ID:ex5XjLGm.net]
>>847
"メンバアクセスしてない"てのが重要だと思うよ
実際、非staticではなくstaticなメンバ関数にしたい場面てあんまり無い(外の関数と大して変わらんから)

>>848みたいなのはオブジェクト指向も理解出来てないド素人が玄人ぶってよく言うんだよなぁ・・一応釘だけ刺しとく

866 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:19:26.69 ID:kBU50DXM.net]
なんかOOPの行き着く先みたいな話してるな

俺も関数が引数と返り値としてメッセージを渡し合って協働していく方が洗練されてると思う
必然、その方が副作用も少ない

867 名前:デフォルトの名無しさん [2021/02/23(火) 08:29:56.96 ID:Z5ZYenTn.net]
staticなメンバ関数には、名前衝突しにくい、msvcのインテリセンスのような入力支援を得やすい、という恩恵はある。

868 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:30:00.72 ID:u3MMsI1X.net]
メッセージ・・?
何の言語の話してんだ

869 名前:デフォルトの名無しさん [2021/02/23(火) 09:47:50.72 ID:DwnxTU4/.net]
オブジェクト指向の概念の話をするときにメッセージって言葉使いませんか?
C++ならメッセージ=メンバ関数
Javaならメッセージ=メソッド
言語によって呼び方が違うから概念的な話のときはメッセージといったほうが通りがよい

870 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:07:32.09 ID:B3ih21Pc.net]
>>849
「オブジェクト指向も理解出来てないド素人が玄人ぶってよく言う」
の意味がさっぱりわからん
>>848の表現に一切ケチつけられる要素ないと思うけど



871 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:15:54.38 ID:gTQJYaBt.net]
> データメンバーの一貫性を保つためだけに使う

いったい何が言いたいんだろう
他人に分かり易く言えないのは自分が解ってないからというケースがある

872 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:18:06.26 ID:B3ih21Pc.net]
> データメンバーの一貫性を保つためだけに使う

この表現で普通に分かるけど
分からん人もいるのね了解

873 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:20:33.46 ID:NIjAanwq.net]
メッセージが何のことかわからないのはワロス

874 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:21:51.05 ID:gTQJYaBt.net]
>>856
でか口は具体的に説明できてからぬかせ
このハッタリ野郎

875 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:22:34.65 ID:7kgSemXY.net]
データメンバに対して想定した扱い方だけをさせるようにして予期しない状態の発生を防ぐため、って言えばお気に召したかしら
普通はそれを短く「一貫性を保つ」って言うのだけど

876 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:31:05.01 ID:u3MMsI1X.net]
>>853
使わない、というか使うな誤解を招くから
SmalltalkとかObjective-Cならわかるけど
C++やJavaのそれはメッセージングではないと考えるのが普通(そう見做せないわけではないが

877 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:33:09.34 ID:B3ih21Pc.net]
>>858


878 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:34:51.99 ID:gTQJYaBt.net]
>>859
1行目は納得
2行目の主観論には付き合ってらんね

879 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:37:31.33 ID:B3ih21Pc.net]
>>860さんに同意で
C++やJava界隈だと明確に避けてると見てる
メッセージってのは

880 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 10:49:29.89 ID:7kgSemXY.net]
ごめんねおじいちゃん知らない表現を使われただけでそんなに拗ねるなんて思わなかったんだ



881 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:07:54.70 ID:u3MMsI1X.net]
いや、悪いけど>>859を以って
>データメンバーの一貫性を保つためだけに使うもんだよ
などと言い切れるのは経験不足と見られても仕方ないと思うよ学生ちゃん

882 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:13:43.78 ID:j4L8+y6t.net]
おじいちゃんとか学生ちゃんとか、おまえらマウンティングしながらじゃないと会話できないのかw

883 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 11:54:07.11 ID:oVEFpcof.net]
このスレは特にそういうの多いよね

884 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 12:46:58.74 ID:HLi0yp23.net]
昔からこのスレは特に酷いよね
なぜマウントの必要があるのかは少しだけ興味深いけど

885 名前:デフォルトの名無しさん [2021/02/23(火) 13:21:23.20 ID:+0nZ2NLW.net]
Linuxを使う以上、C++を嫌わないとダメだろ。

886 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:45:38.11 ID:iu17pC6m.net]
>>857,864
いや、メッセージはわかってるけどなんでC++スレで?
って話だろ
>>860の言うようにC++界隈ではあまり使わんし
単にイキってるだけにしか見えんw

887 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:46:51.42 ID:iu17pC6m.net]
>>865
どういう理由で経験不足と判断したか言ってみ

888 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:47:30.93 ID:alqL+AST.net]
オブジェクト指向に関しては、今の人は、昔はメモリが高価だったとでも思っておけば良いよ。

889 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:53:26.39 ID:UMWafFvJ.net]
>>823
レスdクス大儀であった
自己解決しますた、
https://ideone.com/k76kj5

890 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 13:59:21.85 ID:UMWafFvJ.net]
一貫性というのはオブジェクト内部の整合性のこ
とを言いたい
のでは…
※ 個人の感想です



891 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:03:58.66 ID:UMWafFvJ.net]
C++のメソッドの呼び出しをメッセージと言い出すとウィンドウメッセージと紛らわしい(小並感
ていうかC++においてメッセージと言えるのはメソッドの「呼び出し」であってメソッドそのものではない
(例えば)メッセージ自体は継承メカニズムとは独立の概念なのだから
※ 個人の感想です

892 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:10:51.07 ID:HLi0yp23.net]
Smalltalkはほぼ知らんけど
メッセージ式ってのは
セレクタ+引数のことだったはず
いやこれどうでもいいか

893 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 14:18:47.72 ID:UMWafFvJ.net]
ていうか今にして思えばstd::shared_ptr<IFoo>がIFooのインスタンスに対する所有権を適切に移譲したり管理するので
std::shared_ptr<T>に持たせることにした時点でIFoo自体がリソースに対する所有権を管理する必要はなさげorz

894 名前:デフォルトの名無しさん [2021/02/23(火) 14:29:34.84 ID:+0nZ2NLW.net]
smalltalkなんて誰も使わないのだから、アジソンウェスレイのオブジェクト指向プログラミング入門にそう書かれていたからという理解で良いのでは?

若者もいるので説明しておくと、書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。
この本は何処の書店にも並んでいたので、スレの高齢者全員が読んでいます。
この本しかなかったんですよ。
良い本だとは思いませんが、30年たった今でも古書に値が付くはずです。

全員が読んでるので、全員が知っているかのように錯覚する人もいるって事です。

895 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:09:16.56 ID:CS53pw6I.net]
C++のオブジェクト指向でメッセージングのワード出してくるのは
継承を説明するサンプルコードで動物の階層もちだしてくるのと同じ功罪がある
理解のとっかかりにはいいが、リアルな実装の段階ではそういうポエムみたいな話は忘れたほうがいい

896 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 16:11:25.59 ID:feF5fzNV.net]
メッセージ(笑)とか頭おかしい奴が言いそう

897 名前:デフォルトの名無しさん [2021/02/23(火) 16:16:12.25 ID:+0nZ2NLW.net]
>>879
功もあると御自分で書かれているのでは?

898 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 19:10:57.35 ID:48JMuLBY.net]
>>873
これで本当にいいのか?
コピー代入演算子でムーブさせるのが本当にあなたのやりたかったこと?
std::auto_ptrはこの問題があったからdeprecatedになったんだけど

899 名前: mailto:sage [2021/02/23(火) 21:53:45.68 ID:tPF8d5Rx.net]
>>878
>書店で書籍を買う時代があって、書店に並ばなければ書籍の存在自体わからなかったのですよ。

私の若い頃を思い出します。
当時、神戸の一番大きな本屋さんでは、どうしたわけだかコンピューター関連書籍の部分だけは黒山の人だかりで、いつも二十人くらいがみんな立ち読みしまくっていて、そういう人ごみを押しのけて本を探さなければならなかったくらいでした
最近右翼になった数学者・藤原正彦氏によれば、もっと古い時代には町の小さな本屋さんであっても普通にそんな状態だった、ときいています、とても信じられませんが‥‥

そういうわけで、アマゾン・ウェルカム!

900 名前: mailto:sage [2021/02/23(火) 21:57:00.55 ID:tPF8d5Rx.net]
>>875
私は例のペゾルド教本を何とか C++ に適応させたくて、ペゾルド本の WM 処理・巨大 switch 文を C++ に適合させようと未だに四苦八苦していますが、やっぱり MFC に移っちゃったほうが楽チンなんでしょうか?



901 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:05:53.75 ID:u3MMsI1X.net]
>>871
あまりに一面的な見方やろ
>>848はカプセル化も多態も、上で話してた関数オブジェクトさえ否定する暴論
よほど拒否反応があるんだろうなー、と

902 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:07:42.70 ID:HLi0yp23.net]
否定したように見えちゃってるんだな
いろんな人がおるな

903 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:15:00.14 ID:iu17pC6m.net]
>>885
まあ
> (非静的)メンバ関数というのはデータメンバーの一貫性を保つため「だけ」に使うもんだよ
の「だけ」に引っかかってると思うんだけどそっちの方がどちらかと言うと暴論に見えるよ

904 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:20:52.65 ID:u3MMsI1X.net]
まぁ関数オブジェクトはある意味当てはまってるかもしれんと思うが
>>887
そっちも根拠書いてね

905 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 22:28:42.45 ID:iu17pC6m.net]
>>888
>>886が言うように「否定」はしてないと思うよ
ってことね

906 名前:デフォルトの名無しさん [2021/02/23(火) 22:44:54.86 ID:H7IAWcv9.net]
[selector message]

Objective-Cが良かったな。

907 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 06:48:21.60 ID:Vo6CI9FQ.net]
>>884
やってみるとわかるけど、MFCと同じものを自分で作ってる感じになるね
ARM C++時代に作るとああなるんだけど、
今どきのC++20で作るとどうなるのかは興味深い

908 名前:はちみつ餃子 mailto:sage [2021/02/24(水) 15:54:28.46 ID:EZ8EgbLC.net]
現代的な Windows のフレームワークとしては C++/WinRT に力が入ってるみたいなんで、
今からはこれを使った方がよさげ

909 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 17:47:00.67 ID:T43vsud+.net]
P/Invokeともこれでおさらば、
と言いたいところだがネイティブC++をwrapするC++/WinRT自体はCLR上の言語なんじゃなかったっけ…
違ったっけ…

910 名前:デフォルトの名無しさん mailto:sage [2021/02/24(水) 20:59:30.49 ID:T43vsud+.net]
C++/CXと混同すた、orz



911 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 00:40:25.02 ID:hxonNlh3.net]
C++/CLIだよ(小声

912 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 12:27:48.18 ID:Kp+Bp4Dl.net]
int (int)型のコールバック関数ポインタにて、一応呼ばれるのでnullはマズイけど不要なので空にしたいという場合に
int () { return 0; }という引数が一致しない空関数へのポインタを渡すとまずい事になるんでしょうか?
低レベルの知識がないのでよく分からないんですが、スタックの巻き戻しとかでズレが生じるとかありそうな気がしています

913 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 14:45:58.57 ID:ziL/azOs.net]
>>896
使われている ABI による。
x64 環境なら Unix (系の多くの OS) でも Windows でも引数は整数4個分までは
レジスタで渡されるんで、スタックの整合性は壊れないはず。

914 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 15:12:23.79 ID:bxBNuN1v.net]
>>896
スタックは呼ぶ側で処理するからズレないよ
でないと可変長引数とか実現できないし

>>897
そんなもんは処理系やオプション次第

915 名前:デフォルトの名無しさん [2021/02/25(木) 15:36:41.54 ID:SLTnVXDN.net]
静的解析ツールやコード分析で警告が出るだろうから直したほうがいいと思うけどね

916 名前:はちみつ餃子 mailto:sage [2021/02/25(木) 15:44:39.43 ID:ziL/azOs.net]
x64 の一般的な ABI ではもう様々な呼出し規約を使い分けないようになってる。
(cdecl と stdcall が混在していた Windows が例外的で
他は 32bit 時代からかなり統一されていたみたいだけど。)

まあそれはともかくとして、
実際には不要でも適当な値が渡るようにして型を併せるほうが良いとは思う。
不整合を残しておくと強い最適化をかけたときにわけのわからないことになりがち。

917 名前:デフォルトの名無しさん [2021/02/25(木) 16:08:57.78 ID:0Aa2beUH.net]
はちみつは見所がある弟子にしてやっても良いと、あわしろ氏が褒めてた。

918 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 16:57:46.00 ID:2x/2jVQO.net]
>>896
古いCから新しいC++まで含め、素朴な観点では原則的には大丈夫では有るが、
あなたが言っているように例外処理が入ってくるとどうなるかは不明。
C/C++では型を厳しくしているのは、そういうことを避けるため。
あなたのやろうとしていることは、関数アドレスをキャストしなくては
関数ポインタへの代入できない。
このようにキャストすることによって、アーキテクチャ依存となり、不具合が起きる
確率が0でなくなる。

919 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 17:00:32.01 ID:2x/2jVQO.net]
>>902
[補足]
例外処理はとても複雑なことが行なわれることがある。
関数ポインタに代入する際に関数シグネチャが異なるものをキャストして入れると
どうなるかは処理系依存となる。
関数アドレスを同じビット数の整数型の変数との間で相互にキャストするのは構わない。
関数なのに、異なるシグネチャのものを代入しあうのは問題。

920 名前: mailto:sage [2021/02/25(木) 19:04:36.48 ID:FipxGJhu.net]
>>891
そうですか‥‥
いまどき MFC の教科書が存在するかどうかは疑問ですが、やっぱり MFC に戻るしかないのですか!
でも、あのドキュメント=ビュー構造はいまだによく理解できないですね‥‥



921 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 19:52:59.02 ID:0YuzuhSG.net]
c/c++で型が厳しい?何言ってんだろ

922 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 22:34:17.62 ID:GHceiqHX.net]
C++は一応明示的に破ろうとしなければ結構ちゃんとチェックしてくれる
C? 知らんな

923 名前:デフォルトの名無しさん mailto:sage [2021/02/25(木) 23:10:04.64 ID:NZmV0r2o.net]
>>902-903
「引数が一致しない」という素朴な観点でアウトだろうし例外処理関係ないだろ。

924 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 02:06:22.71 ID:uELWbBar.net]
>>907
でも、引数を関数内で参照して無い場合、素朴な呼び出し規約的には問題ない。
例外処理の unwinding は仕様が難しいので良くわからないと言うこと。
実際は大丈夫かも知れない。

925 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:24:52.91 ID:gCkWSKrb.net]
int (int) { return 0; }で埋めて何が嫌なのかが分からないからな
特別な事情があるなら動かすハードとかの仕様調べろ
そんなのないなら素直に安全に書いとけ、でいいじゃん

926 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:52:48.02 ID:M2eccXrm.net]
>>904
一つのデータを複数のウインドウで見るって考え方だよ
テキストエディタでもスプリットバーやマルチビューは普通に使うだろ

927 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 07:57:36.04 ID:M2eccXrm.net]
>>909と同意見だ
[](int){return 0;}では何がダメなのか
説明がないとこれ以上何とも言い様がない

928 名前:デフォルトの名無しさん mailto:sage [2021/02/26(金) 12:52:04.91 ID:X0njcRoR.net]
cは互換型の概念がガバガバだからなあ…
typedefは当然互換だけど、structは中身のpodが同じでも(typedefしなければ!)タグ名で弾けるので、一々structに包めば論理ミスを防ぐこともできなくもない

929 名前:デフォルトの名無しさん [2021/03/01(月) 02:34:24.68 ID:sakgt9rY.net]
規格書を読んでみんなC++覚えてたの?
入門用のドキュメント読んだら規格書読むべきですか?

930 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 06:09:14.80 ID:N/bll+Sf.net]
趣味のC++オタクでいいんならそれでいいと思うよ
C++を実用したいならそういうのはやめとけ、というかまず手を動かせ
その上で疑問が出てきたら調べるのはアリ



931 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:15:36.61 ID:770X86Bb.net]
問題に遭遇したときに疑問として感じ取れる人ならいいんだが、
謎理論を自分の中に構築して邁進してしまうやつも
少なからずいるので安易に手を動かせとは言いにくい。

932 名前:デフォルトの名無しさん [2021/03/01(月) 09:31:54.75 ID:Qi7MAN5S.net]
各コンパイラに固有の実装依存があるから、結局は試すしかない。
PGが規格と違った動きをしているコンパイラをなじったところで、勝利するのはPGではなくコンパイラ。

933 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 09:41:00.95 ID:770X86Bb.net]
商用コンパイラがその商用コンパイラがサポートしているはずの規格と違う挙動だったらそれは文句言ってもいいだろ。

934 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:44:14.28 ID:kUoELfRz.net]
文句を言うのはいいけど、規格書を盾に納期は延びないのよ。

935 名前:デフォルトの名無しさん [2021/03/01(月) 09:46:40.02 ID:Qi7MAN5S.net]
>>918
それな

936 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 09:52:30.22 ID:nOTghizW.net]
まあその通りなんだけど、誰かが言ってるからコンパイラ改良されるわけで

937 名前:デフォルトの名無しさん [2021/03/01(月) 09:52:48.41 ID:Qi7MAN5S.net]
PGは、コンパイラが規格準拠してくれる日のために #if #endif で区切ってすぐに切り替えできるようにしておくことしかできない。
dirent周りのカオスを知っているなら、規格準拠をうるさく言う虚しさを理解しているはず。

938 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 10:34:18.93 ID:770X86Bb.net]
商用コンパイラを商売で使うならサポート契約とセットじゃねーの?
使い倒さないと契約料丸損やないけ。

939 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:42:44.99 ID:N/bll+Sf.net]
>>922
いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?

ちな俺はVCのバグ報告(テンプレート周りとか気付かれにくい部分)何度かしてるが、直るのは早くても半年後だよ
仕事でなくともとりあえず何とか回避するしか無いし、報告するにも再現性あるコード提供しないと迷惑かける
皆お前みたいに暇じゃねーんだよ

940 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 10:52:02.51 ID:f1Pg/hcl.net]
>>923
こういうのって結構な割合で最適化の不具合だったりするよね
特に組み込み系だとしょっちゅうそういうのあるから、該当箇所だけ最適化レベル下げて通したりしてるわ
もちろん不具合の報告もしてるけど修正まで時間かかるからね



941 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:11:13.26 ID:770X86Bb.net]
すぐにとはいかない現実があるのはわかるが、サポート契約の内容を本当に把握して言ってる?

商品の瑕疵に対応するのはあたりまえだからサポート契約ってのはそれ以上のものだよ。
契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。

VC のバグ対応がよくないならそれは VC のサポートチームが良くないってだけだ。

942 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 11:12:35.72 ID:Qi7MAN5S.net]
#if #endif マクロがない言語は無駄にネストするのが欠点だと思う。

943 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 11:38:15.03 ID:770X86Bb.net]
#if での切り分けだってネストはありうるけど、
それが見た目に分かりづらかったりするし、
いいことばかりじゃないよ。

944 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:12:42.88 ID:CPl5J/qU.net]
一昔前なら effective c++ くらいは読もうってとこだったが、
今はどうだろうな。efective modern c++ でも足りない感じがする。
てかc++やるなら自分であれくらいのポイント抑えるくらいの準備が必要かもしれんという地獄。

945 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 14:23:24.82 ID:Qi7MAN5S.net]
スマートポインタが標準規格に採用されたC++11とそれ以前では、作法が随分違ってくる気がするよ。

946 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 17:34:12.59 ID:oQ7wqd0O.net]
>>917
「文句」みたいな感情的なものじゃなく
ドライにバグレポだ
再現コードだけじゃなく回避方法もつけて

947 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 20:24:36.67 ID:YhH9VVk1.net]
>>923
> いつも思うけど、お前仕事で書いたことねーのに何でそんな偉そうなん?

やめたれw

948 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:14:48.91 ID:Dkl+jirL.net]
>>925
> 契約内容によるけど、コンパイラのバグである証明とか全部してやる必要はかならずしもなかったりするぞ。
無いかも知れんが、「なんかおかしいんです~」でバグの特定がめっちゃ困難なことはプログラマーは身を持って知ってるから
そもそもバグの解決が遠のいたら苦しむのは自分だし

949 名前:デフォルトの名無しさん mailto:sage [2021/03/01(月) 21:56:02.87 ID:N/bll+Sf.net]
>>931
いや、純粋な言語仕様の話なら別に偉そうでもいいのよ正しい事書いてくれてるなら

950 名前:はちみつ餃子 mailto:sage [2021/03/01(月) 23:56:40.27 ID:770X86Bb.net]
>>932
雑な報告でいいというわけではないが、
サポート契約の利用率が非常に低い (値段は高いのに!) というのはよく聞く話なんで、
報告して対応待ちというだけじゃなくてもっとプロジェクトに巻き込んでいいはずなのになという感じ。

C++ の話じゃないけど、 LispWorks (Common Lisp の処理系) のバグ報告をしたら数日中に暫定パッチが
出てきたりとかワークアラウンドの提案とかもしてくれるという事例を利用者のブログで
見たことがあって商用処理系ってすげーなーと思ってたんだが、
そういう対応のほうが例外的に良すぎるだけなんかね?



951 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:07:05.02 ID:n7F7EI9c.net]
>>934
そういう対応はマイナーメーカーの方がいいことが多いよ
MSの対応が悪いとは言わないけどユーザーがアホほど多いから処理系のバグにぶち当たる可能性も低いし

952 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:37:21.45 ID:wbC9damv.net]
スケジュールきついだけかもよ
バグがあるのわかってたけど数日かかりそうだから放置
バグ報告が出たから優先度上げて修正

953 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 02:03:18.16 ID:+qoPTldB.net]
そもそもユーザー数がアホみたいに多くてあらゆる層で利用されてるようなコンパイラだと
バグ報告あがってきてもまずそれほんとにバグなの??
ていうかまたコイツのリポートか!!!もしかしてただのいやがらせとかじゃないの??とか
色々まず疑ってかからないケースも半端なく多いだろうしな

954 名前:デフォルトの名無しさん [2021/03/02(火) 05:18:47.46 ID:+XzLrHKh.net]
>>923
あわしろ氏は、はちみつのことを褒めてたけどな。
見どころがあるから弟子にしてやっても良いと。
月一万で弟子にしてやるぞ。

955 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 05:46:06.48 ID:eqvY2Z+d.net]
>>934
サポート契約はどんなに使い倒しても契約料が戻ってくるわけじゃない
自分が頑張ってインカムを増やすのが「元を取る」ということだ

956 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:15:09.36 ID:1/ifTUd4.net]

957 名前:rel="noopener noreferrer" target="_blank" class="reply_link">>>934
VSのサブスク(旧MSDN)入ってる企業なら優先的に対応してくれるかもしれんけどね
ただVS2019の更新は数日とかのスパンでは来てないやろ(しかもベータを経てからじゃなかったか?
Xcodeのclangなんかはもっと遅い
そのLispWorksとかいうのは例外的だろうね

で、みんな回避方法くらいは自分で見つけるし直るまでの間何もしないわけにはいかんからな
[]
[ここ壊れてます]

958 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 06:43:01.65 ID:auUulvn4.net]
コンパイラを作っている人は他の誰よりも標準規格に詳しい。
コンパイラが規格準拠できないのはなんらかの事情がある。釈迦に説法はカッコ悪い。

959 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 11:52:24.56 ID:K6P+Ktrz.net]
cl書くけどlispworksは資料もすごいのでお世話になる、中の人がlisp界隈で愛称で呼ばれるくらい精力的なんで、ただそうなだけだと思う
まあフリーな処理系使うけどな
しかしニッチ過ぎるlispのどこで儲けてるのやら全く謎

960 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:42:51.15 ID:NRNfCe84.net]
言語としての機能はともかく、lispはマスコットがきもすぎ



961 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:45:21.36 ID:NT1aj9pH.net]
言語を作った人の本を読むのが一番良い

962 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 22:50:53.20 ID:NT1aj9pH.net]
ていうか言語を作った人の本に載っているサンプルコードが
言語の思想を一番正確に表現しているはず……

963 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 04:56:27.42 ID:W4jJ9FhP.net]
禿の思想はC++03までだろ
頑なにラムダ式とrange-based-for-statementを拒み続けたところまで
4th editionでasyncを持ち上げてたけどその後の展開がアレだし

964 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 06:51:09.01 ID:gVMBPcTA.net]
>>943
googleさんのImage for ...サジェストに
caution: made with alien technologyって標語の例の生物のロゴが出てきやがるのは風評被害
rplacd、dpb、fmakunboundとかほぼほぼ英語だし明らかにエイリアン語ではない
cも大概だしな

965 名前:はちみつ餃子 mailto:sage [2021/03/03(水) 14:59:21.41 ID:ymUPAFSA.net]
>>943
C++ も似たようなもんだろ
https://www.pixiv.net/artworks/31803602

966 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 16:32:38.43 ID:wyPUKIrf.net]
うわ下品な絵

967 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 19:08:40.13 ID:7D0nPsrG.net]
>>948
これは・・意外と嫌いではない・・w

968 名前:デフォルトの名無しさん [2021/03/03(水) 19:15:48.54 ID:zRjA/+hm.net]
オライリー表紙絵みたいな動物の絵じゃないと、しっくりこない。

969 名前:デフォルトの名無しさん [2021/03/03(水) 22:54:00.65 ID:on2XNxxF.net]
オイリー禿山。

970 名前:デフォルトの名無しさん [2021/03/04(木) 11:11:37.69 ID:J6mhpq5t.net]
禿と禿(かむろ)の違いが判らない



971 名前:デフォルトの名無しさん [2021/03/04(木) 13:03:17.03 ID:K63vSywh.net]
カムロは半グレ

972 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 13:36:37.45 ID:Ep7EXP13.net]
c++は仕事で書いてない人ほど好きな言語

973 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 14:22:00.04 ID:qn7RQ+4J.net]
と、仕事で書いてないやつが言う

974 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:32:17.13 ID:9GqbczPP.net]
二人以上でやるとOOPの思想的違いがぶつかって最悪破綻するんだよな

975 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 15:33:34.57 ID:9GqbczPP.net]
で、仕事でやるときは、最下層にレベル合わせないとモノが出来上がらないしね

976 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 17:35:44.00 ID:Ep7EXP13.net]
自分一人ならさぞかしすごいソフトウェアが書けると思ってるんですね。すごいですね。

977 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 19:51:50.17 ID:cqTSJRKn.net]
>>955
それあると思う
アマチュアにこそ好かれる言語だと思う(;^ω^)

978 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:33:50.17 ID:Xyn3qjeu.net]
constexpr制限きつすぎ

979 名前:デフォルトの名無しさん mailto:sage [2021/03/04(木) 20:47:45.23 ID:FQXwH3J2.net]
C++11の頃ならともかく今そんなにきついか?

980 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 05:58:33.51 ID:BcBZQBoi.net]
C++20、情報過多でしんどい



981 名前:デフォルトの名無しさん mailto:sage [2021/03/05(金) 06:14:45.51 ID:ddot6YlQ.net]
std::variant を使い始めたのですが、例えば variant の中身が4種類あって、そのうちの
2種類とか3種類だけに対し共通なコードを実行したい、ときにはどんな書き方がありますかね?
全部に同じコードを適用するなら std::visit() でいいわけですが。

982 名前:デフォルトの名無しさん [2021/03/06(土) 13:33:27.36 ID:bGzUu7RI.net]
apply

983 名前:デフォルトの名無しさん mailto:sage [2021/03/06(土) 20:35:43.51 ID:aLQdimbx.net]
>>964
共通処理を別の関数にまとめたうえで、visitする時に各型のオーバーロードでそれを呼び出す
visit時にジェネリックラムダを使って内部でif constexprで分岐
visit時にオーバーロードされた関数オブジェクトを用いて、共通処理が必要な型について呼び出されるところをテンプレートにして、他は型を指定しておく
visit時にオーバーロードされた関数オブジェクトを用いて、コンセプトで分岐
.index()とif文で書き分ける

984 名前:デフォルトの名無しさん mailto:sage [2021/03/07(日) 23:48:37.36 ID:B2szmBNH.net]
>>962
msvcのバージョン古くて。
c++14に対応してない。c++11でやってるイメージ。再帰でどんどんソースが汚れる。

985 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 13:31:16.40 ID:b6BdhXEV.net]
int getX() const { return mX; }
みたいな関数があるクラスのメンバ関数内でmXを参照するときに
mX と getX() のどっち使うのが一般的な書き方?

986 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:04:43.65 ID:8PvVb8hX.net]
>>968
確かにこれはいつも悩むなー
きっとアクセサ使うべきなんだろうけどね
頻繁にアクセスするならローカル変数に代入した方が早くなったりするし、一般的にクラス宣言に書いてるのもはインライン展開されてコスト的には変わらないだろうしね

むしろ他の言語のときにインライン展開なんてされないからめちゃくちゃ悩む

987 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 14:10:23.61 ID:mzPrKkeu.net]
プロパティがないからな

988 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:16:37.41 ID:ZK+TZHvn.net]
なんでもかんでもgetterとかはJAVAから来たのかとか思ってしまう
取得時に演算しないならそもそもgetterなんか作らない方が分かりやすいと思うのだが

989 名前:デフォルトの名無しさん [2021/03/10(水) 15:36:26.11 ID:pTnyTINd.net]
>>971
C#みたいなのはそれはそれでわかりにくいから、getterも関数がいい。

990 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 15:47:37.68 ID:qvIOwUBa.net]
無理にgetter作れってのはアホだなと思うけど、まあgetterくらいならそこまで問題になることもないかなとは思う。
やたらめったらsetter作ってたら死ねとは思うが。



991 名前:デフォルトの名無しさん [2021/03/10(水) 15:50:25.97 ID:pTnyTINd.net]
const 属性をうまく使えば、getterを減らしても安全にコーディングできる。

992 名前:デフォルトの名無しさん [2021/03/10(水) 15:55:29.61 ID:SA6nop04.net]
オブジェクト指向に侵されてるとプロパティが欲しくなるだろう。

しかし、本物のC++は知っている。

それは間違いだと。

993 名前:デフォルトの名無しさん [2021/03/10(水) 19:38:24.39 ID:pTnyTINd.net]
クラス外からは以下のようにconst 属性をつけてアクセスさせれば心持ち安全になる。
const MyClass& getInstance() const { return *this; }

994 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 19:39:09.45 ID:pDjVp4Qi.net]
>>968
フックを残すかどうかだな
abortとterminateみたいに

995 名前:デフォルトの名無しさん mailto:sage [2021/03/10(水) 20:37:43.62 ID:wDDQFNF0.net]
JavaBeans方式のプロパティはリフレクションあってこそのものなのにC++で真似してもなー。

996 名前:デフォルトの名無しさん [2021/03/10(水) 21:11:42.58 ID:98wPPrPT.net]
JavaFXのプロパティは観測可能になってたすごかった
データバインディングとかリアクティブとかプログラムの書き方もずいぶん変わったよね

997 名前:デフォルトの名無しさん mailto:sage [2021/03/11(木) 01:07:59.93 ID:6JW0gImZ.net]
そうだね流石Oracleだね

998 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 00:57:21.49 ID:9IOLdfat.net]
https://ideone.com/0FptIo
だれか、剰余の符号関係を教えてくれ。

999 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 01:32:57.35 ID:I1KnPozY.net]
たぶんCから変わってないよな?
(a/b) * b + a%b == a
以上に説明できることはないと思うけど
他になにかあるの?

1000 名前:はちみつ餃子 mailto:sage [2021/03/12(金) 03:04:36.84 ID:ByeOJ4Y7.net]
符号の向きは C++11 から仕様に入った。
(それはでは処理系定義)
C では C99 から。



1001 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:30:25.58 ID:GKbHXc3G.net]
プロパティーは継承できたりインターフェースとして定めたりできるのが強み
だがそれしか強みが無i

しいて言えばリフレクションが使える言語なら、getterとsetterを同一の識別子で紐付いた形で列挙できる
というのわある鴨、(関数型のシグネチャでgetterとsetterを与えたらそうはいかん

1002 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 08:36:14.31 ID:GKbHXc3G.net]
P=Q・X+R (0≦R<Q)
ので除数が負の%とか定義不能
被除数が負の場合はしらそん
多分Rが非負でなければならないから多分XはPより負の側に振れねばならないのではないか

1003 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 14:00:09.40 ID:9IOLdfat.net]
未定義っぽいですね。ありがとう。

1004 名前:デフォルトの名無しさん [2021/03/12(金) 16:14:00.58 ID:EbD8nxkK.net]
C/C++に限らず界隈では「負数の剰余をとるべからず」という伝承がある

1005 名前: mailto:sage [2021/03/12(金) 20:35:32.66 ID:IXuMqCK3.net]
>>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

自分で適当な剰余を定義したっていいのですよ

1006 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 14:10:18.80 ID:9o031KiD.net]
0へ丸めるtruncate算だったかと
mod算するときに結構困るのでユークリッド算関数は常にヘッダに入れてる
a % 2 == 1 // -1かもしれない
まあ偶奇判定くらいなら!=0で取り繕えるけど
ネットで見かける拡張ユークリッドのトイプログラムは大体間違ってるね
負の除数を想定してないgcdならそれでいいけど、ベズー係数求める時に負の被除数を扱えないと一般解の公式で他の解出してお茶は濁せるけど
有限体やら他の体とテンプレート共有できない

1007 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 23:25:02.49 ID:H7rJK4fS.net]
ttp://open-std.org/jtc1/sc22/wg21/docs/papers/2021/n4885.pdf

1008 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 08:32:15.77 ID:j6rur0Vp.net]
静的ライブラリを作るときに-fPICを指定する必要はないよね?

1009 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 09:41:25.38 ID:mzxuOn07.net]
OSによるのでは

1010 名前:デフォルトの名無しさん mailto:sage [2021/03/22(月) 23:28:52.74 ID:iFQHROzx.net]
PICマイコン用のバイナリが吐かれる



1011 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 07:52:17.23 ID:PNXF+EC1.net]
struct a{};
struct b:private a{};
b c;
(a*)&c; //ok

この下痢糞仕様は何?
こう決まった理由が知りたい

1012 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 08:46:44.63 ID:QJMmjFss.net]
>>994
C形式のキャストを使ってるからではなくて?
どんなポインタにもキャストできると思うけど

1013 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:11:00.00 ID:PNXF+EC1.net]
reinterpret_castとちゃうで

1014 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:17:53.26 ID:R+oM8cup.net]
たとえ(int*)&c;でも通るでしょ

1015 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 09:40:19.90 ID:PNXF+EC1.net]
仮想継承にするとダウンキャストはできなくなるんで
型を無視しているのでもなさそう

1016 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:03:59.75 ID:FhOgWspo.net]
ポインタは任意のポインタに変換出来る
未定義動作になる可能性があるのはデリファレンスするコードを書いた場合

1017 名前:デフォルトの名無しさん mailto:sage [2021/03/24(水) 10:41:19.80 ID:uPqg/PBu.net]
64bitアプリで32bit整数値をvoid*にキャストしようとするとエラーになる場合があるね。
それを親切と感じることが出来れば玄人。

1018 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 74日 16時間 47分 20秒

1019 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<256KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef