16/09/04 14:05:26.02 VQnaPYaY.net
>>427
テンプラ屋でもやれば?
436:デフォルトの名無しさん
16/09/04 14:05:45.23 X6kuqpOw.net
べつに嫌いな機能が有ってもおかしくはないな。
プリプロセッサーが嫌いな人とか、iostreamが嫌いな人とか人それぞれ
437:デフォルトの名無しさん
16/09/04 14:06:53.24 6rO3xNqX.net
オブジェクト指向www
久しぶりに聞いたな
438:デフォルトの名無しさん
16/09/04 14:07:38.02 OnzMHuuE.net
>>420
まずはSTLが何の略語なのか調べてみよう!
439:デフォルトの名無しさん
16/09/04 14:17:00.28 xp6EP8jq.net
>>429
嫌いな機能はあってもいいけどその理由が >>420 とかなのはねぇ
440:デフォルトの名無しさん
16/09/04 14:45:42.58 bYyi8Nkm.net
C++を使う理由の90%がテンプレートでしょう
使わないならCでもやっててください
441:デフォルトの名無しさん
16/09/04 14:52:46.08 VQnaPYaY.net
C言語しか出来ない50代くらいのジジイたくさん居る
で、なぜかえばっている
442:デフォルトの名無しさん
16/09/04 14:54:45.23 Zvr3allz.net
便利だと言い張って可読性の低い醜悪なもん作ってよこす奴が多いからCPPは嫌いなんだよ。
テンプレートは最高。
443:デフォルトの名無しさん
16/09/04 15:16:44.85 9+LtAjSl.net
stlっていっても、実装見たら初学者でも書けるようなものがほとんどでしょ。
forで回して、比較してるだけとかwww
積極的に使う理由がない
444:デフォルトの名無しさん
16/09/04 15:23:23.36 u29z8UDZ.net
コピペすんな
445:デフォルトの名無しさん
16/09/04 15:58:19.56 dwel9f30.net
おいら最近はC#のほうが多くてC++はご無沙汰になってるんだけど
C++のテンプレートが使えたらなあって思うことはたまにある
446:デフォルトの名無しさん
16/09/04 16:51:50.12 1H4SDZ6a.net
は? C#にも名前は違うけどあるだろボケ
447:デフォルトの名無しさん
16/09/04 17:03:58.61 u29z8UDZ.net
ねえよ
448:デフォルトの名無しさん
16/09/04 17:05:46.48 dwel9f30.net
>>439
似たようなのはあるし、大体はそれで問題ないんだけど
テンプレートとは根本的な仕組みが違うので、特殊化とか微妙に出来ることに差があるのよね
449:デフォルトの名無しさん
16/09/04 17:12:09.12 UDXdUcTk.net
C#のジェネリックはCLIを一個しか生成せずに、型の違うオブジェクトが与えられたら
JITコンパイル時に生成してるもんな
だからサイズは小さいけどC++のtemplateとは根本的に考え方が異なる
おまけにオブジェクト同士を演算しようとするとコンパイルエラーになるので
dynamic、つまりリフレクションを使うしかないという
450:デフォルトの名無しさん
16/09/04 18:39:26.39 c++wF4a4.net
IDがC++だー
451:デフォルトの名無しさん
16/09/04 18:54:35.76 ZZxj7Xyl.net
>>443
おおすげーおめでとう
452:デフォルトの名無しさん
16/09/04 19:14:14.87 1H4SDZ6a.net
>>442
言語機構が違うから実装も異なるのは当たり前。
それがどう実用上影響するのかを書けよ。
当たり前だが、俺はC#のジェネリックと
C++のテンプレートの機能上の様々な相違点(例えばintを引数に取れないとか)は知った上で、
おまえさんの教育のために質問してるからな?
勘違いするなよ。
453:デフォルトの名無しさん
16/09/04 19:16:44.51 1H4SDZ6a.net
intを取れないってのは_
C++でできるtemplate<int N>
みたいなのがC#ではできないって意味な。
馬鹿が勘違いするといけないから。
454:デフォルトの名無しさん
16/09/04 19:25:27.22 OnzMHuuE.net
>>443
おおっ!
455:デフォルトの名無しさん
16/09/04 21:25:33.06 pHvOGCAw.net
>>439
> は? C#にも名前は違うけどあるだろボケ
ジェネリックとテンプレートが同じだといいたいのかな?
ガチなアフォ登場したなwww
456:デフォルトの名無しさん
16/09/04 21:27:10.35 dwel9f30.net
>>448
C++分かる人に使い方の説明しろと言われたら間違いなく
真っ先に「テンプレートです」って言うけどな
457:デフォルトの名無しさん
16/09/04 21:37:35.91 ZdgSZwYz.net
テンプレートはコンパイルタイム、ジェネリックはランタイムだ。
458:デフォルトの名無しさん
16/09/04 21:37:38.20 xp6EP8jq.net
>>443
スゲー、なんか羨ましいぜ
459:デフォルトの名無しさん
16/09/04 21:48:56.88 I3Tx/JDs.net
コンパイルタイムのくせにいちいち
typenameをつけまくらないといけない
クソ言語。
テンプレートパラメーターごとに特殊化が作られるんだから
その辺テキトーでもいいはずなのに。
460:デフォルトの名無しさん
16/09/04 21:54:49.52 LHkeQq2D.net
つか、型なんてコンパイル時なんて遅すぎだろ
普通は設計終わった段階で全て決定してるし。
461:デフォルトの名無しさん
16/09/04 21:58:44.17 I3Tx/JDs.net
まじかよ
俺今日vector<int>って書いたけど
vectorの設計後にインスタンス化しちゃったぜよ
462:デフォルトの名無しさん
16/09/04 22:00:39.11 +mIHXAwk.net
細かい違いはあれどジェネリックはC#版のテンプレートだろ
463:デフォルトの名無しさん
16/09/04 22:16:41.22 LHkeQq2D.net
ジェネリックはC#版のテンプレート
名言頂きました
464:デフォルトの名無しさん
16/09/04 22:18:59.30 ItsH+W+6.net
ジェネリクスは汎化で、テンプレートはコンパイルタイムで、全くの別物じゃないの?
465:デフォルトの名無しさん
16/09/04 22:23:32.00 r5JTAWNt.net
言語機能の目的は似ているな
目的を理解せず仕組みを語りたがる中学生には違うらしいけど
466:デフォルトの名無しさん
16/09/04 22:24:22.75 u29z8UDZ.net
ジェネリックは基本的に算術演算子を使えないしメンバ関数も使えないからな
インターフェイスを定義してようやく特定の型のみ対応できる
467:デフォルトの名無しさん
16/09/04 22:27:35.01 +mIHXAwk.net
>>457
それは相違点の1つだろ。
テンプレートにせよジェネリックにせよ一番の本質は
「型引数を受け取って特化型を生成すること」だからな。
468:デフォルトの名無しさん
16/09/04 22:52:01.38 r5JTAWNt.net
>ジェネリックは基本的に算術演算子を使えないしメンバ関数も使えないからな
へー、初耳だ
469:デフォルトの名無しさん
16/09/04 23:38:59.65 c++wF4a4.net
>>444,447,451
ありがとう
これを機にC++erになります
470:デフォルトの名無しさん
16/09/05 01:54:37.65 Zffp85C6.net
>>461
おい、お前試してみてから言ってるんだろうな?
471:デフォルトの名無しさん
16/09/05 10:51:16.59 ece9l1SB.net
>>458
目的が同じなら方法の違いは関係ないとでも?
472:デフォルトの名無しさん
16/09/05 13:56:45.07 4eC9RGW3.net
>>433
それは60代から上のCOBOL世代
50代はC++バリバリ使うぞ
TCPL初版当時の若燕をなめんな
473:デフォルトの名無しさん
16/09/05 14:43:22.97 5jAupIQr.net
「COBOLerがテンプレート目的でC++を使う」
「」
474:デフォルトの名無しさん
16/09/05 15:38:04.05 4eC9RGW3.net
TCPL初版を見たこともないやつが
煽るつもりで自分の無知を晒しているなあw
475:デフォルトの名無しさん
16/09/05 16:00:17.35 NFX2QcZC.net
C++(ベターC)
476:デフォルトの名無しさん
16/09/05 16:25:11.01 M0OvRWnI.net
TCPL?
素直にターボCのこと?
477:デフォルトの名無しさん
16/09/05 16:35:11.86 4eC9RGW3.net
the C programming languageのことじゃね
いいよ、そう思ってろ
478:デフォルトの名無しさん
16/09/05 16:42:54.97 /PewDBDd.net
老害
479:デフォルトの名無しさん
16/09/05 16:50:33.58 S/r0zM88.net
>>464
関係無いな
>>454に対する>>457のレスは話のすり替えに他ならない
480:デフォルトの名無しさん
16/09/05 16:51:54.71 S/r0zM88.net
番号ずれた
誤 >>454に対する>>457のレスは
正 >>455に対する>>457のレスは
481:デフォルトの名無しさん
16/09/05 19:14:07.88 5F1Hp9JO.net
TCPL なんて初めてみたわ
482:デフォルトの名無しさん
16/09/05 19:40:32.27 ZL7Oa3Lb.net
きかんな
483:デフォルトの名無しさん
16/09/05 19:46:24.46 Oj+RV/HM.net
>>467
東京コンテンツプロデューサーズ・ラボとか出てきたんだけどw
検索ですぐヒットしないような用語使うのは止めてくれよ
484:デフォルトの名無しさん
16/09/05 19:56:37.92 NFX2QcZC.net
Effective C++3冊を読んでいないやつは老害
485:デフォルトの名無しさん
16/09/05 20:36:14.34 1ue4xWo4.net
三冊もあんの?一冊にしてくれよ
486:デフォルトの名無しさん
16/09/05 20:38:07.50 MPm038QF.net
>>470
普通K&Rって言わね?
何処の田舎モンよ?
487:デフォルトの名無しさん
16/09/05 20:46:21.19 32FGf11f.net
>>478
Effective STLを含めれば4冊もあるぞ
488:デフォルトの名無しさん
16/09/05 20:48:51.10 1ue4xWo4.net
STL何それうまいの?
489:デフォルトの名無しさん
16/09/05 20:51:36.83 IQvMB0/c.net
仮に TCPL が『プログラミング言語C』(K&R)のことだとしても、
いきなりC++のスレッドで出てくると違和感があるのだが。
490:デフォルトの名無しさん
16/09/05 20:56:18.25 zRA0QsUX.net
53ページを暗記する奴?
491:デフォルトの名無しさん
16/09/05 21:02:31.55 1ue4xWo4.net
蟹チャーハン何それうまいの?
読んだことはないけど20世紀に信者がウザかった記憶だけはあるな
ANSIで標準化されたことを自分のレーゾンデートルを奪われたと勘違いして幻覚を見たかのような必死さが伺えた
492:デフォルトの名無しさん
16/09/05 22:01:52.55 4eC9RGW3.net
>>479
よう、真性カッペw
493:デフォルトの名無しさん
16/09/05 22:02:46.08 4eC9RGW3.net
あ、アンカー打ち忘れた
>>482も真性カッペな
494:デフォルトの名無しさん
16/09/05 22:06:39.74 32FGf11f.net
おじさんくやしがりすぎやろ…
495:デフォルトの名無しさん
16/09/05 22:18:16.67 zRA0QsUX.net
TCPLなんて検索しても全くヒットしないじゃん
SICPくらいヒットするように頑張ってからドヤ顔するんだな
496:デフォルトの名無しさん
16/09/05 23:01:37.47 4eC9RGW3.net
かつて通用してて曖昧性が指摘されて後に死語化したものがヒットするわけねーだろ
こういうのは検索だけがソースなやつにはわかるわけがない
497:デフォルトの名無しさん
16/09/05 23:03:21.14 4eC9RGW3.net
禿が、言語はそいつが何を考えることが出来るかを決めてしまう、
というのと同様、検索によって何を知ることが出来るかを決められてしまってるやつw
498:デフォルトの名無しさん
16/09/05 23:04:11.29 g7jOSJ0B.net
the c++ program language
499:デフォルトの名無しさん
16/09/05 23:05:08.72 9BGJMvFR.net
真っ赤になって弁明、無意味な連投、あとは草大量に生やせばパーフェクト
500:デフォルトの名無しさん
16/09/06 00:08:40.53 F5fS/nn6.net
おいおい、自分で老害認定してるジジイをあんまりいじめるなよw
501:デフォルトの名無しさん
16/09/06 02:59:46.82 bgQCWsty.net
死語をドヤ顔で使う老害なんて早く死ねば良いのに
502:デフォルトの名無しさん
16/09/06 06:24:00.28 AN+xYaOm.net
TCPL って "The C++ Programming Language" のことなのかな?
++ がない方の書名(K&R)と紛らわしいわね。
…すると >>467 と >>470 はID被りの別人だったのか。
"Learning Standard C++ as a New Language"「標準C++を新しい言語として学ぶ」や
『プログラミング言語C++』(TCPL?)第4版の中で、ハゲ先生は
「新しい規格で便利な機能を使え」と言ってたはずで、
そこからすると「古い参考書を読んだことがある方が偉い」って
主張はなかなか賛成しにくいなぁ。
503:デフォルトの名無しさん
16/09/06 07:12:19.22 JRdVpVwV.net
祝 void_t 標準入り
504:デフォルトの名無しさん
16/09/06 08:22:00.35 7VUHkvW+.net
そういうのは規格化されてから言え
お前の脳内の標準などどうでもいい
505:デフォルトの名無しさん
16/09/06 08:40:04.46 0OEY122r.net
void_tは決まったんじゃないのか
506:デフォルトの名無しさん
16/09/06 08:50:04.45 ewg0kDeB.net
>>497
「次期C++1zでの標準化がほぼ確定したので・・・」
と細々と書かないと通じないのか?
507:デフォルトの名無しさん
16/09/06 10:05:09.80 ScDQQjzO.net
>>495
偉いとか言ってねえぜ
相対評価ではなく絶対評価で
シッタカはクソ以下だつってるだけだ
508:デフォルトの名無しさん
16/09/06 10:11:45.27 F5fS/nn6.net
The C++ Programming Language なら"TC++PL"な
URLリンク(www.stroustrup.com)
用語がデタラメなジジイは話が通じなくて疎まれるだろ?
509:デフォルトの名無しさん
16/09/06 10:42:23.06 yUThNKeL.net
TPPみたいになんでも略し杉w
510:デフォルトの名無しさん
16/09/06 10:44:47.41 ScDQQjzO.net
あとからそうなったんだよ
ガキが知らないのは仕方ない
知らねーなら知らねーなりにしとくぶんには可愛げあるんだよ
それを尻が青いくせにジジイのふりをするからバカにしか見えないってだけさ
511:デフォルトの名無しさん
16/09/06 11:17:08.98 F5fS/nn6.net
>>503
>>494
512:デフォルトの名無しさん
16/09/06 11:20:23.27 ScDQQjzO.net
>>504
おまえが死ね
今からダンプに轢かれに出かけろ
513:デフォルトの名無しさん
16/09/06 11:37:06.01 ewg0kDeB.net
略語ってどこまで通じるのか不安になるな。
sfineaやRAIIは大丈夫としても、TMPとかCPPとかって一般的なんだろうか?
514:デフォルトの名無しさん
16/09/06 12:39:46.48 bgQCWsty.net
>>504
死語って言うより死産だよな
TCPL w
515:デフォルトの名無しさん
16/09/06 12:58:22.50 ScDQQjzO.net
あー、禿のWebページでしばらく使ってたのも知らないわけね
そういうのはいくら検索しても出るわきゃねえしガキにゃ厳しいな
516:デフォルトの名無しさん
16/09/06 13:49:15.29 IyJPjQ2g.net
必死で検索したようだが出てこなかったのかw
残念だったなw
517:デフォルトの名無しさん
16/09/06 13:56:51.77 ScDQQjzO.net
おまえがな
518:デフォルトの名無しさん
16/09/06 15:01:29.03 sQOv13Gi.net
くだらなすぎて俺にとってはどうでもいいけど
「"TCPL" "the C++"」でググると結構出てくるけどな例えば
URLリンク(www.allacronyms.com)
519:デフォルトの名無しさん
16/09/06 15:55:19.22 ScDQQjzO.net
デタラメとかぬかしてたクソガキ、息してるか?
520:デフォルトの名無しさん
16/09/06 18:43:34.22 R7REkw4z.net
ハゲが自分のホムペで紹介した俺用語をさも普遍的な用語であるかのように語られても困るな
521:デフォルトの名無しさん
16/09/06 19:48:01.80 1XSUlqoQ.net
>>508
で、使ってたと言う証拠は?
脳内にしかないとか言わないよな w
522:デフォルトの名無しさん
16/09/06 19:54:58.70 YAp6qqUR.net
ここ相談室なんだけどみんな何の相談してるの
523:デフォルトの名無しさん
16/09/06 19:59:18.61 lMZiI53V.net
自分の病気の症状についての相談
524:デフォルトの名無しさん
16/09/06 20:18:59.06 PHkuODAN.net
void_t は何に使うの
525:デフォルトの名無しさん
16/09/06 21:50:12.78 ScDQQjzO.net
>>514
あー、すまんな
俺んとこでは魚拓は脳内だけだ
だからお前は未来永劫見ることができない
いやーすまんすまん
526:デフォルトの名無しさん
16/09/06 21:57:58.50 VCItaBw6.net
>>515
ここ見るとC++に関わる奴はどこか頭おかしいってわかるだろ?
つまりそういうことだ
527:デフォルトの名無しさん
16/09/06 22:51:35.93 EdXevder.net
頭がおかしい(髪が変)
528:デフォルトの名無しさん
16/09/06 23:12:54.88 JRdVpVwV.net
>>517
知ってるでしょ
529:デフォルトの名無しさん
16/09/06 23:26:52.58 sQOv13Gi.net
void_tはSFINAEの定番パターンを標準化しただけ
530:デフォルトの名無しさん
16/09/07 05:00:10.45 MZvlar21.net
>>518
要するに、単なる妄想だったってことかよ w
531:デフォルトの名無しさん
16/09/07 08:16:26.88 4YmObOwP.net
いや現実だよ
おまえが物心つく前か生まれる前か知らんが
歴史上そういう事実があった
過ぎてしまった歴史がぎゃんぎゃん吠えることで変わるとでも思っているなら
それは隣国のメンタリティだね
532:デフォルトの名無しさん
16/09/07 08:27:48.44 W2drX/qt.net
で、その歴史的事実が共有できる資料は?
533:デフォルトの名無しさん
16/09/07 08:34:32.44 uFAnWK01.net
ただの事実と歴史とじゃ重要性が違う。
要するに記憶に留めるべき事実が歴史というわけだ。
逆に「そんなもん知らん」と一蹴されてしまう事実もありうる。
534:デフォルトの名無しさん
16/09/07 09:00:25.57 4YmObOwP.net
>>525
保存してねえって言っただろ鳥アタマめ
535:デフォルトの名無しさん
16/09/07 09:05:41.79 WoQJVoSd.net
いや、資料がないのに歴史だって主張して
それを共有できないって言うと歴史修正主義だって言う姿が
それこそおとなりさんぽいなあって思ってw
536:デフォルトの名無しさん
16/09/07 09:06:18.84 zaGYBHu2.net
それはどこの国の歴史なんだろう?
tcpl "the c programming language"
でググると、中国系、朝鮮系では使われてるらしい
537:デフォルトの名無しさん
16/09/07 09:40:41.09 4YmObOwP.net
>>528
別に主張なんかしてねえよ
事実を偽りなく述べているだけだ
魚拓の有無で変わったりしねえことだ
自分が見られないからってヤダジタすんなガキ
538:デフォルトの名無しさん
16/09/07 10:32:53.78 P2AyoRLU.net
自分より年下と思われる人間をガキ呼ばわりしてるけど、年上が偉いという考え?
それって儒教っぽいな
儒教といえばお隣の国…あっ(察し
539:デフォルトの名無しさん
16/09/07 10:39:46.68 /D7wbjXh.net
ここの住人がスルー力0なのは間違いないな
540:デフォルトの名無しさん
16/09/07 11:24:34.86 prfLhh2R.net
ソースは脳内
そんな恥ずかしい主張ができちゃうなんてもしかして教育を受けてないのかな?
541:デフォルトの名無しさん
16/09/07 11:50:26.76 G0adIbkV.net
暇つぶしが目的だから、スルーしたらつまらないんだろ
542:デフォルトの名無しさん
16/09/07 12:09:49.06 Z3ZB/oVu.net
煽る暇人は2chだからどうしようもないが煽られて何日も踊っているのはさすがにバカだな
543:デフォルトの名無しさん
16/09/07 12:41:12.31 pAK1tPG0.net
暇つぶしなのではなくお互い必死なんだよ
クールを装ってさもどうでもいいように演じてるけどお互い顔真っ赤だよ
544:デフォルトの名無しさん
16/09/07 12:54:37.05 4YmObOwP.net
>>531
なんだおまえ、ガキって書いてあるのを見るたびに自分が卑しく思うのかw
>>533
記録を俺んとこでは残していないってだけだ
誰かが証拠を持ってきたときにもボロが出ないように言ってるぞ
そんときゃおまえが恥ずかしくて出てこれないわけだが
545:デフォルトの名無しさん
16/09/07 12:55:16.53 Ur9IZRDe.net
なんかスレ伸びてると思ったらまーたゴミどうしの罵り合いかよ
くだらないことで熱くなる奴は脳みそ壊れていくんだというのが如実に分かるよ
546:デフォルトの名無しさん
16/09/07 13:08:27.65 prfLhh2R.net
>>537
俺になんか恥ずかしい要素あったか?
スレ違いの書き込みしたことくらいかな
547:デフォルトの名無しさん
16/09/07 13:11:15.34 v93B1UIW.net
誰かが証拠を持ってきたときw
自分の無能を示しておいてなんとも思わんのだな
548:デフォルトの名無しさん
16/09/07 13:58:33.58 LPRQdItN.net
バーカ
549:デフォルトの名無しさん
16/09/07 15:57:42.39 4YmObOwP.net
>>540
禿のWebページの魚拓をログ化していなかったのを無能と言ってくれるのか
さぞかし有能なおまえさんなら持ってるだろうからさっさと出せ
550:デフォルトの名無しさん
16/09/07 19:25:39.09 OYvFv6+r.net
ソースは脳内というのは日常会話の殆どだな。
だから「アナタは私と異なる認識をお持ちなんですね」でしかない。
それを「アナタは証明できないからそれは嘘です」にすり替えるのは詭弁
551:デフォルトの名無しさん
16/09/07 20:06:01.39 1kliuuT7.net
>>542
俺超有能だけどそんな資料なかったよ
つまり君の言ってたことは全部君の妄想ね
はい終了
552:デフォルトの名無しさん
16/09/07 20:12:54.95 2w88FCBz.net
>>508
> あー、禿のWebページでしばらく使ってたのも知らないわけね
が正しいとしてもここにいる人が知らないような略語をどや顔で出すのは頭おかしい
まあどうみても >>511 辺りを間違えて出しちゃって引っ込みつかなくなってるだけだろ w
553:デフォルトの名無しさん
16/09/07 20:34:12.89 4YmObOwP.net
>>545
では、つかってよいりゃくごをあんたはどうやってはんだんしてるんだ?
あたまおかしいとまでおおきくでるならそれなりのきじゅんはあるんだろうな?
さいじゅうどのていのうにあわせるのがぴーじーのしめいとでもかんがえているなら
あふぉだなくそだなだんぷにひかれてしねばいい
554:デフォルトの名無しさん
16/09/07 22:13:15.14 Ur9IZRDe.net
何�
555:咜アければ気が済むんだよこのゴミどもは
556:デフォルトの名無しさん
16/09/07 22:37:17.77 YLqxd+vc.net
自己反映なメタ表現とは高度な技を
557:デフォルトの名無しさん
16/09/07 22:47:20.81 Mf7TDnfn.net
そんなことよりvoid_tの話をしようぜ。
SFINAEの話だけど。
SFINAEってconcept的な使い方以外にどんな使い方があるの?
558:デフォルトの名無しさん
16/09/07 23:19:03.95 LPRQdItN.net
知らねえよバーカ
559:デフォルトの名無しさん
16/09/07 23:20:48.09 YLqxd+vc.net
ワードサラダにマジレス
560:デフォルトの名無しさん
16/09/07 23:29:54.18 yR890zwI.net
>>549
concept的な使い方ってどんなの?
漠然とパターンマッチ的なものをイメージすればいいのかな
561:デフォルトの名無しさん
16/09/08 00:02:15.19 w601usbW.net
良くあるのがメンバーの有無で処理を変えるパターンかな。
俺も良くわからんが。
562:デフォルトの名無しさん
16/09/08 00:12:42.51 sU4tW1UK.net
enable_ifと組み合わせて使うんじゃない?
563:デフォルトの名無しさん
16/09/08 01:13:18.16 NYidnx0p.net
int と longの違いって何ですか?
564:デフォルトの名無しさん
16/09/08 01:15:30.19 p3dWf/BM.net
歴史?
565:デフォルトの名無しさん
16/09/08 02:02:44.82 NonfcYWK.net
>>555
データモデルによりサイズが異なる(かもしれない)
566:デフォルトの名無しさん
16/09/08 04:16:44.74 6JK6uF4x.net
>>546
正論を言われて反論できなくなったら子供じみた態度でひねくれる
ガキだなw
567:デフォルトの名無しさん
16/09/08 04:47:35.75 rBeNUfmR.net
アルツハイマーの症状の一つの幼児化だね
568:デフォルトの名無しさん
16/09/08 05:23:55.94 vt8xUZJ5.net
酢を飲め
569:デフォルトの名無しさん
16/09/08 06:23:15.75 siaRBrBq.net
>>546
つかってみてだれもしらなさそうならおとなしくひっこめろ、ばーか
570:デフォルトの名無しさん
16/09/08 07:39:36.05 TmgW3MRN.net
>>561
やだね
C++スレでC++関連の用語を知らない無知野郎に合わせる必要はない
571:デフォルトの名無しさん
16/09/08 07:54:49.83 P8D+cYPH.net
まじかよ
お前ひとりでつらいだろ?
572:デフォルトの名無しさん
16/09/08 08:11:01.20 cE384uJ3.net
ガイジ
573:デフォルトの名無しさん
16/09/08 08:36:52.70 QwMnHPC3.net
用語とか言い出しちゃったよ、この人 w
574:デフォルトの名無しさん
16/09/08 09:31:44.41 y1qiR/+w.net
[[deprecated]]
575:デフォルトの名無しさん
16/09/08 11:11:48.25 BaIwaWl+.net
このスレ的にはK&R初版でC学んだことを自慢してる奴より AT&T cfont のレファレンスでC++学んだ俺の方が偉いはず
576:デフォルトの名無しさん
16/09/08 11:25:42.94 ik/GfLoL.net
なんでその程度でエラぶれるの?w
577:デフォルトの名無しさん
16/09/08 12:08:58.27 TmgW3MRN.net
cfrontは俺も使っていたが
cfontて何だ? Courier Newか何かか?
578:デフォルトの名無しさん
16/09/08 12:28:42.58 NCg12FAS.net
古ければ古いほど劣っているからな?
古参が全く自慢にならない世界だぞ
579:デフォルトの名無しさん
16/09/08 12:44:06.52 TmgW3MRN.net
プログラムのバージョンと
プログラマの経験年数を
一緒にするのかよ
580:デフォルトの名無しさん
16/09/08 12:47:14.04 P8D+cYPH.net
経験年数と優秀さを一緒にしてはいけない
経験年数10年と20年では10年の方が優秀なことが多い
581:デフォルトの名無しさん
16/09/08 12:48:47.71 NCg12FAS.net
>>571
経験のバージョンが古い
582:デフォルトの名無しさん
16/09/08 12:53:20.28 TmgW3MRN.net
>>572
ソースplz
583:デフォルトの名無しさん
16/09/08 14:10:36.68 P8D+cYPH.net
ソースは俺の観察
584:デフォルトの名無しさん
16/09/08 14:11:54.76 p2bVgJ9p.net
自分のソースは脳内だけど人にはソースを求める白痴
585:デフォルトの名無しさん
16/09/08 15:27:51.19 TmgW3MRN.net
>>576
脳内じゃない
ここは誰が何と言おうとおまえが間違っている
おまえそもそも事実を知らないんだろ
だから俺の言うことのどこがどう間違っているのか具体的な指摘ができない
もっとも知ってたら指摘するところがないはずなんだが
586:デフォルトの名無しさん
16/09/08 16:46:16.67 vI60taJg.net
経験十年積めば大抵のことはできるし対応できるだろうが
経験二十年にはかなわないだろう
587:デフォルトの名無しさん
16/09/08 16:59:40.04 rBeNUfmR.net
archiveから探してこいよ、認知症のジジイ
588:デフォルトの名無しさん
16/09/08 17:00:00.79 y1qiR/+w.net
んなこたあない
589:デフォルトの名無しさん
16/09/08 17:59:18.64 P8D+cYPH.net
>ここは誰が何と言おうとおまえが間違っている
真実を知っているのがこの世で自分だけだなんて
もう生きててつらいだろうな
590:デフォルトの名無しさん
16/09/08 18:09:20.62 Ig68v84V.net
プログラムの経験年数なんて関係ない。
重要なのはどれだけトラブルの経験を積んだかだ。
女性経験が豊富なのと同じだ プw
591:デフォルトの名無しさん
16/09/08 18:15:13.55 TmgW3MRN.net
>>581
逆だ
知らないのがおまえくらいなんだよ
当時を知っている人が身近にいたら聞いてみろ
>>582
童貞乙
592:デフォルトの名無しさん
16/09/08 18:21:23.76 p2bVgJ9p.net
>>583
当時を知ってる人が身近にいたから聞いてみたけどそんなことはなかったってみんな言ってる。
つまり嘘つきはお前。はい論破。
593:デフォルトの名無しさん
16/09/08 18:23:14.02 Ou19mRgF.net
何日も平日の昼間にくだらんいい争いしなきゃならないとか仕事かよ
594:デフォルトの名無しさん
16/09/08 18:25:06.25 Ig68v84V.net
プログラミングを半年もやらなかったら、けっこうな部分を忘れる世界だし、
進化も激しい世界だから、経験を引き継いで発揮できるのはせいぜい五年くらいだろう。
595:デフォルトの名無しさん
16/09/08 18:30:38.43 P8D+cYPH.net
年を取ると物忘れが激しくなる。
「誰が何と言おうと」と自覚しておきながら3時間後に
「知らないのがおまえくらい」と言い出しちゃうぐらい
だから>>584はもう責めないでw
596:デフォルトの名無しさん
16/09/08 19:01:10.30 aq+STl42.net
相談室っていうか病室だな・・・
597:
598:デフォルトの名無しさん
16/09/08 19:09:24.56 69NbtRcU.net
大抵、経験20年とかになってくると老眼とかで大量の情報を高速に見るとかが出来なくなってそう
経験10年なのに目が悪くなってきて辛いです
599:デフォルトの名無しさん
16/09/08 19:34:58.14 y1qiR/+w.net
void_tの話を聞くほうが建設的だ。
600:デフォルトの名無しさん
16/09/08 19:40:42.54 ik/GfLoL.net
だからさ、型名に_t付けるなよ
システムハンガリアンかよ
601:デフォルトの名無しさん
16/09/08 19:48:21.97 y1qiR/+w.net
>>591
using ***_t = ***::type;
ってパターンもダメ?
602:デフォルトの名無しさん
16/09/08 19:56:47.42 ZGDN5kDf.net
>>577
もう楽になりなよ...
603:デフォルトの名無しさん
16/09/08 20:17:46.69 rBeNUfmR.net
頑固になるのもアルツハイマーの症状の一つだね
604:デフォルトの名無しさん
16/09/08 20:50:28.56 TmgW3MRN.net
>>593
は? 苦しい屁理屈でへとへとなのはおまえだろ
605:デフォルトの名無しさん
16/09/08 20:58:33.03 p3dWf/BM.net
同じ穴のムジナが楽しく荒らしてるなぁ。
ただ一言いいたい。
カエレ!
606:デフォルトの名無しさん
16/09/08 22:14:31.27 A7Pb5oFv.net
うそ
かえらないで
607:デフォルトの名無しさん
16/09/08 22:36:18.32 siaRBrBq.net
苦しい屁理屈 ⇒ >>577
そりゃお前の脳内の事実なんて誰も指摘できんわな w
608:デフォルトの名無しさん
16/09/09 00:55:13.72 6Bh01W2V.net
頑固になるとautoや{}の初期化や->の戻り値が許せなくなります
auto b = new auto(true);
char *p{};
auto main() -> int {}
609:デフォルトの名無しさん
16/09/09 01:02:58.35 4oqKijqb.net
>auto main() -> int {}
頑固じゃないけどこれやる奴は何がしたいんだろう
610:デフォルトの名無しさん
16/09/09 01:07:56.60 6Bh01W2V.net
これは頑固の良い例ですね
スタイルの統一とかそういうことを考えられず、変化を拒絶するようになります
611:デフォルトの名無しさん
16/09/09 01:10:09.08 kBQSHV64.net
new auto();
なんて出来ないしな…
612:デフォルトの名無しさん
16/09/09 01:18:20.19 kBQSHV64.net
>>601
じゃあ規格のexampleのスタイル統一から初めてくれよ。
何の意味があるのかしらんが、意味があるなら賛同者出てくるでしょ?
613:デフォルトの名無しさん
16/09/09 01:21:30.28 Wiz5/g3s.net
new auto(10)みたいに推論できる場合ならちゃんとできるみたいだけど
URLリンク(ideone.com)
ただauto main() -> int {}を書くやつは正直、俺知ってるんだぜ自慢したい厨房にしかみえない
タイプ数長くなってんじゃん、何のために導入された書き方か分かってんのかね
614:デフォルトの名無しさん
16/09/09 01:23:35.62 6Bh01W2V.net
これも頑固の良い例ですね
「言語仕様に複数のスタイルが存在してもせめて自分のコード内は統一しよう」
みたいな考えを示唆しているのに、感情的になって関係無いことを言い出すのが特長です
615:デフォルトの名無しさん
16/09/09 01:27:12.55 6Bh01W2V.net
auto main() ->int{}についてはハンをおしたように
「文字数が多い」と言い出すのも特長です
今まで同じレスを見たこともある人も多いのではないでしょうか
「スタイルの統一という観点からはあってもおかしくない」と説明されても
他人が使うことすら許せず否定に躍起になるのが特長です
616:デフォルトの名無しさん
16/09/09 01:35:22.25 6Bh01W2V.net
もちろん新しい記法が良いことばかりではありません
auto b{true};は書けてもnew auto{true}は書けないなど一貫性に乏しい所も有ります
617:デフォルトの名無しさん
16/09/09 01:36:37.09 Wiz5/g3s.net
別に他人がそう書くのを許せないわけじゃないよ
ただ俺はそう書くやつに対してはおかしなやつとかネガティブな印象を持つというだけ
今まで多くの同じようなレスがあったということは俺と同じ印象を持つ人が多いということだと思うよ
618:デフォルトの名無しさん
16/09/09 01:40:41.63 kBQSHV64.net
>>605
言語仕様に複数のスタイルとかいう話ではなく規格のコード例ですらそんな書き方必要でなければしてねえよという話
どっちが頑固なんだかね
619:デフォルトの名無しさん
16/09/09 01:40:48.56 6Bh01W2V.net
これも頑固の良い例ですね
とに新しいスタイルを見ると相手を非難しないと気が済まないのが特長です
>>608のレスにも「おかしなやつ」という攻撃的な単語が見られますが、これも一例と捉えてよいでしょう
620:デフォルトの名無しさん
16/09/09 01:41:50.71 uFCjw0pQ.net
autoつかわなくても書ける場所でこれ期バカしにauto使うヤツはバカなんだと思う
621:デフォルトの名無しさん
16/09/09 01:44:15.73 uFCjw0pQ.net
あとで型名明記するとかなんの為にauto使っているのかバカなんだと思う
622:デフォルトの名無しさん
16/09/09 01:52:18.15 6Bh01W2V.net
これも頑固の良い例ですね
型推論のautoとtraining-return-typeの先頭のautoは違うのですが
とにかく理解以前で拒絶してしまっているのが特長です
でも確かにauto f() -> auto {}みたいな書き方はかなり変人かも知れませんね
623:デフォルトの名無しさん
16/09/09 01:53:27.43 4oqKijqb.net
結局auro main() -> int{}はお遊びなのか?
624:デフォルトの名無しさん
16/09/09 02:00:06.38 uFCjw0pQ.net
>>613
本末転倒だってんだよバカ
625:デフォルトの名無しさん
16/09/09 02:00:54.91 p4LGwUo/.net
ぶっちゃけID:6Bh01W2Vってまじであの書き方がスタイルの統一のという理由が第一で導入されたと思ってそうなんだけどそうでもない?
>>612の言わんとしてることが理解できてない気がする
626:デフォルトの名無しさん
16/09/09 02:09:08.65 6Bh01W2V.net
そうですね
テンプレート関数の戻り値のために導入されたことは良いとして、
「>>612の言わんといていることはplaceholder typeとtrailing-return-typeの混同による不適切な見解ではないか」と述べているのに
「理解できていない気がする」とあやふやなのは不思議ですね
これらも頑固なことによる反射的な拒絶の一面なのかも知れません
627:デフォルトの名無しさん
16/09/09 02:16:06.31 6Bh01W2V.net
また「導入の目的とは別にスタイルの統一の観点からはあっても良いのではないか」
という説明を受けても「目的が違う」と思考停止して否定ありきで考えてしまうのも特長です
本日は600から続く一連の自演レスでその片鱗が伺えたと思います
628:デフォルトの名無しさん
16/09/09 07:33:30.80 H3RR5zb8.net
そもそもスタイルの統一にこだわる必然性はない。
タブとインデントの話と同じで混在したってかまわない。
629:デフォルトの名無しさん
16/09/09 07:36:21.12 SVVRFbIW.net
タブとインデントを混同するやつは見つけ次第殺せ
630:デフォルトの名無しさん
16/09/09 08:00:45.68 z8Otf9Pu.net
どうしてこんな釣り耐性よわいの。
A派とB派の対立じゃなくて
Bスタイルを否定すんな派とBスタイル否定派
は主観の押しつけあいで論破できるわけねーし。
631:デフォルトの名無しさん
16/09/09 08:09:04.86 H3RR5zb8.net
>>620
そういうのってなんか自閉症ぎみなんじゃないの?
632:デフォルトの名無しさん
16/09/09 08:35:47.51 G0RBn0pa.net
trailing-return-typeを、4文字以下では使わない
なんてやってると
int abs(int);
auto abs(float) -> float;
てな具合になるよなあ
ぎりぎりアウトな
char* begin(); を
auto begin() -> char*; にしながら、
俺なにやってんだろって気になることがある
633:デフォルトの名無しさん
16/09/09 08:42:02.98 oGuibT0g.net
>>620
同意する
そういう奴はたいてい他でもいいかげんだからプログラマーには向いてないことを自覚してほしい
634:デフォルトの名無しさん
16/09/09 08:55:13.21 H3RR5zb8.net
んなこたーない
635:デフォルトの名無しさん
16/09/09 11:10:43.31 kBQSHV64.net
>>623
>trailing-return-typeを、4文字以下では使わない
なんで?
636:デフォルトの名無しさん
16/09/09 11:25:30.49 G0RBn0pa.net
int abs(int); を
auto abs(int) -> int; にするメリットは?
autまでタイプした時点でやんなってくるぜ俺は
auto exit(int) -> void; とかナメとんかくらって気ぃしね?
637:デフォルトの名無しさん
16/09/09 11:50:52.32 xpG9Ka1d.net
スタイルの統一という意味では、新しいC++では
普通の関数とメンバ関数を
obj.func();
func(obj);
のどちらのスタイルでも相互に呼び出せるようにするかもしれない
って話だけど・・・
メタプログラミングの観点から見ればどちらの表記でも呼び出せたほうが
便利なのは火を見るよりも明らかだが
それはそうとして
スタイルを統一したいって言ってる頑固な約一名は
これも統一するつもり?
つまり普通の関数やメンバ関数の呼び出しを全部
obj.func(); もしくは func(obj); に統一するつもりなのかって話
で、世の中には引数を取らない関数、例えばabort()などもあるし
fgetsみたいにFILE構造体が引数の最後に来るような変態関数もあるので
統一するならCスタイルの func(obj); になると思うわけだけど
そうすると、全部 method(obj) の形式で書くつもりか?
この書き方だとエディタの補完が効かないので激しく作業効率が悪いわけだが
638:デフォルトの名無しさん
16/09/09 11:50:58.44 CsE6YZtW.net
>>627
メリットはないだろうね
639:デフォルトの名無しさん
16/09/09 11:52:48.11 kBQSHV64.net
>>627
4文字って何って話だよ
640:デフォルトの名無しさん
16/09/09 11:57:16.30 CsE6YZtW.net
スタイルの統一ってメタプロのためでしょ?
普通に書く場合はどっちだっていいし、見た目の統一なんてさらに気にするポイントじゃないし。
641:デフォルトの名無しさん
16/09/09 12:01:21.07 xpG9Ka1d.net
というかそもそも、
統一しなくてもよいように、そのために
どちらの表記でもよいようになっている
もしくはそうする予定なのに
統一する意味あんの?
642:デフォルトの名無しさん
16/09/09 12:08:44.98 G0RBn0pa.net
>>629
autoが4文字だろ?
これより長いstd::basic_string<char,std::char_traits<char>,std::allocator<char>>とかなら
autoにすると短くすっきりするが、
4文字より短い例えばintをautoにしてもそういう効果がないばかりか
厳密には1文字損してるだろって話だよ
643:デフォルトの名無しさん
16/09/09 12:09:29.33 G0RBn0pa.net
アンカー間違えた
s/>>629/>>630/gっと
644:デフォルトの名無しさん
16/09/09 12:12:46.72 kBQSHV64.net
>>633
float f();
を
auto f() ->float;
って書いたら一文字損してるって思うの?
どういう計算???
645:デフォルトの名無しさん
16/09/09 12:21:26.23 G0RBn0pa.net
>>635
逆だよ
それは1文字得してる
646:デフォルトの名無しさん
16/09/09 12:26:40.05 kBQSHV64.net
何言ってるのかわかんねー
文字の数を数えれないのかな…
647:デフォルトの名無しさん
16/09/09 12:27:41.92 G0RBn0pa.net
std::basic_string<char,std::char_traits<char>,std::allocator<char>>とかなら
autoにすると短くすっきりする
↑
これの意味わかる?
648:デフォルトの名無しさん
16/09/09 12:36:32.00 kBQSHV64.net
>>638
戻り値の型がそれだったとして
trailing-return-typeを使うと文字数は6文字(autoと ->)増える事に変わりないだろ?何言ってるんだ?
649:デフォルトの名無しさん
16/09/09 12:40:28.34 G0RBn0pa.net
>>639
まさかと思ったが、やはりそういうことか
よし、おまえはtrailing-return-typeを使うな
これにて一件落着
650:デフォルトの名無しさん
16/09/09 12:49:10.42 tc9dXmwp.net
引数に依存しないならどっちだって同じさ。
->以下を省略するのは別な話
651:デフォルトの名無しさん
16/09/09 12:51:16.50 4oqKijqb.net
聞きたいんだけど引数無しのコンストラクタが無いクラスってあり?
絶対にコンストラクタで引数を入れないといけない
652:デフォルトの名無しさん
16/09/09 12:51:31.27 CB2F3RXF.net
autoが本当に役に立つのはこういうケースだな
URLリンク(okns.webcrow.jp)
変数の型が template 引数に強く依存している場合は、auto なしにコードを書くのは本当に難しくなるだろう。 例えば:
template<class T, class U> void multiply(const vector<T>& vt, const vector<U>& vu)
{
// ...
auto tmp = vt[i]*vu[i];
// ...
}
tmp の型は T と U の乗算結果になるが、それが正確に何型であるか人間の読み手が見出すのは難しい。 しかし、もちろんコンパイラは、自身が扱っている適切な
T と U が何型であるかを知っている。
653:デフォルトの名無しさん
16/09/09 12:52:12.20 CB2F3RXF.net
ageたスマン
654:デフォルトの名無しさん
16/09/09 13:05:31.22 kBQSHV64.net
>>643
autoではなくautoキーワードを使った機能の一つであるtrailing-return-typeの話してたんだけど
お前の例を借りるなら
template<class T, class U> auto multiply(const vector<T>& vt, const vector<U>& vu) ->decltype(vt*vu)
こんな感じで引数の名前を返り値の型の決定に使いたい時の為に導入された。あとはlambda
655:デフォルトの名無しさん
16/09/09 13:23:41.38 EcclX7iE.net
>>642
「デフォルトコンストラクタが存在しないクラスを作ってもよいか?」
あるいは「クラスは必ずデフォルトコンストラクタを持つべきか?」
という質問かな。
外部から何かの値を指定しないと正常な状態にならないって対象なら
デフォルトコンストラクタなしの方が、間違った使い方をされなくて済む。
具体的には…今すぐ思いつくのは、
「ファイル名を指定、コンストラクタ中でファイルを開くクラス。
デストラクタでファイルを閉じる」とか(そもそも良い設計か分からんけど)。
この場合はデフォルトコンストラクタじゃ意味ないよね。
656:デフォルトの名無しさん
16/09/09 13:28:11.41 kBQSHV64.net
>>642
普通にある。
例えばstd::lock_guard
657:デフォルトの名無しさん
16/09/09 14:32:40.92 QrmkumON.net
>>642
あり?といういか引数無しがデフォルト
658:デフォルトの名無しさん
16/09/09 14:54:03.88 aqM9pKJ0.net
>>648
コンストラクタで絶対に引数をとらなければならないクラス設計はありかなしかという話だろう。
659:デフォルトの名無しさん
16/09/09 15:04:50.30 QrmkumON.net
>>649
あっそうかwちゃんと読んでなかった
ありかなしかで言えば「あり」としか言えない
660:デフォルトの名無しさん
16/09/09 15:05:33.87 G0RBn0pa.net
ビルトインにだって初期値必須のものがあるくらいでねえ
そもそもなぜ初期値を指定するのかという目的論をすっ飛ばしたべき論に価値はあるのか
661:デフォルトの名無しさん
16/09/09 16:15:29.42 iGJJBn3T.net
最近、生のconstructorは晒さずに、面倒でもfactoryかbuilder用意したほうが良い気がしてきた。
662:デフォルトの名無しさん
16/09/09 18:00:44.85 6P7ccOtX.net
>>651
そんなのあったっけ?
663:デフォルトの名無しさん
16/09/09 18:52:54.42 Sz+zzzeN.net
>>653
参照
664:デフォルトの名無しさん
16/09/09 19:28:06.08 xbXKfh8v.net
複合型をビルトイン型と称すとは
頭の悪さに恐れ入る
665:デフォルトの名無しさん
16/09/09 19:54:51.32 2SLUNITP.net
ビルトインをビルトイン型と見間違うとは
目の悪さに恐れ入る
666:デフォルトの名無しさん
16/09/09 20:18:37.35 Sz+zzzeN.net
>>655
ビルトイン型って知らないけど Fundamental Types のことを言ってる?
667:デフォルトの名無しさん
16/09/09 20:24:24.90 G0RBn0pa.net
N3797でbuilt-inを検索すると...
oeratorsが必ずついてくるな
そりゃ悪かった
class宣言せずに使える型、そう言いたかっただけだ
668:デフォルトの名無しさん
16/09/09 21:49:08.07 Hwi6cA5k.net
const int i{100}; // 初期値必須
669:デフォルトの名無しさん
16/09/10 13:58:51.44 qsgFq9Gu.net
関数の引数と戻り値はstd::stringとかではなくconst char*を使うべきというのを見つけたんだけど正しいのか?
670:デフォルトの名無しさん
16/09/10 14:05:38.05 fEVz11Vc.net
C++で作られたdll(関数が色々定義されてるやつ)をC++の別プログラムAに読み込ませる
プログラムAに対してjavascriptで使用する関数を指定してってのをやりたいけどできるのかな
プログラムAはただjavascriptを指定するだけと結果出力
javascriptはどの関数をどんな引数で実行するかを指定する
スクリプトってのをよく理解してないからアドバイスほしい
671:デフォルトの名無しさん
16/09/10 14:15:01.34 TwDosbdA.net
>>660
ソイツはバカ
672:デフォルトの名無しさん
16/09/10 14:26:38.33 pUoIS14d.net
>>660
fstreamをstringに依存させないために
C++98ではopenの引数がconst char*だが
C++11ではstringを渡せるようになったので
fs.open((string(
673:デフォルトの名無しさん
16/09/10 14:27:46.41 pUoIS14d.net
fs.open((string("filename") + ".ext").c_str(), ios_base::in)が
fs.open( string("filename") + ".ext , ios_base::in)で
済むようになり結構便利だね
stdの作者じゃない一般ユーザな俺らにとって、
std同士での相互依存は別に構わんのに無駄に不便だったのがC++98
独善的な「正しさ」を誰も喜ばない例だと思うぜ
674:デフォルトの名無しさん
16/09/10 14:28:54.01 pUoIS14d.net
あ、引用符が閉じてない・・・ 許せ
675:デフォルトの名無しさん
16/09/10 20:03:47.79 fxMjDbn4.net
右辺値参照が使えるようになったし、クラスオブジェクトをそのまま返してもオーバーヘッドにはならんでしょ
676:デフォルトの名無しさん
16/09/10 20:40:19.15 LBKbagU5.net
typedef enum
{
kOne = 1,
kTwo,
kN
}e;
const int n[kN]={0,100,200};
template <int N> class A
{
public:
int a[N];
};
int main()
{
A<n[kOne]> a;
return 0;
}
こんな感じのやりたんだけどnが非constだって怒られる
なにか代案ありません?
677:デフォルトの名無しさん
16/09/10 20:45:26.68 QhorBMPI.net
>>667
constexpr int n[kN]={0,100,200};
678:667
16/09/10 20:51:12.77 fvQgZoM4.net
うちのVS2010ちゃんがそんなもの知らないと言っております
679:デフォルトの名無しさん
16/09/10 20:57:30.16 QhorBMPI.net
>>669
template<int N> struct constant { static const int value = N; };
template<int N> struct n;
template<> struct n<kOne> : constant<100> {};
template<> struct n<kTwo> : constant<200> {};
A<n<kOne>::value> a;
680:667
16/09/10 21:00:17.01 fvQgZoM4.net
>>670
よさそう
ありがとうございます
681:デフォルトの名無しさん
16/09/10 23:13:18.30 LzJTocys.net
>>660
それはその言葉の真意を理解すれば正しくもあり正しくもなし
682:デフォルトの名無しさん
16/09/11 00:28:13.04 bDOLl/8E.net
引数はともかく、戻り値を常にconst char*にするのはつらい
メンバ変数で持ってるものだったらconst char*で返せるけど
関数内でジェネレートした文字列だったらどうするんだ?
683:デフォルトの名無しさん
16/09/11 00:32:24.15 bDOLl/8E.net
void func( char *output, int max_buffer )
↑こんなインターフェースもあり得るけど
呼び出すときに一体バッファサイズをどのぐらい用意すれば良いんだ?
という問題が出る
関数内でmallocして返す方法もあるけど
呼び出しもとで開放しなきゃならないから嫌だ
std::string使いましょうよ
684:デフォルトの名無しさん
16/09/11 00:44:49.84 T7xxiiqM.net
うちの会社にいるレガシープログラマもクラスを引数にするのを嫌うな
685:デフォルトの名無しさん
16/09/11 01:12:15.86 NvSd/4YA.net
税金泥棒は、RMPについて何も理解できていない
分からないくせに、ひたすらコピペを繰り返す
突っ込んだ話を始めると、チンプンカンプンで付いて来れなくなる
686:デフォルトの名無しさん
16/09/11 01:30:52.05 Y3qTK8mc.net
gccはC++11のmoveとかつかわんでも、呼出側がスタックに用意したところに
せっせと返値を書き込んでるのでクラスを返値にしたところでcopyとか余計なことはしないな。
687:デフォルトの名無しさん
16/09/11 06:19:48.63 Cz5G8II8.net
コピーする必要がなかったかも知れないのにコピーしておいて余計なことはしていないとな
688:デフォルトの名無しさん
16/09/11 08:52:00.54 uFO7Kr12.net
返り血にmove使うと事態は悪化
689:デフォルトの名無しさん
16/09/11 10:11:38.91 5FDuUIWg.net
拭き取ろうと擦れば擦るほど赤く血塗られた範囲が広がって…。
690:デフォルトの名無しさん
16/09/11 13:09:13.01 QVUfpLVG.net
特定の関数があるなしで呼び出す関数をわけたいのですけど方法はありますか
template<typename T> void hoge(T val)
{
val.hage(0);
}
template<typename T> void hoge(T val)
{
val.husa(100);
}
691:デフォルトの名無しさん
16/09/11 13:55:18.24 KOEkGnWi.net
SFINAE使えばできる
692:デフォルトの名無しさん
16/09/11 14:53:31.90 h0ayt47M.net
コードではSSE命令をまったく使わず、コンパイラ最適化でSSE使ってもらいやすくする方法って
どこかに書いてありますか?
693:デフォルトの名無しさん
16/09/11 15:31:44.83 9/O5tJ2a.net
type_traitsのテストクラスばかり使っていたらSFINAEの書き方忘れた
694:デフォルトの名無しさん
16/09/11 15:50:46.32 hGR6Mbre.net
>>683
URLリンク(msdn.microsoft.com)
695:デフォルトの名無しさん
16/09/11 22:14:42.57 OIs9p1U8.net
void func( char *output, int max_buffer )
これはさ、max_bufferで指定した範囲で対応出来るようにするための引数だろ
呼び出す側でintの範囲なら自由に決められるに決まってるだろ
696:デフォルトの名無しさん
16/09/11 22:19:35.02 m0F7Ld2f.net
↑アスペ
697:デフォルトの名無しさん
16/09/11 22:20:45.93 OIs9p1U8.net
いやいや、outputの最大値を一緒に渡すのは常識だろう
698:デフォルトの名無しさん
16/09/11 22:25:57.81 2EFm3ZKd.net
要するに、
char b[128];
func(&b[16],128-16);
ってやって、特定の範囲で処理できるのも利点だろうといってるんだと。
あんまりやらないけど。
699:デフォルトの名無しさん
16/09/11 22:34:43.72 T7xxiiqM.net
文字列クラスでもできるけど
700:デフォルトの名無しさん
16/09/11 22:37:36.83 2EFm3ZKd.net
substrだっけか?
701:デフォルトの名無しさん
16/09/11 22:38:54.98 m0F7Ld2f.net
『要するに』
超能力者>>689のオツムが心配だ
702:デフォルトの名無しさん
16/09/11 22:40:38.21 2EFm3ZKd.net
チガッテマスカ?
703:デフォルトの名無しさん
16/09/11 22:43:30.84 m0F7Ld2f.net
>>693
>>689の解釈は
『max_bufferで指定した範囲』
『intの範囲なら自由に』
という表現と整合しない。
704:デフォルトの名無しさん
16/09/11 22:45:10.47 2EFm3ZKd.net
オーバーフローを指定するような間抜けなことをわざわざするんかいな。
705:デフォルトの名無しさん
16/09/11 22:46:59.51 m0F7Ld2f.net
>>695
>>688は「intの最大」でなく「outputの最大」と言っているのだが
706:デフォルトの名無しさん
16/09/11 22:48:58.46 2EFm3ZKd.net
>>686の頭にはなんか特殊用途でもよぎったんじゃね?
俺が懇意すぎたかな・・・。Orz
707:デフォルトの名無しさん
16/09/11 22:51:16.46 m0F7Ld2f.net
深い意味はない
単に>>674を見て並んでいた単語に連想した自分の知識を反射的に書き込んだだけ
708:デフォルトの名無しさん
16/09/11 22:54:31.75 2EFm3ZKd.net
俺は>>686ではない。それはそうかもな。
俺はC++ではstd::まで書くStl派なので、このところ生配列は使ったことがない。
というか、オーバーフロー怖くて使いたくない。
709:デフォルトの名無しさん
16/09/11 23:01:21.72 67F7MmNh.net
生配列を使ったことないってことはないだろ
インターフェースにstlのコンテナとかを露出したらコンパイラ依存になっちゃうじゃん
てか高速に処理したくてスタックに配列を積みたいときとかどうするわけ?
710:デフォルトの名無しさん
16/09/11 23:04:52.03 2EFm3ZKd.net
競プロ解いてるだけだから問題にならん。
まぁ、しばらく黙るわ。
711:デフォルトの名無しさん
16/09/11 23:09:47.79 OIs9p1U8.net
俺が言いたかったのはだね、
void func( char *output, int max_buffer )
のようにchar *outputを渡すような時は、
バッファオーバーフローを防ぐために一緒にサイズも渡すってのが、
C言語での使い方では常識化してるって事だ。
712:デフォルトの名無しさん
16/09/11 23:12:11.14 m0F7Ld2f.net
わざわざ補足しなくても
そんなことはみんな知ってるから
713:デフォルトの名無しさん
16/09/11 23:14:19.23 OIs9p1U8.net
>>674 が変な事言ってたからだ
714:デフォルトの名無しさん
16/09/11 23:17:06.20 67F7MmNh.net
競プロでSTLコンテナなんて使うか??
アルゴリズムとかはそのまま使えるけどコンテナは普通生配列か必要に応じて自前の使うだろ?
715:デフォルトの名無しさん
16/09/11 23:19:39.01 2EFm3ZKd.net
ガチ勢じゃないからね。
最近ではリングバッファほしい位で満足してるよ。
STLコンテナで解けないなら、アルゴリズムが悪い事が多い。
716:デフォルトの名無しさん
16/09/11 23:20:05.58 m0F7Ld2f.net
>>704
>674の懸念は別に変じゃないぞ
変なのは>>674を理解できなかったお前だ
717:デフォルトの名無しさん
16/09/11 23:20:10.89 T7xxiiqM.net
>>700
規格準拠度が低いクソみたいなコンパイラを使わない
718:デフォルトの名無しさん
16/09/11 23:22:00.72 m0F7Ld2f.net
どうしたいきなり
>>700も関係無いことを言いだして
719:デフォルトの名無しさん
16/09/11 23:22:32.77 m0F7Ld2f.net
誤 700も
正 700と
720:デフォルトの名無しさん
16/09/11 23:23:32.91 OIs9p1U8.net
>>707
いやいや、おかしいよ。
void func( char *output, int max_buffer )
を使うのにバッファを意識しないプログラムとかありえないだろ
バッファがどのくらいか分からんのに
void func( char *output, int max_buffer )
とか間違ってるだろ。
これCの使い方だぞ
721:デフォルトの名無しさん
16/09/11 23:28:22.83 T7xxiiqM.net
>>705
競プロなんていうマイナー分野の話なんかしてないし
実行時間のほとんどはアルゴリズム依存なんだから1%未満のオーバーヘッドが影響するわけが無い
固定長配列はarrayを使うべきだし、動的にサイズを変えないといけない場合vectorでまとめて確保して普通のnewした配列として使えばいい
他人の競プロのコード見たら使いまくってるしな
722:デフォルトの名無しさん
16/09/11 23:39:10.29 m0F7Ld2f.net
>>711
よくわかった
>>674の『バッファサイズをどのぐらい用意すれば良いんだ?という問題が出る』
を単語レベルに近い連想で文を捉えるから珍妙な解釈になる
レスを100回読み直せ
723:デフォルトの名無しさん
16/09/11 23:46:15.15 M5lO5IQC.net
ID:2EFm3ZKdの背伸びが痛々しい。
このスレで一番出来ない子が何をいっちょまえにレスしてんだか…。
なぁーにが「競プロ解いてるだけ」だよド素人が。
724:デフォルトの名無しさん
16/09/11 23:48:48.59 OIs9p1U8.net
>>713
だからよ、
>バッファサイズをどのぐらい用意すれば良いんだ?という問題が出る
って言うような疑問がおかしいんであって、
void func( char *output, int max_buffer)
はサイズを指定して使うもんだ。それ以外にあるかよ。
パターンもパターンやんけ。
バッファサイズがわからん状態で、、
void func( char *output, int max_buffer)ってのはあり得ないんだよ
725:デフォルトの名無しさん
16/09/11 23:49:06.36 2EFm3ZKd.net
>>714
はっはー。おだいじんさまぁ~。
726:デフォルトの名無しさん
16/09/11 23:54:09.86 IuKZJB78.net
>>715
別の関数で必要なサイズを返すのか?
変更が別スレッドだったら、さらにロック、アンロックの関数がそれぞれ必要になるな。
727:デフォルトの名無しさん
16/09/12 00:00:05.72 JmiC7f4k.net
じゃー背伸びついでに言っとくわ。
その関数voidだから失敗したかどうかわからんから、バッファ入力サイズを推定できない。
728: ドキュメント読め。
729:デフォルトの名無しさん
16/09/12 00:03:56.69 JmiC7f4k.net
チッ間に合わなかった。
730:デフォルトの名無しさん
16/09/12 00:04:01.94 GwVwE6OL.net
いやいや、
void func( char *output, int max_buffer)
ってのは
char *output に結果を返すんだよ。
そんなのもわからんのか。
max_bufferはオーバーフローを防ぐための物だ。
何を言ってんだ一体
731:デフォルトの名無しさん
16/09/12 00:04:29.54 hz43BbCS.net
例外使わないのか
初心者なのかレガシープログラマなのか
732:デフォルトの名無しさん
16/09/12 00:04:37.05 Tu0jZEI4.net
>>715
その部分の日本語の理解が間違っているとわざわざ教えてやっているのに
他にどういう理解があり得るのかも考えずゴミレスを繰り返すとは
アスペなだけでなくて荒らしのつもりなのか?
733:デフォルトの名無しさん
16/09/12 00:05:58.76 JmiC7f4k.net
>>720 そんなちゃんぽん仕様にしなくても戻り値一個設定すれば済む話じゃないか。 汚いと思う。
735:デフォルトの名無しさん
16/09/12 00:07:03.07 GwVwE6OL.net
Cやってたらvoid func(char *output, int max_buffer)なんてパターンだろ。
基本中の基本だろ。
736:デフォルトの名無しさん
16/09/12 00:08:06.86 JmiC7f4k.net
染まってるのか。
まぁいいや。
黙るって言ったから黙る。
737:デフォルトの名無しさん
16/09/12 00:08:07.10 WISOHly2.net
723 : デフォルトの名無しさん 2016/09/12(月) 00:05:58.76 ID:JmiC7f4k
>>720
そんなちゃんぽん仕様にしなくても戻り値一個設定すれば済む話じゃないか。
汚いと思う。
738:デフォルトの名無しさん
16/09/12 00:09:36.24 Tu0jZEI4.net
バッファサイズ指定の関数で溢れた時に例外をスローするのは珍しいな
Visual C++の_s関数の配列オーバーロードはそんな仕様だった気もするが
739:デフォルトの名無しさん
16/09/12 00:09:38.22 WIrRwO5G.net
>>715
URLリンク(msdn.microsoft.com)
バッファサイズを指定できても、結果を正しく格納するのに必要なバッファサイズはわからない
ってことはあるんだよ。
740:デフォルトの名無しさん
16/09/12 00:11:17.09 GwVwE6OL.net
void func( char *output, int max_buffer)
これはさ、max_buffer以内で絶対に納めるって前提があるんだよ。
その為のmax_bufferだぞ。
max_bufferの指定が間違ったらエラーなんだよ。
他にどういう使い方あるんだよ
741:デフォルトの名無しさん
16/09/12 00:11:25.69 XcxNhSoL.net
>>728
マクロでパスの最大規定されてる
742:デフォルトの名無しさん
16/09/12 00:13:42.09 GwVwE6OL.net
結果を正しく格納するのに必要なバッファサイズが、max_bufferだろ。
char *outputのサイズがmax_buffeなんだよ
char *outputがオーバーフローしないように、max_bufferを上限に処理をして、
char *outputで返せばオーバーフローしないって仕組みなんだよ。
743:デフォルトの名無しさん
16/09/12 00:14:04.49 Tu0jZEI4.net
まさか>>728のやさしいレスを見てもまだ世迷い言が続くとは
これはホンモノだ
744:デフォルトの名無しさん
16/09/12 00:18:26.76 GwVwE6OL.net
おまえなにもわかってないだろ。
何ひとつ自分で説明してないだろ。
745:デフォルトの名無しさん
16/09/12 00:21:57.49 U6Ajls88.net
>>732
老害プログラマによくいる切り捨てられても気にしない、切り捨てによって発生したバグが確認されて初めてバッファーサイズをプログラム内の定数値で変更する人なんでしょ。
C++使ってるなら正しく処理する為には多大な面倒が発生する手法なんて使うなって事なんだけど老害にはそれが理解出来ないらしい。
746:デフォルトの名無しさん
16/09/12 00:22:27.92 /3fOrQXc.net
max_bufferがあるからバッファオーバーフローを防ぐことが出来る
逆にmax_bufferが効果を発揮する状況というのは
結果を正しく格納するのに必要なバッファサイズがmax_bufferを越える時だ
従って>>731の最初の行は間違っている
747:デフォルトの名無しさん
16/09/12 00:23:39.94 XcxNhSoL.net
最大値をどうすればいいのかって話でしょ
728の例だと別の場所で最大値は決まってる
でもバッファサイズ3とか小さすぎると欲しい情報は帰ってこない
当然オーバーフローはしないけど
748:デフォルトの名無しさん
16/09/12 00:27:04.07 feiUf+9B.net
バッファっていう概念がちょっとズレてんのかもな
Cやってる人はコップでプールの水をすくうとき
コップがバッファだ
コップの大きさで回数を重ねてすくう
コップを最大まで大きくしなきゃいけないとか
必要なコップサイズは、などとは考えない
それがバッファ
749:デフォルトの名無しさん
16/09/12 00:28:34.40 Tu0jZEI4.net
>>730
文脈を理解できない低能は去れ
>>733
健常者なら『レスを100回読み直せ』で理解できると思ったので敢えて説明しなかった失礼
では説明してやろう
<呼び出し側>
vector<char> result(★);
func ( &result[0], result.size() );
>>674はこの★をどう決定するかが
呼び出し側コードを書く者の負担になると言っている
750:デフォルトの名無しさん
16/09/12 00:28:41.75 GwVwE6OL.net
だからよ、C++の使い方で
void func( char *output, int max_buffer)
を使おうとすれば、Cのバッファを意識する使い方以外に無いだろ。
それをストリングクラスの代わりに
void func( char *output, int max_buffer) を使う手ももあるが、
バッファのサイズをどうするかが問題、とか言ってるから、
そういう使い方はしないし間違ってるって言ってんだろがよ
751:デフォルトの名無しさん
16/09/12 00:30:38.58 GwVwE6OL.net
void func( char *output, int max_buffer)
これはよ、char *outputのサイズを意識しない限り、動かせないプログラムだよ
このサイズが分からない時に、
void func( char *output, int max_buffer) を使うってのは無いんだよ
それをあるって言うから、無いって言ってんだよ 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
752:デフォルトの名無しさん
16/09/12 00:35:45.75 XBLhc0H+.net
>>740
一旦これだけは言っておくが
おまいの言っていることは正常でしかもごくあたりまえのこと
おそらくその点を繰り返す必要はもうないし
そのことはみんな分かってる
読み込む前にサイズ分からないものがあるよね?
そのときは固定サイズじゃ読み込めないよね、
的なことをおまいの相手は繰り返し言ってるんじゃないか?
配列に対するベクタの利点みたいな部分を言いたがってる気がする
753:デフォルトの名無しさん
16/09/12 00:40:53.14 XcxNhSoL.net
最大値がどっかで決まってるか、outputにヌルいれると必要なサイズ返るとかが普通じゃね
その関数だけじゃ必要なサイズがわからんというお話
パスが欲しいのにバッファ小さすぎてドライブレターだけ返ってきても意味無いわけで
754:デフォルトの名無しさん
16/09/12 00:43:58.37 GwVwE6OL.net
void func( char *output, int max_buffer)
を使う前にはサイズを把握してないと駄目ってだけだよ。
それが把握できんのにこういうCライクな使い方は間違ってるって俺は言ってるだけだよ
755:デフォルトの名無しさん
16/09/12 00:47:09.50 hz43BbCS.net
C言語的なインターフェイスは不便だからC++らしく書きましょう
756:デフォルトの名無しさん
16/09/12 00:47:23.61 U6Ajls88.net
>>743
格納サイズを把握してたらmax_bufferなんて要らなくね?
757:デフォルトの名無しさん
16/09/12 00:51:26.47 GwVwE6OL.net
>>745
いやオーバーフロー対策の最大値だから
引数で明示的にサイズを渡しましょうって取り決めだ
758:デフォルトの名無しさん
16/09/12 01:02:10.22 Tu0jZEI4.net
>>743の達した結論が
>>674とほぼ同じに思えてならない
759:デフォルトの名無しさん
16/09/12 01:10:30.26 hz43BbCS.net
いまさらそんな40年前からある常識を言われも困る
760:デフォルトの名無しさん
16/09/12 01:13:36.21 WIrRwO5G.net
>>730
>728 で挙げた MSDN のページにそんな規定は見当たらないんだけど、どこ見て言ってるの?
MAX_PATH の類のことを言ってるなら、よくある勘違いだろうと思うんだ。
URLリンク(www.google.com)
URLリンク(d.hatena.ne.jp)
761:デフォルトの名無しさん
16/09/12 06:52:52.36 y21Asc3i.net
MAXPATH があてにならんのは確かだが
サイズ取得せずにリトライするのもダメ臭が
762:デフォルトの名無しさん
16/09/12 08:08:53.69 46mLPt5D.net
書き込んだサイズを返すくせに必要なサイズを
調べる機能が規格に無いstd::mbstowcsはクソ
763:デフォルトの名無しさん
16/09/12 09:10:27.05 HZgwCDH3.net
プログラミングのコードを書く時のタブvsスペース戦争がついに決着
URLリンク(www.gizmodo.jp)
URLリンク(www.gizmodo.jp)
URLリンク(www.gizmodo.jp)
764:デフォルトの名無しさん
16/09/12 09:38:06.48 y21Asc3i.net
優れたデータから生まれるクソ同然な解説
765:デフォルトの名無しさん
16/09/12 10:27:38.72 CKtP/5ek.net
おまえTAB派かw
766:デフォルトの名無しさん
16/09/12 11:33:25.20 +YsVO5lS.net
タブスペース混在で起きる問題とは?
767:デフォルトの名無しさん
16/09/12 12:31:33.38 ZblQazo2.net
タブ幅が決まってないのが一番の問題だな。2,3,4,8みんなバラバラ。
768:デフォルトの名無しさん
16/09/12 13:20:51.17 s5J5+4ba.net
pythonが致命傷を負う
769:デフォルトの名無しさん
16/09/12 13:57:05.61 x7GAwvaf.net
>outputにヌルいれると必要なサイズ返るとかが普通じゃね
必ずしもそれが有効かどうかわからないから困る
必要なバッファサイズを取得してから実際に文字列を取得するまで
関数を二回呼び出す必要があり�
770:Aここに時間差があるのが問題 マルチスレッドで問題になる 取得したバッファサイズは既に古い情報になっている可能性がある これを解決するにはLockするしかない obj->lock(); size_t buffer_size = obj->func( nullptr, 0 ); std::vector<char> output( buffer_size ); obj->func( outputr.data(), output.size() ); obj->unlock(); こんなコードはまさに糞であるということ しかも、lock、unlockをし忘れても、たまたまのタイミングの物で、そこそこ動きそうというのが怖い つまり、ほんの短い期間の間に、文字列が更新されて取得したバッファサイズが無効になるほうが珍しいだろう しかし、ありえないことではない 1000回に1回だけ失敗するというのが一番怖い これに比べれば、関数内でnew char[]して返すほうが、まだいくらかマシに思えるぐらい しかしこれをやると、帰ってきた文字列は自分で開放しなければならないのか あるいは開放してはダメなのか、解放関数はdelete[]なのかfreeなのかあるいは別の専用関数なのか ということが関数ごとにマチマチになり、非常に煩雑になる std::string output = obj->func(); のほうが断然良い、誰の目にも明らか、短い、シンプル lock、unlockを呼び出し元が保証しなければならないのは良くない 必要な処理が一発の関数呼び出しでキマるように設計すれば、同期処理はobj内に隠蔽できる こちらのほうが良い 単に文字列取得するだけでlock、unlockが必要というのは狂気の沙汰 >>700のような特殊な場合を除いては、ね
771:デフォルトの名無しさん
16/09/12 15:42:12.58 tjH2oYJX.net
ってか
void func( char *output, int max_buffer)
なんてI/Fを書いちゃってることが問題なんじゃねーの?
これでなんとかしようって考えたって生産性ないし
772:デフォルトの名無しさん
16/09/12 16:16:50.47 ZblQazo2.net
cのIFだから古臭いのはしょうがない。
効率悪くなってもstd::string吐くようにラップして二度と触らないのが吉。
773:デフォルトの名無しさん
16/09/12 16:45:03.11 +C5a7cGR.net
void func( char *output, int max_buffer)
これ、ニワカが作ったダメな見本
普通
size_t func( char *output, size_t max_buffer)
774:デフォルトの名無しさん
16/09/12 17:01:45.51 2Vwoh4uN.net
ゴミが得意気に難癖つけてて笑える
775:デフォルトの名無しさん
16/09/12 17:58:57.32 KCLSxXC3.net
同じ意味じゃんw
776:デフォルトの名無しさん
16/09/12 18:06:15.51 5/ctHFsj.net
マルチスレッドのリテラシーも無いのにクソみたいな長文をドヤ顔で貼り付ける>>758が哀れで仕方ない
2回のfnucの呼び出しの間にバッファーが変更される状況では単独の呼び出しすら破綻していることが理解できないらしい
777:デフォルトの名無しさん
16/09/12 18:13:03.76 Brz5tLm8.net
彼に限らず何らかの問題意識を訴える子が
なぜか突然マルチスレッドを絡めてくるのはもはや伝統芸
そして一通り話を聞いてみると
「そうだね、排他だね」としか言いようがないことも毎度
778:デフォルトの名無しさん
16/09/12 18:27:11.87 x7GAwvaf.net
std::string output = obj->func();
の場合、funcの中で排他処理をしていれば、呼び出し元は排他処理について気にしなくてよい
アトミックな操作ということになる
文字列の取得にかかわらず、アトミックが期待される処理は
分解せずに一つの関数で実現すべきである
personオブジェクトの取得なら、person = obj->get_person(); とすべきであり
person.set_name( obj->get_persion_name() );
person.set_age( obj->get_persion_age() );
のように分解してしまうとアトミックでなくなるから、やはりロックが必要になる
外からオブジェクトをロックする、そういうI/Fをobjに用意するということは
何時でも何処でも好き勝手にロックできるというわけで
使い方を誤るとデッドロックを引き起こす可能性がある
ロックの順番はクラス設計者が明確に管理し、隠蔽すべき
さて、文字列取得を二つの関数に分けて行うとアトミックな操作でなくなるから
呼び出し元で排他処理をしなければならなくなる
obj->lock();
size_t buffer_size = obj->func( nullptr, 0 );
std::vector<char> output( buffer_size );
obj->func( output.data(), output.size() );
obj->unlock();
これは非常に面倒なので君らは直ぐにでもstd::stringを返すラッパーを書く
そうすれば結局同じことになるので、初めからstd::stringを返せばよい
もとより文字列の取得はアトミックであることが期待されるわけだから
一回の関数呼び出しで行うのが筋である
779:デフォルトの名無しさん
16/09/12 18:43:38.31 5/ctHFsj.net
一生懸命考えた結果がコレか?
呼び出し側が自らコンカレントな使い方する前提でロック必須と言われてもねぇ
その内vectorのremove&eraseイディオムにも排他が必要で狂気の沙汰とか言い出しそうだな
780:デフォルトの名無しさん
16/09/12 18:44:31.77 x7GAwvaf.net
どれだけの処理を一つの関数で行うべきかは
どこまでの処理がアトミックと期待されるか、による
文字列の取得はアトミックであることが期待されるので
一つの関数でアトミックに実行すべき、となる
場合によればアトミックの範囲がもっと広がることもある
例えばpersonの情報が欲しいとき、名前と年齢を別々に取得するのはよくない
名前の取得と年齢の取得のそれぞれが独立して排他処理してあって正しく動いたとしても
全体として名前と年齢のペアが一致しなくなる可能性があるから
だからこの場合、personの情報は一つの関数呼び出しで行い、アトミックである必要がある
なので、一つの関数で実行すべきこと、アトミックに実行すべきこと、は
文字列の取得なんかよりは大きな範囲、粒度になることはある
大きくなることはあり得るということ
が、間違っても、文字列の取得などというプリミティブな処理を
バッファサイズの取得と文字の取得の二つに分割したほうが良い
とはならない
781:デフォルトの名無しさん
16/09/12 18:50:01.82 x7GAwvaf.net
>>767
>必ずしもそれが有効かどうかわからないから困る
と書いた通り、すべての場合とは言っていない
困る場合があるといっている
そして、困る場合での話である
782:デフォルトの名無しさん
16/09/12 19:40:26.75 5/ctHFsj.net
なるほどつまりは>>765だな
この論法は非constメンバー関数を使ったイディオムに広く使えそうだ
「~って普通だろ?」
↓
「必ずしもそれが有効かどうかわからないから困る(長文略)」
783:デフォルトの名無しさん
16/09/12 21:04:54.81 U6Ajls88.net
>>767
呼び出し側だけとは限らんでしょ。
非同期でデータメンバーを更新しつつ、更新通知をだすクラスとか
784:デフォルトの名無しさん
16/09/12 22:29:31.42 2Vwoh4uN.net
一発でstringやらvectorで返すなら常識的に言ってロックは必要ないわな
何話してるのか分かってない奴が力んでるな
785:デフォルトの名無しさん
16/09/12 23:29:00.60 3LkOVCr7.net
タブ幅は8である。但し、一度タブキーを叩くと4つのスペースが入る
但しそれで8つのスペースとなるときはそれを一つのタブに換える
786:デフォルトの名無しさん
16/09/13 00:03:18.93 ZWXE0Cz9.net
いやタブとスペース混ぜるのは論外でしょ
787:デフォルトの名無しさん
16/09/13 00:39:27.54 UjtLBJZw.net
混ぜると誰かがコード整形したときに全部差分に出るから邪魔
788:デフォルトの名無しさん
16/09/13 00:51:46.06 nTkG/AQ9.net
>>772
そんな事でロックが必要かどうか決まらないと思うが何を言ってるんだ?
789:デフォルトの名無しさん
16/09/13 01:06:54.89 TGJSQl0M.net
VZエディターとか混ぜてたな
790:デフォルトの名無しさん
16/09/13 01:20:10.44 7Uxx8QPD.net
基本的にインデントが何段階も必要な入れ子はよくない
許容範囲は2つまでだな
791:デフォルトの名無しさん
16/09/13 02:29:06.46 qRIDBJHy.net
論点がずれてんじゃんw
792:デフォルトの名無しさん
16/09/13 04:10:18.62 ifCWTkZq.net
>>775
差分取るときホワイトスペース無視すればいいだろ
793:デフォルトの名無しさん
16/09/13 05:08:48.43 E9px3zRx.net
std::get_temporary_buffer ってなんであんなクソ仕様で作ったの
794:デフォルトの名無しさん
16/09/13 05:14:57.49 ifCWTkZq.net
それ知らんかったけどクソだからC++17でdeprecatedになるのか
795:デフォルトの名無しさん
16/09/13 07:08:31.21 fa0Yw14i.net
引数の異なる関数を関数テーブルにまとめる方法ヘルプミー
796:デフォルトの名無しさん
16/09/13 07:11:36.75 jvr3tDVu.net
型が違うから難しくね?同名でオーバーロードするんじゃだめなんかい。
797:デフォルトの名無しさん
16/09/13 07:21:28.20 6YUjJJm0.net
テーブルの別の要素で引数と返り値の型を記憶しておき、任意の関数ポインタ型にreinterpretして保存
呼び出し時は記憶した引数と返り値のの型に対応する関数ポインタ型にreinterpretしてから呼び出す。
798:デフォルトの名無しさん
16/09/13 07:56:45.02 BC6G6r/f.net
>>783
それどうやって使うつもりなの?
799:デフォルトの名無しさん
16/09/13 08:09:28.64 LgTr6ZxA.net
>>785
やはり別物で統一して記憶させるしかないか…
要は入れてから後にキャストだよね
>>786
関数群30ぐらいあるからそれを管理しやすくしたい
別にenumで関数名入れておくのと
関数名に対応したインデックス拾ってくる関数を用意しておいて
後に使いやすく
800:デフォルトの名無しさん
16/09/13 08:11:50.46 jvr3tDVu.net
酷い設計って言っていい?
801:デフォルトの名無しさん
16/09/13 08:20:36.44 BC6G6r/f.net
>>787
> 後に使いやすく
ごめん、全然使いやすくなるイメージがないんだが...
単にまとめときたいだけならクラス作って静的メンバ関数でいいような気がするし
802:デフォルトの名無しさん
16/09/13 08:29:56.17 LgTr6ZxA.net
>>789
関数名を別ファイルから取り出して動的に動かすためにはこれしかなかった
まとめておいてプログラム内で処理ならそれで良いけど
今のところそうなってるからそれに会わせるしかないんだ
803:デフォルトの名無しさん
16/09/13 08:32:38.69 jvr3tDVu.net
可変長引数取る関数内でスイッチするのと大差なさそう。
804:デフォルトの名無しさん
16/09/13 08:33:59.57 Dh1MHapU.net
>>791
はぁ??
805:デフォルトの名無しさん
16/09/13 08:39:26.37 LgTr6ZxA.net
>>791
結局どこかで分岐処理によるキャストするからほぼ変わらん気もする
これに関連する話だけど
int (*func)(void*)みたいな関数ポインタがあって
引数二つにするにはどうやってキャストしたら良いんだろうか
806:デフォルトの名無しさん
16/09/13 08:43:25.81 kwiFGb/T.net
まず関数の型をtypedefしようぜ。
807:デフォルトの名無しさん
16/09/13 08:47:38.13 GD/RUd4Y.net
windows のマクロまみれのメッセージディスパッチと同じようなことじゃろ
808:デフォルトの名無しさん
16/09/13 08:57:44.86 jvr3tDVu.net
URLリンク(ideone.com)
こういう感じのこと思いついたけど、できんかった。テヘペロ。
関数複製するんだから通ってほしいなぁ。
なんかテンプレマジックで通らんかなぁ。
809:デフォルトの名無しさん
16/09/13 09:02:38.95 jvr3tDVu.net
これができたら、ファクトリーメソッドがパラダイス。
810:デフォルトの名無しさん
16/09/13 09:51:20.93 jvr3tDVu.net
特定の型のパラメータパックってできなかったっけ?
Anyのパラメータパック食わせれば解決するんだけどなぁ・・・。
811:デフォルトの名無しさん
16/09/13 11:14:43.16 nTkG/AQ9.net
やりたいことにたいして少し大仰だが、Boost.Pythonのようなものでインタプリタからどうやって型安全に関数を実行してるか見たら少しは参考になるんじゃない?
812:デフォルトの名無しさん
16/09/13 12:49:03.21 BC6G6r/f.net
>>790
> 関数名を別ファイルから取り出して動的に動かす
なら初めからそう書いてよ
使いやすさ云々じゃないじゃん
関数名を特定するのはいいけど引数は関数毎にバラバラなんでしょ?
結局どこかで分岐が必要な気がする
それとも引数は Variant みたいななんでも入れられる変数の配列にしてしまうとか
813:デフォルトの名無しさん
16/09/13 17:00:07.27 dUelqKgA.net
>>783
#include <functional>
double foo(double x) { return x; }
int bar(int x) { return x; }
int main()
{
std::function<double(double)> table[2];
table[0] = foo;
table[1] = bar;
}
814:デフォルトの名無しさん
16/09/13 18:18:50.00 LmZnag12.net
>>801
コードサンクス
ただこれはintとdouble型に対してだからできるんじゃないのだろうか
>>800
そういうことだね
だからどこかでキャストし直す必要がある…はず
あらかじめどこかにパターンを定義しておいてそれはもうスイッチ文に頼るしかないかなって考えてる
815:デフォルトの名無しさん
16/09/13 18:20:35.88 LmZnag12.net
>>797
俺もパラダイスを目指している
Cならエラー出ずにできるみたいなんだよね
C++でxmlをjsonにパースしたり
jsonを簡単に読み込む方法ってあったっけ?
ないならC#も考えないとな…
816:デフォルトの名無しさん
16/09/13 19:01:39.86 bDDPvjQm.net
実行時に文字列を比較して分岐することのどこにパラダイスを見いだせるんだよ
817:デフォルトの名無しさん
16/09/13 20:22:41.37 BC6G6r/f.net
>>803
調べてないけどライブラリぐらいあるんじゃね?
818:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 21:57:21.43 7T7m5n2i.net
質問です。
placement newの関数の宣言と定義はどこに書くのが正解ですか? よろしくお願いします。
819:デフォルトの名無しさん
16/09/13 22:04:54.99 6F1+hrdF.net
>>805
picojsonとやらを使ってみた
便利なんだけど配列二つあると積む現象が起きてしまった…
820:デフォルトの名無しさん
16/09/13 22:23:58.73 eOd6ZBDo.net
jscriptで読めるから
WSHでアプリで実行
821:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 22:34:06.63 7T7m5n2i.net
ReactOSというOSの開発をしています。
ヘッダー<new>と<crtdbg.h>のnewの宣言が衝突していて、<new>が使えません。
どうしたら正しく配置newが使えますか?
822:デフォルトの名無しさん
16/09/13 22:52:09.89 7Uxx8QPD.net
自分のソフトの販売権がカシオが取得とかねつ造してたやつだ
823:片山博文MZ ◆T6xkBnTXz7B0
16/09/13 22:59:05.82 7T7m5n2i.net
わかりました。ReactOSのSTLかCRTのコードが間違っているということですね。
配置newは<new>をインクルードしたら使えなければおかしい。
824:デフォルトの名無しさん
16/09/13 23:06:52.68 7T7m5n2i.net
自分の商品の販売権をどう決めようが勝手でしょう。会社名を出したのは悪かったが。
825:デフォルトの名無しさん
16/09/13 23:08:15.35 jz2gr8q/.net
ライバル会社かなにか?
826:デフォルトの名無しさん
16/09/13 23:15:36.33 7Uxx8QPD.net
>>812
おまえカシオが権利を所有とか書いてたんだろ
カシオと専売契約交わしたみたいに書いてたろ
カシオが知らんと思うてか
827:デフォルトの名無しさん
16/09/13 23:21:08.73 7T7m5n2i.net
>>814
誤解です。メールで交渉中でした。
828:デフォルトの名無しさん
16/09/13 23:29:04.40 7Uxx8QPD.net
>>815
うそつけこら。おまえがメール送ってただけやろが。
往生際が悪い。全部バレとんねん
狭い業界でごまかせるとおもうなよ
829:デフォルトの名無しさん
16/09/13 23:33:01.44 7T7m5n2i.net
すみません
830:デフォルトの名無しさん
16/09/14 00:03:18.61 3NkcLiKm.net
反省してます
831:デフォルトの名無しさん
16/09/14 01:01:49.61 QlIAHX1m.net
なんやなんや
832:デフォルトの名無しさん
16/09/14 02:49:36.41 Xhtlj9Sh.net
マトラボスレ勢いなさすぎ。
誰かイコライザのコーディング教えてくれや
833:デフォルトの名無しさん
16/09/14 03:15:05.48 Pl2/S2ti.net
イコライザってなに?
834:デフォルトの名無しさん
16/09/14 03:18:25.05 EjX8GKMV.net
信号処理
835:デフォルトの名無しさん
16/09/14 03:53:21.14 qczVS6OA.net
FFTか。言葉しかしらん。
836:デフォルトの名無しさん
16/09/14 04:57:26.35 8Y7m8SBN.net
高速フーリエ変換か
837:デフォルトの名無しさん
16/09/14 08:16:10.34 58JMlqKS.net
placement newの関数を自分で書く素振りを見せながら
newをインクルードとか、何言ってんだか。
標準ヘッダーが衝突するなら処理系作った奴に聞け
838:片山博文MZ ◆T6xkBnTXz7B0
16/09/14 11:33:48.49 3NkcLiKm.net
>>825
ありがとうございます。
839:デフォルトの名無しさん
16/09/14 18:34:08.81 O92aoqkR.net
CppUnitによるテストって登録件数が多くなった場合…なんとかならんもんかね
1000を越えるとかマジで嫌なんだが
840:デフォルトの名無しさん
16/09/14 18:59:00.04 EjX8GKMV.net
何が嫌なんだ
時間がかかるってことなら分割したらいいじゃないか
841:デフォルトの名無しさん
16/09/14 19:15:10.96 O92aoqkR.net
>>828
コードがめっっっちゃ汚くならね?
1000個テストするなら1000行似たこと連続で書くんでしょ?
842:デフォルトの名無しさん
16/09/14 19:27:01.68 EjX8GKMV.net
>>829
テストコードも名前を付けてモジュール化すればすれなりに見やすくはなるんじゃないか
どこで何のテストをしているか見つけやすくなるし
843:デフォルトの名無しさん
16/09/14 19:57:41.83 C1VR7bWr.net
>>830
ファイル分割するってことだろうか?
844:デフォルトの名無しさん
16/09/15 00:14:31.25 SldeaLfO.net
別にそれCppUnit 固有の問題じゃねーじゃん。
お前のテストコード作成全般の問題だろ。
845:デフォルトの名無しさん
16/09/15 01:28:50.14 NSWALpAD.net
>>829
「似たこと連続で」ならマクロでも何でも使ってまとめりゃいいだろ。
846:デフォルトの名無しさん
16/09/15 06:31:33.82 eCorjc8D.net
URLリンク(ideone.com)
URLリンク(nonbiri-tereka.hatenablog.com)を見て勉強中なのだが、
なぜ、test_addでaddをラップしてるのかがわからない
addに引数を持たすことが出来ないのか。
また、addの足し算が引数をaが1-100だった場合、今の俺では100個記述することになる
マクロを使用とかすれば解決できそうだけど、適切に使う方法が思いつかないんだ…
外部ファイルとかからの読み込みでも良いので何かしらヘルプ・・・・
void FunctionTest::test_add(){
CPPUNIT_ASSERT_EQUAL(3+2,func->add(3,2));
}
この部分を何個も書いて
CPPUNIT_TEST(test_add);//メンバ関数の登録ってのを
CPPUNIT_TEST(test_add);//メンバ関数の登録
CPPUNIT_TEST(test_add1);//メンバ関数の登録
CPPUNIT_TEST(test_add2);//メンバ関数の登録
.....となってしまう
847:デフォルトの名無しさん
16/09/15 08:43:36.54 wjxOqoMl.net
コンパイル時と実行時の違いがあるから直接指定はできないよ。
lambdaとかbindでいけんじゃね?試してないけど。
848:デフォルトの名無しさん
16/09/15 09:20:50.32 Dfv6m4lx.net
凝ったことをした挙句テスター自体にバグ仕込んでテスト無効とか馬鹿らしいから
1回きりと割りきってシンプルに書くという考えもある
849:デフォルトの名無しさん
16/09/15 10:13:14.67 dJJn2WBE.net
template<typename...Args> void hoge(Args...args){}
hoge({1,2,3});
としたら
hoge(std::initializer_list<int>)
のように推論して欲しいのですが何故できないのですか
850:デフォルトの名無しさん
16/09/15 10:40:36.62 krf6YZ+h.net
URLリンク(ideone.com)
851:デフォルトの名無しさん
16/09/15 10:41:24.48 krf6YZ+h.net
投稿を暴発してしまった。
自動では推論してくれないみたいだねぇ。なんでだろう・・・。
852:デフォルトの名無しさん
16/09/15 14:05:17.34 OOrl8bCH.net
勝手に変換されても困るべ
853:デフォルトの名無しさん
16/09/15 16:06:02.66 qnepHcI/.net
C++PRIMER 5TH KINDLE版でシコシコするのはどう思いますか。
尼ではさっぱり人気がないようですが。
854:デフォルトの名無しさん
16/09/15 16:40:29.83 gyul79OX.net
あの手の本は意味がないよ
どんだけ、言語の仕様に詳しくなっても何の得にもならんからな
855:デフォルトの名無しさん
16/09/15 19:22:13.92 BBoNUH+R.net
熱い江添批判
856:デフォルトの名無しさん
16/09/15 20:07:08.11 95/CUQAP4
おっと江添の悪口はそこまでだ
857:デフォルトの名無しさん
16/09/15 20:07:39.04 axqGMSjf.net
おっと江添の悪口はそこまでだ
858:デフォルトの名無しさん
16/09/15 20:59:53.90 XkA1sBZN.net
少なくとも言語仕様を把握してない奴にライブラリは作って欲しくない
859:デフォルトの名無しさん
16/09/15 21:49:37.24 7lTxlp13.net
つまりハゲはライブラリ作るな
860:デフォルトの名無しさん
16/09/15 21:50:15.59 umQizf+V.net
言語仕様が
げんこつ塩ラーメン
に見えた
ちょっと夜食食ってくる
861:デフォルトの名無しさん
16/09/16 06:27:51.21 nhdK38ZD.net
「言語仕様」→「げんごしよー」→「げんこつしおらーめん」
漢字の視覚情報として入力されたパターンを、
脳内でいったん音声情報に変換してから似た言葉に錯誤したのね。
俺の認識手順と違うみたいなので理解するのに手間取った。
862:デフォルトの名無しさん
16/09/16 07:23:14.79 1ml378Vd.net
>>849
言語仕様の後にライブラリのラだけ見えたからさらに連想を促進した
863:デフォルトの名無しさん
16/09/16 09:43:39.74 wscqtQV8.net
おまえらハゲを敬え
864:デフォルトの名無しさん
16/09/16 10:02:58.29 q1C1+fLl.net
URLリンク(dnaimg.com)
865:デフォルトの名無しさん
16/09/17 19:36:33.08 /lrAuukn.net
ハゲ(笑)
866:デフォルトの名無しさん
16/09/17 20:17:46.81 n9MPs/HW.net
ハゲが世界の技術を支えてる
867:デフォルトの名無しさん
16/09/18 00:04:19.65 5e40+2Z7.net
VSのリードプログラマもハゲだな
868:デフォルトの名無しさん
16/09/18 00:05:00.62 +iC0HZAY.net
ハゲが好きだなお前ら
869:デフォルトの名無しさん
16/09/18 00:23:27.97 +IdphFbB.net
ハゲは絶倫!
870:デフォルトの名無しさん
16/09/18 00:45:36.25 5e40+2Z7.net
質問なんだけどnewするとき例外処理する人はvectorとかでpush_backする時も毎回tryしてんの?
871:デフォルトの名無しさん
16/09/18 02:44:35.25 9+5kS6ok.net
してると言えばしてるけど、多分君の思ってる感じではしてない。
872:デフォルトの名無しさん
16/09/18 02:48:48.02 9+5kS6ok.net
例外は例外的にしか発生しないので、層の上の方の集約するポイントでcatchしてる。
あんまり細かくやっても意味ないしハゲる。
873:デフォルトの名無しさん
16/09/18 03:18:08.82 +iC0HZAY.net
つーか、例外発生する可能性のある箇所でcatchしないとかないでしょ
874:デフォルトの名無しさん
16/09/18 03:29:47.07 L03d0R0a.net
あまり細かい事気にしてるとハゲるよw
875:デフォルトの名無しさん
16/09/18 03:43:50.19 1yHXSEjx.net
問い1「newするとき毎回try catchするバカはvectorのpush_backもtry catchするのか?」
答え「している可能性あり」
問い2「newするとき毎回try catchするバカは非noexcept関数の呼び出しも毎回try catchするのか?」
答え「バカの行動は一貫性が無いのでしていないだろう」
876:デフォルトの名無しさん
16/09/18 04:12:03.01 CEGgaeCy.net
// Aをnewしてveにpush_back
// push_backは落ちないようcatchのおまじない必須
try { ve . push_back( new A( new R(), new S() ) ); }
catch ( ... ) {}
877:デフォルトの名無しさん
16/09/18 04:50:42.33 EIh/dcA1.net
そんな基本的なコンテナのエラーを、catchしても、
プログラマーが回復させることは出来ない
強制終了されるままにしておいた方がいい
下手すれば、エラーログに書き込む際、さらにエラーが起きるかも
878:デフォルトの名無しさん
16/09/18 05:42:12.02 +IdphFbB.net
クラスの型が一致しなくてcatch出来なかった例外は一体何処へ吹っ飛んでいくのだろうか…
879:デフォルトの名無しさん
16/09/18 06:02:09.25 +jQZdVYD.net
NULLチェックしろよとチェックツール使った品質チームが指摘してくるんだが、そもそもnew失敗したら例外になるからNULLチェックまで来ねーだろ、お前のチェックチーム馬鹿すぎだろって突っ込みを誰もしないで数年
880:デフォルトの名無しさん
16/09/18 06:29:33.73 CQAObZ4Q.net
バカってなんでnewしたがるんだろう
881:デフォルトの名無しさん
16/09/18 06:44:28.23 xYSNtktv.net
>>867
チェックツールが古い仕様向けに作られているのだろうか。
newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ。
指摘を聞き流すだけでなく、チェックする部署の人に
ツールのバージョンだか設定だかを現状に合うように改めてもらったら?
882:デフォルトの名無しさん
16/09/18 08:41:57.71 TydQpzdL.net
pimpl = new impl;
if(pimpl == nullptr) []()[[maybe_unused]]{throw std::bad_alloc();}();
883:デフォルトの名無しさん
16/09/18 08:48:34.25 2blUzsBI.net
c++ は最新仕様だけ覚えていればいいってもんではない。
884:デフォルトの名無しさん
16/09/18 09:21:00.65 /1FlYzFJ.net
>>868
make_uniqueはコンストラクター引数の補完が働かないので使いづらい
885:デフォルトの名無しさん
16/09/18 09:22:05.47 6SQSBv8I.net
仕様だけは詳しいが、実務は全くできない奴いるなw
正直最新の仕様なんかについてうんちく垂れるより、古い仕様でもきちんと動くほうがいい。
中には、よくわからずに使って、はまって納期遅れさせるバカもいるwwww
886:デフォルトの名無しさん
16/09/18 09:33:08.57 1yHXSEjx.net
日本語が理解できずに話をすり替えてしまう>>871みたいな低能や
例外処理の基本も理解できていない>>865みたいな低能が
その品質チームとやらにいるんだろう
887:デフォルトの名無しさん
16/09/18 10:19:05.24 EIh/dcA1.net
new にも、NULLを返すバージョンと、例外にするバージョンなど、色々あるんじゃね?
888:デフォルトの名無しさん
16/09/18 11:18:56.17 WPlu++Kc.net
例外処理って目的によって異なる
素直にシステムがエラー吐いて終了で問題ない場合
特定のエラーを検出して改善の為のログを残したい場合
止まると困るシステムの場合十分なリカバリー手段を用意して例外検出と復旧処理を行う
通常のアプリケーションにnew なんて使わないって書いてあったけど
プログラムの目的とエラーに対する必要な強度を仕分けして
全体としてどの様に例外処理を組み込むかって事だよね
889:デフォルトの名無しさん
16/09/18 14:08:31.95 5e40+2Z7.net
やっぱりC++って集団で使うのには向いてないんだよね
どのC++の話してるか分からないか
890:デフォルトの名無しさん
16/09/18 14:09:15.23 EIh/dcA1.net
ゲームエンジンの本には、自分でメモリプールを作っている例が、よく載っている
newをその都度呼ぶと遅いから、まとめて何十個分のメモリを確保する。
そしてその中から、今使う分だけを使う
でも、それぐらいの機能、既に誰かが、ライブラリを作っていそうなもんだが
891:デフォルトの名無しさん
16/09/18 14:14:46.13 /A9gXhFE.net
boost.pool
892:デフォルトの名無しさん
16/09/18 14:42:48.66 5e40+2Z7.net
もちろんメモリプールなんてたくさん出回ってるし今度標準にも入る
でもそれらの性能が十分とは限らない
893:デフォルトの名無しさん
16/09/18 14:43:41.47 Qq7O8IvU.net
昔、lokiとかあったやん?
使ったこと無いからしらんけど
あれにもメモリプールなかったっけ
894:デフォルトの名無しさん
16/09/18 15:03:20.15 vvzKkhQt.net
>>869
えええええええ
いつからそんなクソ仕様になったん…
例外じゃないのか
895:デフォルトの名無しさん
16/09/18 15:26:11.91 vvzKkhQt.net
と思ったけどC++て全部チェック例外だっけ
newのたびにtryさせられるよりsegmentation faultのほうがマシだな
896:868
16/09/18 16:16:16.34 xYSNtktv.net
>>882
勘違いさせたならすまん。>>869 で書いた
「newが失敗した場合はNULLが返る、だからnewの後は常にNULL(ポ)を確認せよ」
っていう方が古いC++でのnewの動作ね。
古いチェックツールがそんなエラーを返してるんじゃないの? という意図。
現在はnewの失敗は例外が返るのがデフォルト動作だよな。
nothrowで例外を出さないように指示したら今でもnullptrが返るけど。
897:デフォルトの名無しさん
16/09/18 16:24:41.60 ygUqx6Ix.net
>>883
C++は全てjavaでいう非チェック例外じゃないの?
898:デフォルトの名無しさん
16/09/18 16:45:14.01 /VzCUPpk.net
お前らの例外話は何故いつもnewなのか
899:デフォルトの名無しさん
16/09/18 17:36:57.68 5e40+2Z7.net
newにおける例外の扱いのベストプラクティスが示されていないから
900:デフォルトの名無しさん
16/09/18 17:37:48.57 +iC0HZAY.net
ないものは自分で見つけんだよ
901:デフォルトの名無しさん
16/09/18 18:15:15.56 sUrpOA8l.net
ひょえー
902:デフォルトの名無しさん
16/09/18 18:28:35.89 L03d0R0a.net
うはー
903:デフォルトの名無しさん
16/09/18 19:43:10.68 1yHXSEjx.net
>>886
newを見るとすぐtry catchで囲わないといけないと妄想してる882みたいな低能が多いからでは?
catchを見ると「近くにnewが有るはず」と脊髄反射したに相違ない
904:デフォルトの名無しさん
16/09/18 19:45:44.60 XW30Cfu8.net
それよりもnullチェックってどうやるのがスマートなんだ?
使ってるvector全部をif文にぶち込んでるコード見かけて驚愕したんだが
905:デフォルトの名無しさん
16/09/18 20:00:16.67 aEHfUxVO.net
vectorに挿入する前にチェックすればいい
906:デフォルトの名無しさん
16/09/18 20:06:12.23 5e40+2Z7.net
一部の用途を除いてnewが失敗する可能性は考えなくていい