19/04/01 22:24:49.84 2cPHsZN4.net
すっぱい葡萄
URLリンク(ja.wikipedia.org)
自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
それをあきらめの理由として納得し、心の平安を得ようとするものである。
フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。
3:デフォルトの名無しさん
19/04/02 01:05:02.56 /U03ydJ3.net
前スレの
やりたいことはこうかな
メンバ関数をバインドするときは&クラス名::関数名と変数を放り込むこと
URLリンク(wandbox.org)
4:デフォルトの名無しさん
19/04/02 01:47:19.91 rKGqH4gv.net
c言語でclassって使えるの?
5:さまよえる蟻人間
19/04/02 01:50:46.47 wSWhi9Oz.net
>>4
変数名として使える。
6:デフォルトの名無しさん
19/04/02 07:55:15.08 iDbW+eLG.net
柴山昌彦
URLリンク(twitter.com)
なるほど、新しい年数に「れいわ(018)」を足すと西暦か…
[GCC] error: invalid digit "8" in octal constant
[Visual C] Compiler Error C2041: 8 is not a base 8 digit
[Python] SyntaxError: invalid token
(deleted an unsolicited ad)
7:デフォルトの名無しさん
19/04/02 18:51:10.44 m0eX+8Q8.net
>>4
オブジェクト指向の何たるかをきちんと理解していれば、概念として使えなくはない。
もっとも、C 言語に限った話ではないけど。
8:デフォルトの名無しさん
19/04/02 19:17:21.52 LpV8NoZ4.net
>>4
原則、C言語ではclassは使えない。
そもそも、CをOOPの概念に対応させようとして、
classの概念(classというキーワードも)を追加したところから
始まったのがC++。
9:デフォルトの名無しさん
19/04/02 23:46:57.28 rKGqH4gv.net
vcでCString使えるよ
10:デフォルトの名無しさん
19/04/03 00:40:39.45 94cMasUZ.net
>>4
Win32API?
C++以前から(純粋OOPLな)smalltalk的な価値観をC言語に押し付けた結果。
11:デフォルトの名無しさん
19/04/03 12:59:01.63 cnGXlgmF.net
はあ?
12:デフォルトの名無しさん
19/04/03 18:43:28.55 9GPCcesD.net
テンプレートをテンプレートクラスで特殊化したい場合ってどうするの?
13:デフォルトの名無しさん
19/04/03 18:44:12.24 uuRoUePR.net
>>12
普通にテンプレートにすればいい
14:デフォルトの名無しさん
19/04/03 21:15:34.88 2lV8d+D6.net
次スレから>>2に登場人物を列挙してはどうでしょうか?
15:デフォルトの名無しさん
19/04/04 01:13:57.58 tIFeeQbc.net
VS2019来てるじゃん
まともなメモリ使用量になってる奇跡だ
16:デフォルトの名無しさん
19/04/04 01:26:19.69 NSLfK+j2.net
C++erはVS毛嫌いする人も多いけどVS2017あたりからC++対応もマジでかなり良くなってる
17:デフォルトの名無しさん
19/04/04 01:29:18.48 MCx08DTu.net
一番使えるIDEなのに毛嫌いする人はいないと思います。
18:デフォルトの名無しさん
19/04/04 01:33:25.98 kff2Ii9e.net
標準ライブラリの実装がいい加減だから使いたくない
19:デフォルトの名無しさん
19/04/04 01:33:38.34 MCx08DTu.net
4/2を選んだのはエイプリルフールを避けたからかな。
20:デフォルトの名無しさん
19/04/04 01:40:18.27 l5IgkZnr.net
>>16
そう言う輩はプログラマーではなく言語オタか、最新規格対応の入門書売って糧を得てる様な奴だけ。
21:デフォルトの名無しさん
19/04/04 01:46:00.78 tIFeeQbc.net
最近はCMakeに優しいけど標準的なビルドシステムに優しくない
clのオプションが独特すぎる
Linuxで動かない
Windows上でのライブラリの取り回しが悪すぎる
wslやらvcpkgでだいぶましになったとはいえまだ若干抵抗がある
22:デフォルトの名無しさん
19/04/04 01:48:02.16 c6BVWPCA.net
VS2017以前よりもコンパイルが速くなっている気がする。
色々細かい不満は出てくるかもしれないが、完全に乗り換える価値は十分ある。
私はVS2017をアンインストールして退路を断った。
23:22
19/04/04 01:55:45.14 c6BVWPCA.net
わかりにくかったので訂正。
VS2019はVS2017よりもコンパイルが速くなっている気がする。
デフォルトでスタックメモリ消費の静的解析をしてくれるので、
10KB以上のバッファをスタックからとるクセのある人は、
C++のstd::vectorなどへの置き換えを考える良い手助けになるなのでは。
24:デフォルトの名無しさん
19/04/04 18:08:19.41 USs/shwk.net
Qt VS toolsの対応待ち
25:デフォルトの名無しさん
19/04/04 18:37:00.98 tIFeeQbc.net
QtはCMakeでよくない?
26:デフォルトの名無しさん
19/04/04 20:38:54.64 O7o9gYjG.net
つか、プラットホームに依存しないような
プログラミングをかける奴なんてほとんどいないだろ
素人が書いたようなおもちゃをなんで他に移植しなきゃいけないんだよ
27:デフォルトの名無しさん
19/04/05 00:33:23.07 Zwa/Lf0S.net
hppファイルに実装を書いてることがたまにあって、すごく違和感があるんですけどどういうメリットがあるんですかね?
28:デフォルトの名無しさん
19/04/05 00:43:12.95 fDyBpfV8.net
配布が容易
宣言と定義が分かれないから読みやすい(人による
宣言と定義が分かれないからリンケージとかの罠にはまりづらい(場合によってはむしろODRの罠にはまる
翻訳単位が大量にある状況ではヘッダに実装したうえで少数のcppからインクルードした方がコンパイル速い
テンプレートの場合はほぼそうせざるを得ない
などなど・・・
29:デフォルトの名無しさん
19/04/05 00:49:55.23 1W3Y/f1q.net
そもそもhppファイルは実装書くためのファイルじゃないの?
templateとかで、分割コンパイルできない場合の
30:デフォルトの名無しさん
19/04/05 00:54:41.98 yOtZbpQl.net
もしかしてhppをhとcppの間の子みたいに思ってる?
Cのヘッダと区別するためにhppにしてる人がいるだけでただのヘッダ拡張子だぞ
VCだとヘッダはhになるけど
31:デフォルトの名無しさん
19/04/05 01:19:03.58 1W3Y/f1q.net
いや、そう言う流儀もあるよ
32:デフォルトの名無しさん
19/04/05 02:32:36.17 5WucuzOp.net
流儀なんか10年もしたらガラっとかわるから拡張子なんか好きにやれ
c++ではじめの頃の昔はたまにソースを .c++ で書いてるやつもいた
33:デフォルトの名無しさん
19/04/05 02:42:38.39 qwUluuCg.net
ファイルパスにプラス記号使うのは、文字コード自動判定でUTF-7と誤認されやすくなるからさけたほうがいいね。
34:デフォルトの名無しさん
19/04/05 06:43:01.93 Z6l9czOn.net
前スレのenumから文字列についてこんなのあったよ
URLリンク(qiita.com)
35:デフォルトの名無しさん
19/04/05 07:27:13.05 Lymez0qU.net
>>28
無理やりテンプレート使ってビルドを腐らせる典型的アンチパターンじゃねーか。
36:デフォルトの名無しさん
19/04/05 08:06:44.62 a4VQ1u2O.net
>>28
配布出来るようなコードかけるの?
誰もお前さんのなんて欲しがらないだろ
37:デフォルトの名無しさん
19/04/05 09:33:27.78 XIaLs/Gd.net
.C ならC++ なんてのも黎明期にはあったのう
38:デフォルトの名無しさん
19/04/05 14:59:43.19 8pIebtc7.net
>>34
ほう、すごいね、そんな方法があったんだ。
これなら、enumの定義から自動的にunorderd_mapに登録して逆変換テーブルを作るとかもできるかもね。
39:デフォルトの名無しさん
19/04/05 16:37:26.15 Axh2Vo9Q.net
なんで何でもライブラリでできるんだよ
40:デフォルトの名無しさん
19/04/05 20:58:14.82 Qo5/2ixY.net
.hは宣言だけ、.hppは実装ありって使い分けてたこともあったけどやめた
includeする方はそんなの知ったこっちゃないし、いちいちhかhppか判断させられるのが無駄だとわかった
41:
19/04/05 21:25:06.14 sL+JrEGq.net
>>40
>hppは実装あり
それは悪手なのでは?
42:デフォルトの名無しさん
19/04/05 21:28:37.12 Qo5/2ixY.net
別に全部入りって意味じゃないよ
テンプレートとかinlineとか、処理の実装も書いてますよーっていうこと
43:デフォルトの名無しさん
19/04/05 21:42:34.57 Axh2Vo9Q.net
暗黙の了解でもそんなのないだろ
hppなら少なくともC言語ではないというくらいしかない
44:デフォルトの名無しさん
19/04/05 22:05:43.09 YxBlyJP7.net
そもそもユーザーがincludeする部分は拡張子書いてないライブラリもある
45:デフォルトの名無しさん
19/04/05 22:12:58.31 Qo5/2ixY.net
だから意味ないからやめたって言ってるじゃん
意味ないし有害だよやめた方がいいよ
46:デフォルトの名無しさん
19/04/05 23:31:31.45 yvFnJ+4h.net
そもそも素人が書いたテンプレートを用いたものなんて使い物にならん
47:デフォルトの名無しさん
19/04/05 23:51:13.69 zbJZTl/M.net
じゃあ玄人が書いたモンは形式だけで分かるのか?
48:デフォルトの名無しさん
19/04/06 00:02:05.00 zp0ZZwhH.net
実装隠しても公開しても同じだぞ
49:デフォルトの名無しさん
19/04/06 00:09:06.17 tDMvjH1l.net
むしろプロの方がゴミみたいなコード書いてる人多いよね
50:デフォルトの名無しさん
19/04/06 00:22:46.49 K6S/+wtb.net
>>47
boostみたいなのをかけるのか?
51:デフォルトの名無しさん
19/04/06 00:35:20.36 zp0ZZwhH.net
小規模なライブラリに6ヶ月かけていいなら書けるよ
52:デフォルトの名無しさん
19/04/06 00:55:05.26 /WRt9p3o.net
boostで開発効率上がるとか信じてるバカが世の中にはまだいるのな。
53:デフォルトの名無しさん
19/04/06 00:58:36.65 zp0ZZwhH.net
boostのどれだよ
54:デフォルトの名無しさん
19/04/06 01:19:45.64 XiUalYkv.net
実際上がるだろ
ライブラリ使えばコーディング量減るのは当然
55:デフォルトの名無しさん
19/04/06 01:22:34.24 d3+s3AWp.net
コーディング量を減らしたいならC++使うのやめるべき
56:デフォルトの名無しさん
19/04/06 01:27:27.25 XiUalYkv.net
速くてコンパクトなソフト作るのに最適だろ。
慣れてりゃ開発速度も同じようなのLLで作るのと大差ないし
57:デフォルトの名無しさん
19/04/06 01:41:14.78 zp0ZZwhH.net
言語によって作業量が増えるとか無いから
目的に合ったフレームワークがあるかどうかが重要
58:デフォルトの名無しさん
19/04/06 01:53:28.65 d3+s3AWp.net
>>57
残念ながらあるんだよね
59:デフォルトの名無しさん
19/04/06 01:54:41.01 zp0ZZwhH.net
そっか
60:デフォルトの名無しさん
19/04/06 02:02:09.95 K6S/+wtb.net
どうせお前らなんて、数十行程度の小さなもばっか書いて、あーでもないこーでもない言ってるだけだろ
会社にもいるわ、細かいことばっか、正論言って
実際の仕事では何にもできない、言語規格ヲタ
61:デフォルトの名無しさん
19/04/06 02:06:54.68 zp0ZZwhH.net
そっかそっか
62:デフォルトの名無しさん
19/04/06 02:59:01.41 totkvsPq.net
仕事してるより細かいとこ突き詰めてる方が楽しいんだ、ごめんね
63:デフォルトの名無しさん
19/04/06 03:15:48.33 d3+s3AWp.net
>>60
ドワンゴで働いてるのか?
64:デフォルトの名無しさん
19/04/06 06:57:44.30 grJD5FiV.net
ドワンゴ今やばいしあの人も首が涼しくなってそう
65:デフォルトの名無しさん
19/04/06 07:57:21.33 /WRt9p3o.net
ドワンゴでコード書いてて江添みたいなバカに
しょうもないアドバイスされたらそらキレるだろうな。
66:デフォルトの名無しさん
19/04/06 08:47:14.06 dOsEQJqb.net
あの手の連中って小さなサンプルしか書いたことないんだろ
実際の数百万行あるようなプロジェクトなんかには
参加したことないんだろうな
67:デフォルトの名無しさん
19/04/06 09:02:21.08 jpD7ojAE.net
弁理士みたいなもんだろ。
自分じゃモノ作らないけど複雑なルールに精通してて「それじゃ通らないよ」とアドバイスする。
68:デフォルトの名無しさん
19/04/06 10:37:53.59 DWbJNRMu.net
数百万ってOSとかミドルウエアでも作ってるのか?
69:デフォルトの名無しさん
19/04/06 10:40:30.76 lEFKAYHm.net
>>68
c++なんかでosなんか作れるかよ
遅すぎる
70:デフォルトの名無しさん
19/04/06 10:52:37.36 DWbJNRMu.net
>>69
じゃあ何作ってるの?
71:デフォルトの名無しさん
19/04/06 11:08:56.61 oXBRKV1B.net
>>70
ia32
72:デフォルトの名無しさん
19/04/06 11:11:25.61 dOsEQJqb.net
>>67
作らないじゃなくて、作れないんだろ
標準ライブラリの使い方を示す小さなものは作れるけど、現実的に使用するアプリケーションはかけないんだろう
73:デフォルトの名無しさん
19/04/06 11:26:29.61 DWbJNRMu.net
>>71
Intelの奴隷
74:デフォルトの名無しさん
19/04/06 11:27:31.68 DWbJNRMu.net
>>72
で数百万行で何を参加して、そのうち何行書いたの?
75:デフォルトの名無しさん
19/04/06 11:30:01.81 g9dCbj7p.net
>>74
自動機が約1000台あるCAMで40%は書いてるよ
76:デフォルトの名無しさん
19/04/06 11:33:57.74 DWbJNRMu.net
>>75
じゃあこのスレで一番C++に詳しい人は君ね
77:デフォルトの名無しさん
19/04/06 11:47:11.69 XiUalYkv.net
どうせその数百万行のコードで意味があるのは数万行から十数万行とかだろ
後は無駄なコピペやら、標準ライブラリにある機能を知らずに毎度一から書いて水増しされた無意味どころか保守考えたら害悪にしかならんくその塊
78:デフォルトの名無しさん
19/04/06 11:52:36.82 jpD7ojAE.net
>>72
弁理士の喩えで言えば、弁理士自身が発明できなくても別によくね?って話なんだが。
79:デフォルトの名無しさん
19/04/06 12:45:48.78 zp0ZZwhH.net
どうせ納期に追われて妥協に妥協を加えたやっつけのコードを○行書きましたwとか言われても自慢にもならん
80:デフォルトの名無しさん
19/04/06 12:59:26.47 zp0ZZwhH.net
>>78
ダメだぞ
弁護士は立法の経験が無いとダメだしスポーツの評論家は一流アスリートじゃないとダメだし調理器具を作る人は繁盛してるレストランで勤務したことがないとダメw
ライブラリ開発や教材の執筆には数百万行のシステム開発と組み込みの経験が無いとダメw
ちなみに数百万行のシステム開発や組み込みの経験があると自動的にライブラリ開発者や教材の執筆者より現実を知ってる格上()だし現場のニーズを満たした理想のライブラリを作れるようになるぞ
81:デフォルトの名無しさん
19/04/06 13:01:20.04 dOsEQJqb.net
ビャーネなんて、ロクなの作ってないよなw
数十行程度のものをあーでもないこーでもない言ってるだけだろ
82:デフォルトの名無しさん
19/04/06 13:04:46.19 zp0ZZwhH.net
せやなw
建築物の工法の研究者なんかろくに家も建てたこともない雑魚w
ネイルガンの一つも使えないくせに机上でああでもないこうでもないって言ってるだけw
83:デフォルトの名無しさん
19/04/06 14:13:10.98 BcLgwe4j.net
>>80
>立法の経験が無いとダメ
つまり議員の経験が無いとだめってことか
84:デフォルトの名無しさん
19/04/06 14:25:22.19 HZH6vgE1.net
STLの美しさは時代を超越してるし、オーパーツに認定してもいいのではないか。
85:デフォルトの名無しさん
19/04/06 15:08:23.30 FeLBMWFl.net
直交性とか説明しても誰にも通じなかった
86:デフォルトの名無しさん
19/04/06 15:56:35.00 DWbJNRMu.net
ラムダ式使えない馬鹿「今まで書いたソースの行数は?」
そんなの気にしねえwwws
87:デフォルトの名無しさん
19/04/06 16:00:55.76 grJD5FiV.net
なるほどラムダ式が嫌いな奴は書く行数が減ってコードの生産量()が減るのが嫌なんだな
ボイラープレートコードを書き殴ってれば仕事したフリができる人たちは気楽っすなあ
88:デフォルトの名無しさん
19/04/06 16:07:07.88 /WRt9p3o.net
まあ実際クヌースなんかもtexプログラム作ってプログラムの大変さに気づいた
的なことは言っているしな。
偉い人でもその辺実際に作ってみると感覚が違うってのはあるんだろう
89:デフォルトの名無しさん
19/04/06 16:49:06.59 HZH6vgE1.net
コンセプト来い。
コンセプトはよう来い。
90:デフォルトの名無しさん
19/04/06 16:52:05.91 TQhcrP/j.net
>>68, >>77
こいつらみたいな世間知らずの根拠のない自信はどっから来てるんだろう
91:デフォルトの名無しさん
19/04/06 17:41:57.80 zQgZMa/6.net
>>90
そもそも世間知らずほど自信にあふれがちではある
初心者ほど偉そうだったりもする
92:デフォルトの名無しさん
19/04/06 19:26:54.62 /WRt9p3o.net
クソライブラリやクソ開発メソッドを持ち込む怪しいコンサルと一緒なんだよな。
それが押し通ることが結構あるから怖い世の中なんだが。
93:デフォルトの名無しさん
19/04/07 00:51:26.62 MFkC9rxe.net
>>90
元号もろくに変えられない癖に何が自信だあほ
94:デフォルトの名無しさん
19/04/07 01:23:19.03 27fxqR4U.net
自分より劣る存在を想定してホルホルしててもお前の実力は上がらんよ
95:デフォルトの名無しさん
19/04/07 02:59:31.42 KMX3xd+u.net
コードを書くしか能が無いというのでは
業界に名が通った有名人クラスにならない限り
コンサルに勝つのは難しい
96:デフォルトの名無しさん
19/04/07 09:59:23.22 AvqFg232.net
>>88
それソースある?
TeXの前にも色々プログラム書いてるみたいだし、そもそも大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心したらしいからTeXでどうのこうの言うのはちょっと考えづらい
あとTeX自体は今の基準だとそんなにでかく無い
ソースは24ks程度で半分以上はweave出処理される解説だし
97:デフォルトの名無しさん
19/04/07 15:25:28.13 GYBhj6UR.net
>>96
買って読め。
こんな普通に出てるものもチェックせずにクソイチャモンつけられると腹たつな。
URLリンク(www.amazon.co.jp)
98:デフォルトの名無しさん
19/04/07 15:38:44.91 7JuoUDJS.net
そんなインタビュー集までチェックするのか普通とか言われてもなぁ
99:デフォルトの名無しさん
19/04/07 16:36:39.64 Uqhse/UH.net
>>98
自分は知らないからソースくれとだけ言えばいいところを、想像で要らんことをいうから反論されるのでは?
100:デフォルトの名無しさん
19/04/07 16:41:57.11 7JuoUDJS.net
>>99
根拠書いてあるんだから反論したいなら根拠に反論したら?
101:デフォルトの名無しさん
19/04/07 17:48:00.72 OFkYw0l7.net
なるべく高級な言語でちっさいOS作ろうと思うんだがよい言語ないかな?
102:デフォルトの名無しさん
19/04/07 17:59:05.12 dyW8i1kK.net
ハードウェアによるのでは
103:デフォルトの名無しさん
19/04/07 18:12:26.51 OFkYw0l7.net
armかrisc vの64bit
32bitでもいいです
比較対象のためにc/c++でも作る予定
104:デフォルトの名無しさん
19/04/07 18:19:23.23 wdVE5f+b.net
そもそも高級言語で小さいOS作れる言語ってC言語一択じゃね?
105:デフォルトの名無しさん
19/04/07 18:20:11.20 lGwZZxlu.net
>>103
rust
106:デフォルトの名無しさん
19/04/07 19:17:40.54 rrYyxHxh.net
rustでqemuでhelloworldして満足した(´・ω・`)
107:デフォルトの名無しさん
19/04/07 19:51:30.08 VbL09+YA.net
haskell
108:デフォルトの名無しさん
19/04/07 20:29:30.34 OFkYw0l7.net
>>105
rustぐらいですかね?
全然違うパラダイムの言語で作れないもんかと
アセンブラとの相性考えたら結局cっぽい言語しか選択肢ないのかな
109:デフォルトの名無しさん
19/04/07 21:29:30.01 NOCaxMAw.net
OSつったって、どのレベルのこと言ってるかによってかわるしな
電源ONから自分でブートして起動できるレベルのものいってるならC+アセンブラ一択だし
ブラウザで仮想環境動けばいいぐらいなら、まあいろいろ変な言語系の実験できるけど
それ実際的な意味あるの?っていう話になってくるし・・
というわけでブラウザで C++ の実行環境を動かしてみるっていうのはどうだろう?
emscripten のオルタネートみたいな・・
110:デフォルトの名無しさん
19/04/07 21:58:15.58 GYBhj6UR.net
>>100
事実でもなんでもない勝手な想像を根拠とか言われても反論できんわ。
111:デフォルトの名無しさん
19/04/07 22:14:49.77 AvqFg232.net
>>110
> TeXの前にも色々プログラム書いてる
> 大学で俺ならもぅとうまくやれるとアセンブラとコンパイラを書き換える決心した
> あとTeX自体は今の基準だとそんなにでかく無い
> ソースは24ks程度で半分以上はweave出処理される解説だし
の中に事実でない箇所あるの?
112:デフォルトの名無しさん
19/04/07 22:51:26.81 KMX3xd+u.net
ソースがわからん…
113:デフォルトの名無しさん
19/04/07 23:51:05.57 WwvhmWfk.net
ソース出せと言った人が、ソースが出てきたら、ソース出すのは反則と言い出したって流れかな。
114:デフォルトの名無しさん
19/04/08 07:00:51.66 lSCOP8uB.net
どうやったらそんな頓珍漢な解釈ができるのか…
115:デフォルトの名無しさん
19/04/08 09:33:48.87 gQiHeALa.net
>>113
ソース出せと言った人が(>>96)、ソースが出てきたら(>>97)、ソースじゃなくて根拠(?)に反論しろと言い出した(>>98,>>100,>>111)って流れかな。
116:デフォルトの名無しさん
19/04/08 10:03:38.99 xZraFIBG.net
クソどうでもいい話にこだわるな
117:デフォルトの名無しさん
19/04/08 12:15:44.74 lSCOP8uB.net
引っ込みつかなくなってるんだろww
話の内容変わってるし
118:デフォルトの名無しさん
19/04/08 13:16:50.24 /rKIWzXZ.net
>>109
ブラウザの仮想環境とは何?
osなのでcpuが見えてて欲しいのだけど
ひとまずqemuで始めるつもりです
119:デフォルトの名無しさん
19/04/08 14:17:17.10 B03nMGGM.net
ビャーネストロヴストルップ先生のプログラミング入門買ったんだけど、読破した人っている?
120:デフォルトの名無しさん
19/04/08 14:40:49.88 yFytPSzO.net
いないんじゃあないの
本当に読破したと言える人間は日本人で20人しかいないと聞いた
121:デフォルトの名無しさん
19/04/08 16:02:36.28 B03nMGGM.net
>>120
毎日30分読むことにした
C++は仕事で使ったことない
122:デフォルトの名無しさん
19/04/08 17:17:23.27 nF+E8GMD.net
>>108
まずベアメタルに対応してる必要があることを考えると、選択肢はそうないのでは?
123:デフォルトの名無しさん
19/04/08 18:57:24.65 j9hUx87z.net
>>119
もはやそれは「国語辞典」読破した奴おる?ってのに近い。
124:デフォルトの名無しさん
19/04/08 19:33:22.28 RJuwHc+q.net
ストラウストラップの『プログラミング入門』って
日本語版で1100ページもあるんか。
このとっつぁん、厚い本を書きまくっとるなぁ。
そもそもプログラミング入門のお題でそんなに語るネタあるんか。
125:デフォルトの名無しさん
19/04/08 20:02:21.26 lSCOP8uB.net
実は愛読書が辞書という人はそれなりに居たりするw
URLリンク(togetter.com)
126:124
19/04/09 17:49:07.46 ZAJK3xJP.net
>>119
なんか『C++によるプログラミングの原則と実践』て本が
同じ原書の新版の和訳みたいだけど。
おまけに『ストラウストラップのプログラミング入門』よりお安い。
127:デフォルトの名無しさん
19/04/10 00:37:04.74 weZfZZPq.net
この界隈では「入門」といいながらどうみてもマニア向けの本が多いよね
128:デフォルトの名無しさん
19/04/10 00:51:58.60 uYzixBoY.net
自分が読んだ本は全て入門書扱いする人多いよね
129:デフォルトの名無しさん
19/04/10 01:02:13.57 On8YhqHc.net
上級者の評価が高い入門書ってのは本質や精神を理解し免許皆伝まで至るような道の第一歩であるものだもの
素人が何も理解しないままこうすればこうなるでおいしいとこだけいきなり得ようとするようなハウツー本とは違う
130:デフォルトの名無しさん
19/04/10 09:04:52.41 ryP68qDF.net
「本質」を語るやつは大抵アホ
131:デフォルトの名無しさん
19/04/10 10:05:45.31 cwT5VSoK.net
結論のでないどうてもいい話題に食い付くやつはアホ
132:デフォルトの名無しさん
19/04/10 11:09:30.74 dQX53bJY.net
同価格帯のXeonとThreadripperではどっちの方がコンパイル速いか知ってる人いますか?
133:デフォルトの名無しさん
19/04/10 11:21:44.56 vfHnS1kx.net
C++はF35にも使われている戦争の兵器
C++erを見たら悪魔の手先と思え!
134:デフォルトの名無しさん
19/04/10 11:25:06.35 dQX53bJY.net
それかCかC++のソースコードのコンパイルのベンチマークをCPU別で取っているサイトがあれば教えてほしいです
135:デフォルトの名無しさん
19/04/10 19:23:50.56 xcPdAU38.net
effective c++読めるくらいになればまあその先に薦める本や文献なんかは結構あるが、
そこまでにどういう本勧めればいいかは相当難しい。
とりあえずcからとか言いたいとこだがそれからeffective c++までの間に読む本としては何が良いのだろうか。
136:デフォルトの名無しさん
19/04/10 19:50:32.44 CKpW95z6.net
URLリンク(www.anandtech.com)
こんなページがあるけど。
URLリンク(www.reddit.com)
マイクロソフトが悪い、すべてマイクロソフトのせいだという意見も出てるね。
137:デフォルトの名無しさん
19/04/10 20:42:17.28 P0TERnuJ.net
タイムマシンって何言語で、書かれてるの?
やっぱりc++
138:デフォルトの名無しさん
19/04/10 21:08:53.18 EODMjdpe.net
Objective-Cだろjk
139:デフォルトの名無しさん
19/04/10 23:10:10.82 dQX53bJY.net
>>136
ありがとう最新のはこれだった
URLリンク(www.anandtech.com)
i9が価格の割に速かったコンパイルはシングルコアの周波数が正義なのか
XeonはマルチCPUするためのものだな
140:
19/04/10 23:38:55.47 57hoitEO.net
>>135
独習→acceleratedとプレC++11STL(ハーバードシルト)→テンプレート本、くらいを私は歩いてきました…
141:デフォルトの名無しさん
19/04/11 00:09:23.85 SMdbPkuM.net
>>135
どの言語でも、言語を学ぶ順番は、
1. 入門書
2. Effective 何々
3. 逆引き・レシピ本
4. (必要なら) メタプログラミング
Ruby なら、
1. たのしいRuby 第6版
2. Effective Ruby
3. 改訂2版 Ruby逆引きハンドブック
4. メタプログラミング Ruby 第2版
先にRuby で、1~3 を読んだ方が早いかも
もちろん他の言語でも良いけど、
プログラミング全般は、Rubyで学ぶのが、正確で紛れがないし、詳しい本が揃っている
142:デフォルトの名無しさん
19/04/11 00:18:20.98 +5scCOHz.net
このご時世に本読んでプログラミング勉強するってあほだろ
143:デフォルトの名無しさん
19/04/11 00:27:14.17 m6dr6a58.net
1周回ってきて本になるんだよなあ
144:デフォルトの名無しさん
19/04/11 00:36:20.66 MrjztWsK.net
Effective系以上は本でもいいと思う
145:デフォルトの名無しさん
19/04/11 00:47:54.22 XplD4nHz.net
少なくともeffective系統読んでもわけわからんレベルの人はまずはしっかりした本を読むべきと思う。
しかしc++は勧めたい本がない。。「独習c++」かな。。いいとは言いずらいがしかしほかに勧めたい本もない。
146:デフォルトの名無しさん
19/04/11 01:24:17.64 GbgLM3aJ.net
ネットさえありゃ本なんかいらんだろアホ、と思っていた時期が俺にもありました
実際ちょっと前まではそんな感じだったんだけど、最近は Google のアルゴリズムがポンコツなのか
それの裏をかく技がものすごく洗練されたからなのかしらんが、とにかく検索上位にアホみたいな
ページがひっかかる事が多い上に、ほんとうに必要な情報が見つからないことが多い
特に最近では Python 関係のネット情報はほんとどうしょうもなくぐらい腐ってるな
C++ 関係はまだかなりましな感じだが
147:141
19/04/11 02:06:27.08 SMdbPkuM.net
外人が書いた「Effective 何々」には、良い本が多い
「Rubyのしくみ」も良い。
RubyVM(仮想マシン)の内部の仕組みがどうなっているのか、など
コンパイラ・インタープリタを作る人は、読んでおいた方がよい
C++ の場合「1. 入門書、2. Effective 何々」の間隔が大きい
つまり、仕様が複雑すぎるから、入門書の範囲が大きすぎる!
独習1冊で、Rubyの1~3 まで軽く読める
常識的には、C++ の本を読めるレベルは、Rubyなど数言語をやった後の話。
とてもじゃないが、素人がやるような言語じゃない!
素人は、細かい仕様の話よりも、
まず、Ruby on Rails などのフレームワークなどで、アプリが動くまでの全体の構造・工程を学ぶのが先
各部分の細かい仕様・バグは、後でよい。
そうしないと、バグってばかりで何も作れない
148:デフォルトの名無しさん
19/04/11 03:36:50.02 Fl8qN29n.net
ネットで学ぶのがアホってドワンゴ社員のあいつの主張繰り返すのかよ
誰が仕様書読むんだあほ
149:デフォルトの名無しさん
19/04/11 03:41:11.24 m6dr6a58.net
日本語でおk
150:デフォルトの名無しさん
19/04/11 06:24:23.60 wX/7fvyH.net
>>141,147
消えろ
151:デフォルトの名無しさん
19/04/11 06:54:46.28 QTZ5s2CM.net
>>146
例の医療関係のページビュー稼ぎ対策の影響で個人が細々とやってる良質なサイトが引っ掛かりにくくなってる
って新聞に書いてあったな
152:デフォルトの名無しさん
19/04/11 09:44:13.72 vYC2bkpl.net
具体的にC++でいいサイトはどこ
153:デフォルトの名無しさん
19/04/11 10:06:20.10 m6dr6a58.net
cpprefjp
154:デフォルトの名無しさん
19/04/11 11:14:37.00 Kj8z6I1B.net
>>146
お前のいうネットってqiitaとかだろ?
だからダメなんだよお前はw
155:デフォルトの名無しさん
19/04/11 18:46:33.30 Ukf06xgg.net
cpprefjp一択。
156:デフォルトの名無しさん
19/04/11 19:07:44.03 XplD4nHz.net
リファレンスだけ並べたクソサイトじゃねーかw
157:デフォルトの名無しさん
19/04/11 19:27:25.55 yce5TkL4.net
この手のランキングは本当に十人十色だな。
人気言語ランキングC++3位
URLリンク(www.tiobe.com)
158:デフォルトの名無しさん
19/04/11 19:30:26.87 m6dr6a58.net
リファレンスがあれば十分だわ
応用は頭使え
159:デフォルトの名無しさん
19/04/11 19:38:13.25 XplD4nHz.net
話にならん。。
とりあえずここら辺から始めるのが良いか。
URLリンク(www.tutorialspoint.com)
160:デフォルトの名無しさん
19/04/11 19:48:35.94 TKLgRtKS.net
cpprefjpは仕様の成り立ちから使用例まで載ってる
161:デフォルトの名無しさん
19/04/11 19:54:53.54 a2+oAAfA.net
cppreference.comの方が好き
162:デフォルトの名無しさん
19/04/11 19:58:11.07 m6dr6a58.net
cpprefjpは左の文字が小さすぎるのをなんとかしてほしい
163:さまよえる蟻人間
19/04/11 20:14:39.34 4WryY6sc.net
Ctrl+ホイールで画面拡大縮小
164:デフォルトの名無しさん
19/04/11 20:36:15.86 m6dr6a58.net
それはおかしい
165:
19/04/11 20:40:05.89 mnND5pqz.net
>>145
独習の後は同じくハーバートシルトの stl 本(ただしC++11じゃない) でしょうけれども…
166:デフォルトの名無しさん
19/04/11 21:41:21.15 Ukf06xgg.net
【小説】ストリームの悪魔
167:デフォルトの名無しさん
19/04/11 21:42:54.19 Ukf06xgg.net
>>157
でも、C++17だと圏外かも。
168:デフォルトの名無しさん
19/04/11 21:49:17.62 Ukf06xgg.net
C++の人気はだいたいWindowsと同期してて、XPで盛り上がり、その後下降して、Windows10発売後ちょっと盛り上がり、その後下降し始め、WSLでまたちょっと盛り上がり、みたいな感じで上下する。
169:デフォルトの名無しさん
19/04/11 23:00:30.59 Fl8qN29n.net
>>165
ビャーネストロヴストルップのプログラミング入門はどうですか?
170:デフォルトの名無しさん
19/04/11 23:10:49.56 Fl8qN29n.net
>>165
◆QZaw55cn4c さんはプログラマーですか?
171:デフォルトの名無しさん
19/04/11 23:16:43.21 4rTUFtuy.net
STLを解説した本として最も優れてるのどれ?
172:デフォルトの名無しさん
19/04/11 23:26:14.78 m6dr6a58.net
解説するほどのものか?
173:デフォルトの名無しさん
19/04/11 23:29:16.82 MrjztWsK.net
cpprefjpかcppreference.com眺めるのが一番いいのでは
174:デフォルトの名無しさん
19/04/11 23:35:00.33 Fl8qN29n.net
>>171
C++標準テンプレートライブラリがおすすめ
175:デフォルトの名無しさん
19/04/11 23:36:01.51 Fl8qN29n.net
URLリンク(cppmap.github.io)
個人的にはこっちもおすすめ
176:デフォルトの名無しさん
19/04/12 00:33:29.09 Oce6Eotz.net
C++ coding standards が、入門書と effective C++の間という感じで良かったのですが、今新品で買いやすい和書の中で同じくらい良い本ありますか
177:デフォルトの名無しさん
19/04/12 07:49:20.68 iSiavc0f.net
>>173
それでコードを書けるようになるとは全く思わん。
178:デフォルトの名無しさん
19/04/12 08:33:36.67 iSiavc0f.net
「ロベールのC++入門講座」を勧める
179:デフォルトの名無しさん
19/04/12 09:37:34.83 uO4ZqrOg.net
コード書くために勉強したことが無い人間とコード書くために勉強した人間に分かれるな
180:デフォルトの名無しさん
19/04/12 10:54:15.24 +AQGVq0O.net
RPGのバトルシステムがいつまでたっても出来ない
どうなってんだコレ
181:さまよえる蟻人間
19/04/12 12:39:56.53 O/TRJpno.net
>>180
ドラクエの技術を解説した本を買えば
182:デフォルトの名無しさん
19/04/12 13:56:50.34 phN3RSne.net
そこでレポート プログラム ジェネレータを思い出さないと
文句はユニシスに言っとくれ
183:デフォルトの名無しさん
19/04/12 16:07:32.84 JVT+o1/N.net
RPGなつかしいなw
知人でそれの専門で仕事やってるやついたが
今ごろどうしているだろうか・・
184:デフォルトの名無しさん
19/04/12 16:19:27.39 lUKpExyl.net
>>180
自分が具体的に何を作るのか見えていないとか、自分が何が分からないかがわかっていないとか。
185:デフォルトの名無しさん
19/04/12 18:44:05.94 +CDO09PL.net
std::rpgの登場が待たれる
186:デフォルトの名無しさん
19/04/12 21:59:51.74 9AU6i9F6.net
>>179
どういう分類か興味がありますね…
187:デフォルトの名無しさん
19/04/12 22:35:09.99 20VLO3ye.net
これもSFINAE???
int plus(int a,int b){return a + b;}
double plus(double a,double b){return a + b;}
int main( int argc, char *argv[] )
{
double c = plus(1.0,2.0);
return 0;
}
188:デフォルトの名無しさん
19/04/12 23:46:54.37 w8o2kbz2.net
SFINAEを理解してないな?
templateでわざと失敗させるんだぞ
189:デフォルトの名無しさん
19/04/12 23:50:14.00 WMCXK/Zp.net
それは関数のオーバーロード(オーバーロード関数)
SFINAEはテンプレートに関わる話
190:デフォルトの名無しさん
19/04/12 23:55:37.58 yQNXRLnI.net
SFINAE ていう単語みるたびになぜか
ソフバンの白犬が低い声で「スフィ姉ーーー」て言ってる映像が頭にうかぶ
191:デフォルトの名無しさん
19/04/13 00:08:44.65 pAXxDbKI.net
>>188
最初のplusで失敗して、次のオーバーロードを探しに行ってんじゃん。
もし最初でコンパイルエラーなら、このプログラムはコンパイルされないが、SFINAEのおかげでコンパイルエラーが出ない
192:デフォルトの名無しさん
19/04/13 00:43:18.21 2fZ9oexv.net
>>186
自分の興味のあることをやっていたら気づいたらコードが書けるようになっていた人と
コードを書けるようになることを目標に勉強をした人
前者は入門の仕方を聞かれると上手く答えられない傾向にある
とりあえず好きなもの作ってみて困ったらリファレンスとかみれば良いんじゃないの?とかは割とガチで言ってる
193:デフォルトの名無しさん
19/04/13 01:17:48.59 Gm2Aztfm.net
せやな
なぜそこでロベール!?とか思ったけど、なんか納得した
194:デフォルトの名無しさん
19/04/13 02:30:55.25 ExcsBrHj.net
rvalue・lvalueの見分け方について、=の左に書けないならrvalueって考えで良いですかね?
195:デフォルトの名無しさん
19/04/13 07:01:49.87 bq5Y4VLb.net
>>194 確かダメじゃないかな。
C の例でアレだけど、配列名 int a[5]; の a は
左辺値だけど代入の左辺に置けない、
「代入不可能な左辺値」というカテゴリになる。
『プログラミング言語C++』第4版 §6.4.1 (p. 175)の図によると
左辺値 lvalue は「アイデンティティを持ち、ムーブ不可能」
右辺値 rvalue は「(アイデンティティの有無によらず)ムーブ可能」
…ムーブできるか出来ないかの判断を、左辺値か右辺値か見分けることで
やろうとしてるなら、この説明は循環論法でしかないけどね。
196:デフォルトの名無しさん
19/04/13 08:07:08.65 odoOG67D.net
その場で(1つの文の中で)ムーブされ得るやつが右辺値、ぐらいで良いのでは、
と言いたいところだが
SomeType a = b = 1;
でbあ右辺値なのかと言われるとうーん…
実際bがその場で所有権を失うこともできる(SomeTypeにムーブコンストラが定義されていた場合
のだから当たらずしも遠からずだとは思うが知らん
197:デフォルトの名無しさん
19/04/13 09:00:05.96 TufrjDxL.net
てかリファレンスだけ必要な奴はここにそういうことを聞きには来ないだろ。
なんかその辺の感覚がすでにずれてるように思うが。
198:デフォルトの名無しさん
19/04/13 09:09:41.91 TufrjDxL.net
>>195
「代入できない」って視点で言えば194で合ってるんでは?
確かに a[0] =5 なんかはできるけど、 a = b みたいにポインタそのものは代入できないわけだし。
199:デフォルトの名無しさん
19/04/13 09:48:36.03 ubPOLJQD.net
>>196
右結合なんだから b は左辺値、 b = 1 が右辺値でいいんでは?
200:L
19/04/13 11:50:51.08 U0TmzhoK.net
全く関係ない話になるけど、JNI = Java Native Interface(?) なるものを使えば、
C++で OS 非依存のアプリが作れるんだね。多分。
C++からJavaの任意のメソッドを呼び出せるし、逆も可能なので、
グラフィックをJavaに描かせて、キーやマウスのイベントをJavaからC++に
伝達すればよさそう。すると、LinuxやAndroidで共通に動くC++アプリ(?)
が出来てしまう。wasmも必要ない。
201:デフォルトの名無しさん
19/04/13 15:06:42.85 nqhK1mlk.net
>>200
C++の部分はネイティブなのでOSに依存する
202:デフォルトの名無しさん
19/04/13 15:20:25.21 U0TmzhoK.net
スマン。CPU毎にバイナリは必要で、
clangに -macrh=xxx-xxx-xxx オプションを指定して CPUやOSを
指定してコンパイルしておくことを想定していた。
ただし、複数のCPU/OS向けのバイナリを1つのAPKにパッケージして、
使用時に自動選択する事が出来るらしい。
203:デフォルトの名無しさん
19/04/13 15:31:06.15 pwnjfljv.net
わざわざjavaを使わなきゃいけないのが気にくわない
その場合、javaだけで書くこと以上のメリットある?
204:デフォルトの名無しさん
19/04/13 15:32:58.01 U0TmzhoK.net
速度が速い。
205:デフォルトの名無しさん
19/04/13 15:33:33.54 MSTjQ8pp.net
てかそれってjavaのアプリ作っているだけじゃ
206:デフォルトの名無しさん
19/04/13 15:36:48.83 U0TmzhoK.net
Androidアプリは、Javaで書くのが基本とされてるけど、
Chromeブラウザなんかはきっと、C++で書いたものを ARMなどの
CPU向けのnative binaryに直し、それをAPKにパッケージ化して
配布してるのではなかろうか? AmazonのFire7 や Fire HD 8 などの
タブレットのCPUはどちらもARMらしい。スマホもARMが多いのかな。
207:デフォルトの名無しさん
19/04/13 15:38:37.67 U0TmzhoK.net
>>205
基本的な描画系と入力系をライブラリ化しておけば、メインロジック部分は
C++で書けると思うよ。
208:デフォルトの名無しさん
19/04/13 15:42:52.17 U0TmzhoK.net
さっき、AdoptOpenJDK なるものをインストールしてみたら、
java と javac コマンドが起動することを確認した。
多分このJDKは、Oracle フリーで無料でクローズド商用利用できると思う。
209:デフォルトの名無しさん
19/04/13 15:46:26.77 MSTjQ8pp.net
jniはjavaのプラットフォームにc++での開発成果物を持ち込むためのもので、そうでないならわざわざそんなもの使う意味は薄い
マルチプラットフォームなアプリを作りたいならQtなりwxなりを使った方が速いし楽
210:デフォルトの名無しさん
19/04/13 15:47:10.35 Uq+8Y9kK.net
>>208
でもいつ訴えられるかわからないから怖いですう。
211:デフォルトの名無しさん
19/04/13 15:58:39.59 U0TmzhoK.net
そもそも、Androidアプリにとってのシステムコール(API)とは、Javaの関数だと
思うので、この構造自体は Android における「最も高速なアプリ」になっている
と思う。
212:デフォルトの名無しさん
19/04/13 15:59:50.41 U0TmzhoK.net
>>210
一般アプリ作者は大丈夫だと思うな。一番危ないのは、オイラみたいに、
ToolKit作って儲けようなんて思ってる人なのさ。(^_^;)
213:デフォルトの名無しさん
19/04/13 16:11:49.69 U0TmzhoK.net
>>209
それらはサイズが大きい。
214:デフォルトの名無しさん
19/04/13 16:14:38.06 MSTjQ8pp.net
糞デカイ上に更新面倒なjavaのruntime入れさせるほうが害悪だろ
flashより糞度が高い
215:デフォルトの名無しさん
19/04/13 16:22:55.04 U0TmzhoK.net
AndroidはJREはプリインストール済みなんじゃないの?
オイラは実機持ってないので全く分からないんだな。
216:デフォルトの名無しさん
19/04/13 16:32:58.01 MSTjQ8pp.net
androidで実質c++でのアプリ開発する仕組みなら既にある
jniそのまま使うよりは大分マシ
217:デフォルトの名無しさん
19/04/13 16:36:12.19 jD4Gkzzm.net
>>216
どうやるの?
218:デフォルトの名無しさん
19/04/13 16:39:07.74 2fZ9oexv.net
何でグラフィックをわざわざJavaに?
>>217
QtならほぼC++で書ける
219:デフォルトの名無しさん
19/04/13 16:42:39.35 U0TmzhoK.net
Qt は、内部的に Backend で Java を使ってるのかな。
220:デフォルトの名無しさん
19/04/13 17:18:44.33 ubPOLJQD.net
なんかJavaを間違って理解してるっぽい。
221:デフォルトの名無しさん
19/04/13 17:21:04.26 YpOFfnix.net
>>219
もういい加減スレ違いだから消えてくれ
222:デフォルトの名無しさん
19/04/13 19:21:24.16 mZFqlfzi.net
vector に格納されてる値から添え字の番号を取得するための最も手軽な方法はなんでしょうか
イテレータから添え字番号を取得することはできますが、あくまで値からやりたいです
223:デフォルトの名無しさん
19/04/13 19:26:24.27 ujTcdvrD.net
格納してる値にインデックスの手がかりがないんだったら
findで探して結果のイテレータから取得するしかないな
224:デフォルトの名無しさん
19/04/13 19:26:44.48 2fZ9oexv.net
>>222
findしてdistance
225:デフォルトの名無しさん
19/04/13 19:31:01.29 mZFqlfzi.net
>>223-224
ありがとうございます
格納する値の範囲もサイズも小さいvectorなので、今回は辞書を作って対応しようと思います
226:デフォルトの名無しさん
19/04/13 19:42:14.61 2fZ9oexv.net
>>225
そんな単純な検索なら3行くらいなんだから作ればいいのに
227:デフォルトの名無しさん
19/04/13 20:12:30.52 mZFqlfzi.net
奇遇なことに辞書も三行くらいです
228:デフォルトの名無しさん
19/04/14 01:05:39.34 dZAE6IVm.net
そら奇遇ですな。
229:
19/04/14 06:41:11.16 AVvjfIV7.net
>>200
とても興味を覚えました
私は、そろそろ言語間でライブラリも共用されるべきだと考えています
一つの記述体で各言語共通というのはさすがに難しいにせよ、
Java のライブラリと同等なもの(名前と機能が共通のもの)が C++ にもあってもいいんじゃないか?と数年前から妄想しています…
230:デフォルトの名無しさん
19/04/14 07:17:55.90 /tPpXRHC.net
もうJavaのことは忘れて生きろ
231:デフォルトの名無しさん
19/04/14 07:42:20.38 YohaqxbG.net
JavaとC++に共通インターフェースを作るのは反対。
車輪の再発明にしかならない。自由を奪うだけの愚策。
232:
19/04/14 07:51:31.17 AVvjfIV7.net
>>231
強要するのではなく、オプション(選択肢)として提供するのはどうでしょうか?
233:デフォルトの名無しさん
19/04/14 08:04:00.89 YohaqxbG.net
>>232
共通ライブラリを使う側にとってはオプションであることは当然。
共通ライブラリを作る側の話をすべき。共通ライブラリの規格決定権者が増えすぎること自体が好ましくない。
これはEU諸国がトルコがEU参加することを拒否する感覚に近い。
234:
19/04/14 08:50:47.24 AVvjfIV7.net
>>233
私は EU には否定的(グローバリストの巣窟であり、普通選挙/自由選挙による合意形成をスキップするポジションを作って人を操作するからくり、トルコもたぶん目が覚めているのでは?)ですが、それはさておき、
すでにある java/classpath スケルトンを真似してしまおう、という低姿勢・低いプライドを貫くのであれば、規格策定者は基本要らなくなりませんか?だって真似するだけだし…
235:デフォルトの名無しさん
19/04/14 08:59:21.33 k2b6YaL9.net
まだC++98しか知らないと、取り残されますか。
236:デフォルトの名無しさん
19/04/14 09:09:36.38 YohaqxbG.net
まずは、Javaと瓜二つな C#、.NET、C++/CLIが今どうなっているか考えてみては。
237:L
19/04/14 09:28:45.12 Y1IcINvd.net
>>229
ちょっと話しはズレるけど、あなたの賛同で嬉しくなったので、入手した耳寄りな
情報を書いておこうと思う。既に知ってる人も当然いると思うけど、
WebAssemblyで作ったようなWebAppliは、ブラウザのURL欄やタイトルバーなどが
表示されてしまうのが難点として残っていた。ところがなぜかElectronでは消せて
いたのでChromeではなくChromiumを使っているからかと思っていた。
ところが、manifest.json なるものを書いて、HTMLにそのファイルを使うように
書いておいて、display プロパティーを standalone やfullscreen にすると、
URL欄が消せるらしい。
238:
19/04/14 09:41:42.35 AVvjfIV7.net
>>237
もう時代はすっかり html/css/js ですね…
VSCode も Electron ですし…
239:デフォルトの名無しさん
19/04/14 10:28:52.88 k2b6YaL9.net
質問を変えてみよう。
C++11やC++14のコードは、職場で取り入れられてますか。
240:デフォルトの名無しさん
19/04/14 11:49:20.77 q+cUY/8y.net
>>239
ガンガン取りいれてるよ。
なにげにでかいのが日本語識別子の保証。適切に使うと可読性が笑っちゃうくらい上がるw
ヘッダーのプロトタイプ宣言とかが特におすすめかな。
あとchar16_t/char32_tも結構ありがたい。WindowsとUNIX系のOS間で同じ文字コードとして共通で使える型が以前はなかったからね。
20でようやく入るみたいだが、なぜchar8_tを入れかったのか(´・ω・`)
std::initializer_listもかなり便利。型安全で個数も分かる上に、引数の一番後ろじゃなくてもいいので、cの...と違って気軽に使える。
あとよく使うのは範囲for文と、イテレータの簡略化かな。いくつかの演算子をオーバーロードすれば良いだけだから、
結構気軽に範囲for文対応のイテレータを書ける。
ラムダ式も関数の引数に直接関数を埋め込んだりできて便利。
241:
19/04/14 12:36:24.13 AVvjfIV7.net
>>240
>char16_t/char32_tも結構ありがたい
確かに
char16_t と u"" がなければ win32api W 系とか途方に暮れていたとおもいます… スレリンク(tech板:53番)
242:はちみつ餃子
19/04/14 12:43:45.83 +qOUcSLR.net
ガンガン最新を追うべきとまでは思わないけど、
C++11 は最低限度じゃないかなぁ。
243:デフォルトの名無しさん
19/04/14 14:27:39.08 6Gooiv09.net
17便利すぎ
variant,visit,lambda,if constexpr
のコンボで捗る
244:デフォルトの名無しさん
19/04/14 14:34:56.13 GSX89KOm.net
つーか今はもうC++11の機能は使わずにC++で書け!といわれても
やりきる自信がなくなった・・
245:デフォルトの名無しさん
19/04/14 14:39:38.95 krJLkXqZ.net
古い環境だと最近のサンプルがビルドできなくて困る
246:デフォルトの名無しさん
19/04/14 16:02:33.26 YQLb8Tsj.net
c++11とか名乗るから誤解されるんだよ。
c++++とかのがイメージ的に正しい。
247:デフォルトの名無しさん
19/04/14 16:06:36.29 dZAE6IVm.net
C#ってことか。
248:デフォルトの名無しさん
19/04/14 16:12:40.18 YQJCzKEv.net
repeat文って入らないの?
249:はちみつ餃子
19/04/14 16:16:59.50 +qOUcSLR.net
>>248
どんな機能?
250:デフォルトの名無しさん
19/04/14 16:20:53.89 YQJCzKEv.net
>>249
repeat(int i; n) で for(int i; i<n; i++) と同じ意味な機能
251:デフォルトの名無しさん
19/04/14 16:22:55.01 6Gooiv09.net
>>250
そんなどうでも良いもののために予約語追加する意味って
その文法じゃ初期値すら変えられない
252:デフォルトの名無しさん
19/04/14 16:24:45.44 6Gooiv09.net
初期値はi=0とかすればいいのか
でもそうなるとi=1にした場合何回ループするのか混乱しそう
253:デフォルトの名無しさん
19/04/14 16:32:41.09 IovzG98E.net
>>229
QtとかGtk、wxとか色々有るじゃん。。。
入れるの面倒くさいなら、Power Builder(だっけ?)とかの有料開発環境はVSを除いてマルチプラットフォームなライブラリが売りだぞ。
254:
19/04/14 16:36:01.32 AVvjfIV7.net
>>253
Java の人も C# の人も c++ の人も python も ruby も一緒の名前で一緒の機能が使えたら,コストの中でも一番高くつく勉強コストを減らせるのではないでしょうか
255:デフォルトの名無しさん
19/04/14 16:44:39.61 YQJCzKEv.net
>>251
Linuxのカーネルにrepeatマクロ大量にあるもん
256:はちみつ餃子
19/04/14 16:52:53.22 +qOUcSLR.net
>>255
ならマクロでいいじゃねぇか。
257:デフォルトの名無しさん
19/04/14 16:53:20.02 6Gooiv09.net
こんなので十分だろ
URLリンク(ideone.com)
258:デフォルトの名無しさん
19/04/14 16:59:12.33 6Gooiv09.net
>>254
wxでもQtでもメジャー言語のbinding位あるだろ
259:デフォルトの名無しさん
19/04/14 17:09:53.36 IovzG98E.net
>>254
うん。
それはまさにそうで、だからQt,Gtk,wxあたりのメジャー所は色んな言語にラッパーがある。
260:デフォルトの名無しさん
19/04/14 17:10:32.89 h7KNzBMl.net
webプログラマーなんですが、右辺値、fowardっていつ使うのか気になります
というかなんでそこまで、厳密に分ける必要があるのか
業務で使ってる方、使用例を教えてください
261:デフォルトの名無しさん
19/04/14 17:20:10.51 sCsh6GnA.net
右辺値というかムーブ関数の定義といらなくなるオブジェクトにstd::move付けとくのは絶対損にはならないからとりあえずやっとく
forwardはテンプレートライブラリ作るなら必須だけど自分では使ったことないなあ
262:さまよえる蟻人間
19/04/14 17:25:45.47 86P3zzV7.net
コピーにコストがかかる場合は、std::swapやstd::moveのが早い場合があるからね。ムーヴはコピーじゃなくて引っ越しだから。
263:デフォルトの名無しさん
19/04/14 17:27:07.70 YQLb8Tsj.net
まあ理論上はね。。そういう実装になってるかどうかはコード見ないとわからんけどね。
264:デフォルトの名無しさん
19/04/14 17:29:38.84 6Gooiv09.net
基本的には高速化が目的でmove使わなくてもなんとかなるが、
所有権絡むとmoveは必須になる
forwardはtemplateで引数渡すときにmoveやら参照やらの完全転送する場合必須
265:さまよえる蟻人間
19/04/14 18:16:04.21 86P3zzV7.net
ちょっと実際にやってみようか。コピーコンストラクタで十秒待つコードを書く。ムーヴコンストラクタとムーヴ代入でなにもしない。
この状態でstd::moveを使わないで代入すると十秒かかる。
266:さまよえる蟻人間
19/04/14 18:17:20.92 86P3zzV7.net
訂正。「コピー代入で十秒待つコードを追加」
267:デフォルトの名無しさん
19/04/14 18:47:05.84 xCvd3oj/.net
>>264
>所有権絡むとmoveは必須
必須とまでは言えない
T::T(const T& obj)
という通常のコピコンを定義して、コピコンの中でconst剥がししたら
とりあえず所有権の移動もmove無しで逝ける
268:はちみつ餃子
19/04/14 18:50:44.06 +qOUcSLR.net
>>260
高速化のために出来るのは、アルゴリズムのレベルでの工夫を別にすれば、出来ることはショートカットだ。
高速化とは近道なんだよ。
場合分けが出来るなら、どうしてもやらなければならないこと、やらなくてもいいことを「区別」できる。
区別できるなら、やらなくてもいいことは省略できる。
言語での区別が無くても、たとえば C でも区別を陽に書けばムーブみたいなことだって、そりゃあ出来るけども、
そんなクソ面倒くさいことはしたくないので言語でのサポートがあるとありがたい。
まあ速度的にそこまで必要ないってのなら、区別を積極的に利用しなくてもかまわないよ。
でも、必要なときに出来る方法が用意されているとうれしいし、
C++ を使うときというのはそれなりに実行速度が必要なときだろうし。
269:デフォルトの名無しさん
19/04/14 18:52:09.33 xCvd3oj/.net
とわいえmoveコンストラクタの方が意図が明確なコードが書けるから良い。
moveコンストラクタがふさわしい例っていやーつぎごケース。
class BarWithBigData {
Foo* m_pBigData;
BarWithBigData() : m_pBigData(new Foo[1000000000000] { }
~BarWithBigData() { delete[] m_pBigData; }
BarWithBigData(BarWithBigData&& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
Foo* refBigData() { return m_pBigData; }
};
ちなstd::arrayは使った無いから知らん
270:デフォルトの名無しさん
19/04/14 18:53:54.12 xCvd3oj/.net
訂正orz、
誤:
Foo* m_pBigData;
BarWithBigData() : m_pBigData(new Foo[1000000000000] { }
正:
Foo* m_pBigData;
public:
BarWithBigData() : m_pBigData(new Foo[1000000000000]) { }
271:デフォルトの名無しさん
19/04/14 18:54:00.95 mEGAHR/Y.net
コピコンの中でconst剥がしってちょっと何言ってるか分からない
272:さまよえる蟻人間
19/04/14 18:55:03.68 86P3zzV7.net
十秒待つ待つコードはWindowsなら#include <windows.h>してSleep(10*1000);であり、
Linuxなら#include <unistd.h>してsleep(10);だ。
C++11ならstd::chronoに待つ関数があったはず。
273:さまよえる蟻人間
19/04/14 18:57:07.74 86P3zzV7.net
const_castだろ。jk
274:デフォルトの名無しさん
19/04/14 18:57:37.12 xbTIwD1q.net
>>271 「move無しで(未定義動作に)逝ける」ってことでしょ。
275:デフォルトの名無しさん
19/04/14 18:57:39.39 xCvd3oj/.net
>>271
こうじゃわ;
BarWithBigData::BarWithBigData(const BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; }
>>269もmoveコンストラの変わりに↑のように書いても逝ける
276:デフォルトの名無しさん
19/04/14 19:10:15.32 sCsh6GnA.net
まあ実際にはそんなムーブをゴリゴリ書くことはなくて
m_pBigDataをunique_ptr<array<Foo, 1000000000000>>にしてムーブctor、ムーブop=、デストラクタを=defaultにするけどな
277:デフォルトの名無しさん
19/04/14 19:21:51.01 kBfBajGR.net
auto_ptrよりヤバイ奴
const_castでconst外した後実際に書き換えてしまうとかw
278:デフォルトの名無しさん
19/04/14 19:38:34.53 xCvd3oj/.net
>>277
ちなconst T&で渡されたブツを関数内でconst_castして書き換えることはそれ自体は合法
ROM上のオブジェクトを渡して死ぬことは有り得るがしたら呼び出し側の違反
また最適化にしくるとしたらそれはコンパイラーのバグ
279:デフォルトの名無しさん
19/04/14 19:46:40.04 xbTIwD1q.net
>>278
ROM上になくても const T 型で構築されたオブジェクトを書き換えたら未定義動作になるから、
値が変わらない前提の最適化は許されてるよ。
const 無しで構築されたオブジェクトを指す const& の話と混同してそうだね。
280:デフォルトの名無しさん
19/04/14 19:53:21.04 uvZ0DMTi.net
質問: c🐴++のrust相対の優位性はなんですか?
281:はちみつ餃子
19/04/14 19:57:27.42 +qOUcSLR.net
>>280
正しくないコードをコンパイル出来る。
C++ はプログラマを信頼するのだ。
282:デフォルトの名無しさん
19/04/14 19:57:44.28 6Gooiv09.net
>>278
未定義じゃないか
c++03 5.2.11の7にはこんなことが書いてある
[Note: Depending on the type of the object, a write operation through the pointer, lvalue or pointer to data
member resulting from a const_cast that casts away a const-qualifier68) may produce undefined behav-
ior (7.1.5.1). ]
283:デフォルトの名無しさん
19/04/14 20:14:45.20 xCvd3oj/.net
>>282
Depending on the type of the objectにおいてmay produce undefined behaviorである
すわなちオブジェクトの型によっては未定義動作に成りえる、
と言っているだけなのでconst T&渡しされたパラメータの書き換えがNGの祥子にはなんね
>>279
>const T 型で構築されたオブジェクトを書き換えたら未定義動作になる
それはそう。しかしconst T&渡しされた関数内でコンパイラはそれを判断できないから
そういった関数内で、参照型かポインタ型引数で関数に渡されたlvalueのconst_castした結果はあくまでlvalue扱い
のはず…
284:デフォルトの名無しさん
19/04/14 20:25:38.94 xbTIwD1q.net
>>283
関数内では const& であることを根拠に最適化に使えないのは合ってる。
でもだからといって const& で受け取ったものを書き換えてもよいとは言えない。
void f1(int const&);
int f2()
{
int const x = 1;
f1(x);
return x;
}
x は int const なので、 f2() の return x は f1() が const_cast して x を
書き換える可能性を無視して return 1 に最適化できる、という話。
BarWithBigData const x; が >>275 のコピーコンストラクタに渡された後も
const_cast<BarWithBigData&>(rhs).m_pBigData = NULL; を無視して書き換え前の
m_pBigData が使われる可能性がある。
285:デフォルトの名無しさん
19/04/14 20:33:37.36 mEGAHR/Y.net
規格が云々言わなくても、9割のプログラマの意図に反してるで終わる話
頼むからそんなコードは頭の中にしまっといてほしい
286:デフォルトの名無しさん
19/04/14 20:37:26.81 6Gooiv09.net
つまりはそれ自体は問題ないが、constとして生成したオブジェクトを渡した瞬間にダメになると言うことか
で、渡すこと自体は制限できないから
プログラム中に罠を仕掛ける事が出来るわけだ。
287:デフォルトの名無しさん
19/04/14 20:39:28.07 6Gooiv09.net
てか、mutable付けとけば問題なくなるな。
288:デフォルトの名無しさん
19/04/14 20:40:25.78 6Gooiv09.net
const_castも要らないし良いことずくめじゃないかw
289:デフォルトの名無しさん
19/04/14 20:45:26.81 xCvd3oj/.net
>>285
わかりたそうする。>>275のケースは素直にムーブコンストラクタを使えば良い。または↓でもだいたいおk
BarWithBigData::BarWithBigData(BarWithBigData& rhs) { m_pBigData = rhs.m_pBigData; rhs.m_pBigData = NULL; }
だいたいというのはムーブコンストラクタ有りの規格のC++コンパイラで↑の非constなコピコンだけ書く警告が出ることがあるからイヤン、
>>286
>つまりはそれ自体は問題ないが
いや問題がある可能性が潰せていない。
void f1(int const&);
int f2()
{
int x = 1;
f1(x);
return x;
}
(xがconst無し)の場合であってもf1(x)がxを書き換えない前提の最適化がf2()にかかったりすると、
f1(x)内で変更したxの値がreturnされるxの値に反映されない可能性がある(f1(x)の呼び出し前後でxがレジスタに乗ったままであるとか、
290:デフォルトの名無しさん
19/04/14 21:11:05.08 xbTIwD1q.net
>>289
その x の型は const じゃないから return x は最適化できないよ。
291:デフォルトの名無しさん
19/04/14 21:48:29.79 uvZ0DMTi.net
>>281
わからないです。それはメリット?
292:デフォルトの名無しさん
19/04/15 01:36:50.54 20PlYkfs.net
ラムダに11個の引数を参照で渡すのと、キャプチャするの、どっちが速いかな?
293:デフォルトの名無しさん
19/04/15 02:40:05.27 e1RUhzz1.net
測ればいいだろ
294:はちみつ餃子
19/04/15 02:50:17.52 94OTneyx.net
>>291
メリットのときもデメリットのときもあるだろう。
295:デフォルトの名無しさん
19/04/15 02:59:24.82 XbOtvNIU.net
参照渡しな時点でその場で呼び出すのだろ。
最適化かければ結局同じようなアセンブリになるよ。
296:デフォルトの名無しさん
19/04/15 09:13:13.35 +swIGlrx.net
それはわからんだろ
ブロック待ちするかもしれないわけで
297:デフォルトの名無しさん
19/04/15 19:29:41.18 8vw8m6ly.net
引数で渡すとスタックに積まれる可能性があるけど、キャプチャするとそうならないのでは。
298:デフォルトの名無しさん
19/04/15 19:36:28.26 XbOtvNIU.net
いや、形式上は無名クラスにキャプチャを変数としてぶちこんだもののインスタンス作ってメンバ関数のoperator()呼ぶのだから、スタックは使うだろ。
299:デフォルトの名無しさん
19/04/15 20:08:47.93 Auf6nZgf.net
C言語じゃダメなんですか!
300:デフォルトの名無しさん
19/04/15 20:20:07.70 NSErsM12.net
いいよ
301:デフォルトの名無しさん
19/04/15 20:25:01.30 IXPbMXJW.net
無駄に複雑にしとるな。
302:デフォルトの名無しさん
19/04/16 01:01:07.13 ZVmLHBMP.net
>>298
じゃあ、引数で渡すとスタックに積まれない可能性があるので、速い場合もあるのでは?
303:デフォルトの名無しさん
19/04/16 02:15:09.28 WfxisTJA.net
海外だと、Javaに負けて、Rustに圧倒的実力で追いやられるC++
304:デフォルトの名無しさん
19/04/16 02:27:07.22 WfxisTJA.net
>>303
URLリンク(insights.stackoverflow.com)
305:デフォルトの名無しさん
19/04/16 15:01:04.19 RMLQoksE.net
本当に、コンパイル時に何かしたいならRustだけどね
306:デフォルトの名無しさん
19/04/16 18:28:44.44 ZVmLHBMP.net
>>304
Java圧倒的な強さだな。
307:デフォルトの名無しさん
19/04/16 18:30:10.89 ZVmLHBMP.net
全部足すと500%位になりそうだから、複数の言語を使う人が多いんだろね。
308:デフォルトの名無しさん
19/04/16 21:18:54.40 dFuxCqAG.net
江添が転職できずに困っとるw
まあこいつがクソなだけでc++の問題ってわけじゃないんだがイメージは悪いわな。
309:デフォルトの名無しさん
19/04/16 21:36:49.03 jMhdT2ep.net
こうしてみるとホッシーの全タクシー移動ってのは理に適ってるな
バカな公害に捕まる心配が減る
310:デフォルトの名無しさん
19/04/16 23:25:27.27 LsPOsuul.net
なんか私怨でもあるんかいな
311:デフォルトの名無しさん
19/04/16 23:41:35.10 InK+cNH/.net
喫煙者が目に入った途端癇癪起こして殴り掛りかかる狂犬なんだっけ?
312:デフォルトの名無しさん
19/04/17 00:03:12.24 vVzTJh6n.net
知らね
よく人を招いているようだし揉めたことがある人も少なくはないんじゃいか
313:はちみつ餃子
19/04/17 01:12:11.58 UWuCQ9XR.net
>>310-311
当事者の様々な主張の食い違いがあるので、結論としては「わからない」。
少なくとも彼自信の主張としては掴みかかってきたのを払いのけた結果として眼鏡が割れたということになっている。
(江添が殴りかかったわけではなく、むしろ防衛した側、と江添は主張している。)
江添が煙草について過激な意見を持っているのは確かだが、
シェアハウス内で禁煙場所であると合意がなされている場所で煙草を吸った客人がいたというところは当事者全体が認めているようだ。
314:デフォルトの名無しさん
19/04/17 08:21:52.75 DaACwh1w.net
恨みというかまともにコード書かない奴がクソ意見で現場荒らすって事自体がクソだと思うわけで、
まあその反動で現場で働くことができないって事になればザマァって思う。
315:デフォルトの名無しさん
19/04/17 09:46:31.27 vVzTJh6n.net
現場を荒らしてる?
316:デフォルトの名無しさん
19/04/17 09:53:30.15 vVzTJh6n.net
どのプロジェクトにも参加してないと認識してたけど乗り込んでケチつけてたりするのかな
まあ俺ドワンゴとは縁が無いからどこで何してようが関係ないけど
317:デフォルトの名無しさん
19/04/17 17:08:02.09 I32j715f.net
C++がPython抜いて3位 - 4月TIOBE言語ランキング 2019/04/17 10:55 後藤大地
URLリンク(news.mynavi.jp)
TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。
4月TIOBE Programming Community Index / 円グラフ
URLリンク(news.mynavi.jp)
2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。
長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。
318:デフォルトの名無しさん
19/04/17 17:11:50.34 hoIwj+sG.net
>>317
何回だからみんな何回もググってるんだよ
319:デフォルトの名無しさん
19/04/17 18:34:58.84 LllPIzo0.net
俺が検索しまくったからだろうな。
320:デフォルトの名無しさん
19/04/17 19:59:29.56 fJF68+PR.net
今もしインターネットが完全にシャットダウンされると
プログラム書けなくなるプログラマけっこう数いるだろうな
321:はちみつ餃子
19/04/17 20:18:46.81 UWuCQ9XR.net
>>320
cpprefjp はとりあえず手元にダウンロードしてあるけど。
322:デフォルトの名無しさん
19/04/17 20:35:09.94 P5fp2rRi.net
どうやってダウンロードしたの?
巡集じゃできなかった…
323:デフォルトの名無しさん
19/04/17 20:39:18.77 WWgiT6Ow.net
githubじゃない?
324:デフォルトの名無しさん
19/04/17 21:27:54.32 P5fp2rRi.net
そうなんだ、ありがとう
325:デフォルトの名無しさん
19/04/19 02:16:29.43 /DYxLH/O.net
どういたしまして。
326:デフォルトの名無しさん
19/04/19 08:26:54.03 gmGy9oTC.net
江添は職質裁判でも、不当判決が出たので控訴するみたい
警官は、複数人で口裏合わせするから、民間人は勝てない
漏れもやられたけど、酒酔い運転でも、漏れが機械に息を吹き掛けても、ランプが点かない。
そこで、警官がクルッと後ろを向くと、ランプが点く
そっと見たら、酔っ払い警官が、自分で息を吹きかけて、ランプを点ける
こういう裁判で争っている人もいるけど、
警官は複数人で口裏合わせするから、絶対に勝てない!
警官は皆、このやり方で出世しとる
327:デフォルトの名無しさん
19/04/19 08:33:03.47 PWe5dNBv.net
ありゃ普通に対応してりゃ済む話だと思うがね。
やってることは完全に当たり屋だろ。
328:デフォルトの名無しさん
19/04/19 09:27:15.01 biH+fvR8.net
>>326
Rubyバカの人か。相変わらず思い込みが激しく、言っていることが滅茶苦茶だな。
329:デフォルトの名無しさん
19/04/19 12:05:02.85 rPSCrubJ.net
どんだけ江添好きなの?w
330:デフォルトの名無しさん
19/04/19 13:28:48.91 W5tFDDw/.net
日本でC++真剣にやってるのって彼だけだし
331:はちみつ餃子
19/04/19 13:41:25.74 mypEidUJ.net
だけ、というのは言い過ぎだと思うが、
日本語で最新の C++ の事情を本にしているのは江添くらいしかいないからなぁ。
江添本人は自分のことを実務家ではなく教育者だと考えているようだし、
(肩書は何なんだろ? エヴァンジェリストのようにも見えるが……)
今のポストは妥当なとこだろ。
そのままやってくれればありがたいもんだ。
332:デフォルトの名無しさん
19/04/19 13:41:50.58 i8rhoxHy.net
つまり他の日本人は竹刀とか木刀ってことか。
333:デフォルトの名無しさん
19/04/19 13:50:35.12 rPSCrubJ.net
江添個人の裁判は完全にスレチなんだよなあ
仮に違法な取り締まりだと判断されても警察のやり方が改まるわけもないだろうし
334:デフォルトの名無しさん
19/04/19 14:15:26.68 JVA9qfGz.net
江添すなわちC++なのだから
江添の話題は全てC++の話題だょ
335:デフォルトの名無しさん
19/04/19 15:08:33.32 j263LUSd.net
宗教の話はよそでやってくれないか
336:デフォルトの名無しさん
19/04/19 15:16:01.57 JwgM4FAg.net
もう少しc++の話をしてくれと思う事もある
337:デフォルトの名無しさん
19/04/19 18:50:10.05 /DYxLH/O.net
はちみつさんも真剣にやってると思います。
338:デフォルトの名無しさん
19/04/19 19:16:13.92 yj9Iz3m1.net
こんな事言うと勘違いされそうだが、はちみつ餃子はちゃんとしてると思うよ
C++に関しておかしなことは言っていない
ていうか、はちみつ餃子ってものすごい不味そうなんだがそんなの本当にあるのだろうか・・?
339:デフォルトの名無しさん
19/04/19 19:17:39.46 j263LUSd.net
肉料理にはちみつを入れること自体はわりと普通
量の問題
340:デフォルトの名無しさん
19/04/19 19:28:19.17 PWe5dNBv.net
いや明らかに開発してねーだろって感覚じゃねーか。
まあここならそれでもいいんだろうけれど。
341:はちみつ餃子
19/04/19 19:51:37.44 mypEidUJ.net
>>338
ググればわかるけどはちみつ餃子はそこそこありふれた料理だよ。
その昔、 higepon が自分でもどうして higepon などと名乗ったかわからない
と述べていたので、そのくらい意味不明感じにしようと思って適当に
思いついた語をコテハンにした。
Scheme スレが本来の住処なので当初は SCHEME餃子 と名乗っていたけど、
他のスレにも顔を出すようになったのでなんとなくはちみつ餃子になった。
およそ意味不明な組合せにしたつもりだったんだけど、
実際にある料理だとは後になってから知った。
342:デフォルトの名無しさん
19/04/19 21:11:54.81 fEN/Hp+M.net
initializer_listを引数に取るオブジェクトを引数に取る関数で
下記のケースでUniversal Initializationが効かないのですが
何かいい手はないでしょうか
using KVPCollectionType = std::map<std::string, std::string>;
void f(const KVPCollectionType&& kvps = {});
f(); // OK
f({}); // OK
f(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
f({{"key1", "value1"},{"key2","value2"}}); // NG これをやりたい!!
343:デフォルトの名無しさん
19/04/19 21:13:17.21 UQpKfTQY.net
エピ…いや何でもない
344:デフォルトの名無しさん
19/04/19 21:17:05.52 fEN/Hp+M.net
すみません、訂正です
× void f(const KVPCollectionType&& kvps = {});
○ void f(const KVPCollectionType& kvps = {});
345:デフォルトの名無しさん
19/04/19 21:22:53.30 /DYxLH/O.net
アークエンジェルに搭載されてるstd::variant<>。
346:デフォルトの名無しさん
19/04/19 22:49:42.25 DWxUZ3pl.net
wandboxで試したらclangでもgccでもc++11 -pedanticで通ったけど?
347:デフォルトの名無しさん
19/04/20 00:01:37.25 a7z6m7l4.net
ごめんなさい、ごめんなさい。本当にごめんなさい。
勝手に脳内で要約したのが間違えまくってました
正確には以下の通りです。
#include <map>
#include <memory>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
int main()
{
auto ok = std::make_shared<c>(KVPCollectionType{{"key1", "value1"},{"key2","value2"}}); // OK
auto ng = std::make_shared<c>({{"key1", "value1"},{"key2","value2"}}); // NG!!!
}
348:デフォルトの名無しさん
19/04/20 10:47:21.77 5oa1AZjP.net
全てのバグを絶滅せよ。
「今日は死に日和」好評発売中。
349:デフォルトの名無しさん
19/04/20 11:08:43.59 3kBWifqd.net
C++11や14を使ってる人、コンパイラは何ですか。
350:デフォルトの名無しさん
19/04/20 11:25:30.96 m+a2EYsq.net
ゲームエンジン作ってる人いますか
351:デフォルトの名無しさん
19/04/20 11:30:38.02 5oa1AZjP.net
clとgcc。
352:デフォルトの名無しさん
19/04/20 13:20:15.93 lwVpLCzw.net
c+11以降はバージョン違うと全く別のコンパイラ
353:デフォルトの名無しさん
19/04/20 13:23:19.12 8Vh3F1FF.net
Twitchでプログラミングしてるやつの中でゲームエンジンも居たような
354:はちみつ餃子
19/04/20 13:30:02.11 7hm/FBJ7.net
>>347
テンプレートの推論ルールとして「関数テンプレートのパラメータとして波カッコの初期化子リストを渡して型推論させることはできない。」
ということになっている。 ( URLリンク(cpprefjp.github.io) )
make_shared の実際の型は template <class T, class... Args> shared_ptr<T> make_shared(Args&&... args); なので、
このとき Args が推論できない以上はどうにもならん。
型を固定した専用の関数をはさんでこんな感じにするくらいのことしか思いつかないな。
#include <map>
#include <memory>
#include <initializer_list>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
c(const std::initializer_list<typename KVPCollectionType::value_type>){}
};
std::shared_ptr<c> make_c_shared(std::initializer_list<typename KVPCollectionType::value_type> a) {
return std::make_shared<c>(std::move(a));
}
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
355:はちみつ餃子
19/04/20 13:32:51.70 7hm/FBJ7.net
>>347 >>354
呼出す側で
auto ng = std::make_shared<c, std::initializer_list<typename KVPCollectionType::value_type>>({{"key1", "value1"},{"key2","value2"}});
というように型を明記してもかまわないけど、使う側でいちいちこんなこと書きたいわけじゃないだろ?
356:はちみつ餃子
19/04/20 13:35:42.76 7hm/FBJ7.net
>>347
ちゃんと考えたら >>354 はいらんことしとるな……
これで充分か
#include <map>
#include <memory>
#include <utility>
using KVPCollectionType = std::map<std::string, std::string>;
class c {
public:
c(const KVPCollectionType&& kvps = {}){}
};
std::shared_ptr<c> make_c_shared(KVPCollectionType&& a) {
return std::make_shared<c>(std::move(a));
}
int main() {
auto ok = make_c_shared(KVPCollectionType{{"key1", "value1"},{"key2","value2"}});
auto ng = make_c_shared({{"key1", "value1"},{"key2","value2"}});
}
357:デフォルトの名無しさん
19/04/21 08:19:35.76 jJhiZdMc.net
>>354-356
ありがとうございます、その手を使わせていただきます
状況によって推定ルールが変わるのはやめて欲しいなってちょっと思ったんですけど。
358:デフォルトの名無しさん
19/04/22 23:55:58.01 uyfay/gq.net
メンバアクセスにthis->つける?
359:デフォルトの名無しさん
19/04/23 00:01:58.24 cW1os5L0.net
エディタの補完機能使いたいときにたまにそうやって補完して最後に消す。
が、たまに忘れる。
360:デフォルトの名無しさん
19/04/23 00:02:35.52 BSgCsXpz.net
IDEの都合で付ける事が良くある
付けないと補完候補多すぎて
361:デフォルトの名無しさん
19/04/23 00:09:08.10 JKfCESEZ.net
ああなるほど
補完候補を絞るのには便利ですね
362:デフォルトの名無しさん
19/04/23 18:16:01.64 Wx+D+gzo.net
メンバであるという保証ができるので付ける
363:デフォルトの名無しさん
19/04/23 19:39:28.32 cE0Yu4R7.net
メンバ名は頭にm_付けろみたいなクソルールよりずっといいと思うので付けるべき
364:デフォルトの名無しさん
19/04/23 19:42:38.83 JKfCESEZ.net
仮引数と別の名前つけるのだるいからm_は別に良いと思う
365:デフォルトの名無しさん
19/04/23 20:02:01.86 8XemHsTC.net
メンバ変数に専用の色付けたらいいじゃん
366:デフォルトの名無しさん
19/04/23 20:13:43.06 sktjqElV.net
引数そのままメンバに入れるなら引数に_つけてvar(_var)って初期化してるわ
367:
19/04/23 20:16:13.74 JSYnwir1.net
>>366
それって var(var) でも問題ないんですよ…
368:さまよえる蟻人間
19/04/23 21:18:06.78 DAl4rXky.net
バーバー
369:デフォルトの名無しさん
19/04/23 21:32:08.36 BSgCsXpz.net
>>367
綴り間違えたら悲惨なことになった
370:デフォルトの名無しさん
19/04/23 21:34:08.78 3k1+3l7a.net
ハンガリアン記法は、入力補完のないエディタ上での可読性を高めるのに役立ってるでしょ。今でも。
371:デフォルトの名無しさん
19/04/23 21:35:06.30 8XemHsTC.net
ゴミ使ってる奴のことなんか知らん
372:デフォルトの名無しさん
19/04/23 21:36:10.37 BSgCsXpz.net
あれ可読性落ちるだろ
373:デフォルトの名無しさん
19/04/23 21:39:11.30 lLaZpSEH.net
定期的にunsignedとsigned混在させてハマるアホをみるとハンガリアン必要だと思うわ
374:デフォルトの名無しさん
19/04/23 21:40:37.34 lAbUfbw7.net
C#で入力補完のないエディタがどうとかさすがにナンセンスでは
だってvisual studio使うじゃん
375:デフォルトの名無しさん
19/04/23 21:41:16.53 ZkNEZW45.net
どっちでもいいわ。
大抵の場合そんなとこに気を使わんといかんコードになってることのが問題。
376:デフォルトの名無しさん
19/04/23 21:45:47.89 lLaZpSEH.net
>>375
こういうやつがそのうちハマって丸1日つぶしたりするんだよなw
377:デフォルトの名無しさん
19/04/23 21:51:11.17 8XemHsTC.net
>>373
関係なくて草
378:デフォルトの名無しさん
19/04/23 21:55:03.06 lLaZpSEH.net
関係あることわかってなくて草
379:デフォルトの名無しさん
19/04/23 21:55:54.04 8XemHsTC.net
黙ってろゴミw
380:デフォルトの名無しさん
19/04/23 21:59:25.62 ZkNEZW45.net
>>376
だから人を嵌めるようなコード書くなつってんだよばか。
381:デフォルトの名無しさん
19/04/23 22:06:36.15 lLaZpSEH.net
>>380
コードの問題じゃなくて言語仕様の問題だから
こういうえらそうなくせに何もわかってないカスが一番始末に困る
382:デフォルトの名無しさん
19/04/23 22:53:19.60 ZkNEZW45.net
いつの間にかハンガリアンが言語仕様になってた。。
383:デフォルトの名無しさん
19/04/23 23:10:13.77 lLaZpSEH.net
ハンガリアンも防御的なプログラミングと考えたら悪くないよ
成り立ち調べてみな
でも基本型とポインタだけだな
クラスには無用だと思う
384:デフォルトの名無しさん
19/04/23 23:27:23.37 8XemHsTC.net
てめーらはまともなIDEかエディタ使ってねえのかよ
385:デフォルトの名無しさん
19/04/23 23:37:57.35 JKfCESEZ.net
むしろVSがないと何も書けない
386:デフォルトの名無しさん
19/04/23 23:55:15.96 UPBQPhwq.net
VSがあっても何も書けない。
387:デフォルトの名無しさん
19/04/23 23:55:30.60 ZkNEZW45.net
c++みたいに型情報ありがデフォルトの言語でハンガリアンとか二重メンテもいいとこだわ。
388:デフォルトの名無しさん
19/04/24 01:00:02.97 pnt3hUol.net
前方宣言したクラスをTにしたスマポメンバでコンパイル通るときと通らないときがあって調べてたら
デストラクタがインライン(暗黙)だと駄目だとわかった
しかもこの問題が起こるのはunique_ptrのときだけでshared_ptrはデストラクタの定義に関係なく通る
わけわからんぞ
教科書に書いておいてくれ
class ClassB;
class ClassA{
public:
ClassA();
private:
std::unique_ptr<ClassB> u; // NG
std::shared_ptr<ClassB> s; // OK
}
---
class ClassB;
class ClassA{
public:
ClassA();
~ClassA(); ←これでunique_ptrもOK
private:
std::unique_ptr<ClassB> u; // OK
std::shared_ptr<ClassB> s; // OK
}
389:デフォルトの名無しさん
19/04/24 07:38:59.52 IdP8M60W.net
>>388
unique_ptr<T>のデストラクタはインスタンス化するときにTが完全型であることを要求する(デストラクタで直接Tのデストラクタを呼ぶ)
unique_ptrを内包するクラスのデストラクタが暗黙だとクラス内でコンパイラによって実装されるけど、その場でunique_ptrのデストラクタを要求する
しかし、その翻訳単位内でTの定義が無ければコンパイルエラーとなる
unique_ptr<T>を内包するクラスのデストラクタがとりあえず宣言だけでもあると
実際の定義がある場所で同様の事が起こるので、その場所でTの定義が見つかればいい
その場合に定義を書かないと、コンパイラさんが適切な翻訳単位内に定義をおいてくれるみたい
shared_ptrは動的削除子のおかげでデストラクタが呼ばれるところで適切にデリータを定義し、デストラクタを呼ぶようになっているのでこの様な問題は起こらない
shared_ptr<T>のデストラクタ内ではTのデストラクタを直接呼び出すようなコードが無い