板検索:
C++相談室 part128 (1889)
まとめビュー
重複読み込みスレ:このスレは、2重読み込みでレスが重複している可能性があります。修復する場合はこちらをクリックしてください。
1
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:03:49  ID:Hj6igpz/.net(26)
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ:
C++相談室 part127 C++相談室 part127

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 【初心者歓迎】C/C++室 Ver.100【環境依存OK】

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

■ shared_ptr で 標準ライブラリのFILE構造体ポインタをラップしよう
class FILE_Ptr : public shared_ptr<FILE> {
 struct FILEDeleleter {
  void operator() (FILE* fp) const { if (fp != NULL) { fclose(fp); }}
 };
public:
 FILE_Ptr(FILE* fp = NULL) : shared_ptr<FILE>(fp, FILEDeleleter()) {}
 operator FILE* () { return get(); }
 template<typename T> bool operator == (const T& obj) const { return get() == reinterpret_cast<FILE*>(obj); }
 template<typename T> bool operator != (const T& obj) const { return get() != reinterpret_cast<FILE*>(obj); }
};
コメント6件


2
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:28:48  ID:1WWISKCd.net(2)
2

3
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:53:39  ID:oNxTNf5q.net(2)
前スレでSTLなんて使わない信用できないみたいな恐ろしいこと言ってるアホがいたが、そういう人って生配列、生ポ、for、whileで暮らしてるのかな
正気の沙汰ではない
コメント2件

4
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:59:26  ID:wer2Kop4.net(14)
C++の規格書に書かれているということはC++の一部なのであってそれを避けるというのはC++の機能の半分を使わないでいるということだ

5
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:59:39  ID:wlJLbi6+.net(2)
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

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

---- テンプレ ここまで ----

6
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:08:13  ID:42UX/YwI.net(4)
STLが時代遅れとかほざいてたな
モロにスタンダードで常に進化を続けているというのにな
コメント2件

7
デフォルトの名無しさん[]   投稿日:2016/11/27 01:18:02  ID:0maVDSwR.net(4)
>3, >6
自社でSTLやboostより素晴らしいのを作っているじゃないか
日本企業のIT技術力は圧倒的世界一で、3流の外国製のライブラリ等は使用に耐えないって企業が多いから
そうなるんだろ

8
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:19:33  ID:MAcCGYLn.net(8)
STLは使ったことがないな
標準ライブラリのstd::vectorはよく使う
コメント2件

9
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:43:32  ID:wer2Kop4.net(14)
そうだな

10
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:11:39  ID:4hBpEO9s.net(2)
実際問題、コンテナクラスに汎用的な性能を求めることが間違ってる。
本当に速度が欲しい場合には選ばん。
コメント2件

11
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:16:56  ID:0maVDSwR.net(4)
>10
本当に速度が欲しい場合はコンテナを自作しているんだろな
コメント2件

12
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:47:34  ID:wer2Kop4.net(14)
という奴が実際にvectorに対して明確に優位性のあるコンテナを作れたところを見たことがない
どうせそういった研究に取り組んだこともなく口だけなんだろうな


13
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:11:56  ID:Hj6igpz/.net(26)
STLはこれ以上速くなりようがないくらいに簡素な作りだと思いこんでいる私には、STLを上回る速度のコンテナ書く自信は全くないな。
私は圧倒的にスキルが不足しているから、要素をコピースワップするコストはついついshared_ptr使って対処してしまう。コンテナを自作できない無能な自分が嫌になるよ。

14
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:21:22  ID:411Nbo29.net(2)
使い方次第じゃないかなぁ
極端な話、vectorで毎回先頭に挿入するような使い方してたら遅くなるよね
どういうのか把握して適切なコンテナ選べるならわざわざ自作する必要はないかと

15
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:30:23  ID:Hj6igpz/.net(26)
私の場合、ついつい std::vector<T> ではなく、std::vector<shared_ptr<T>> を使って済ませてしまうので、いつまでたってもコンテナを自作するスキルが上がらないよ。
「ぼくのかんがえたさいきょうのこんてな」を自作する精神力がまだまだ足りないようだ。反省。

16
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:33:36  ID:wer2Kop4.net(14)
C++はコンテナの種類だけなら無駄に多いからな

17
デフォルトの名無しさん[]   投稿日:2016/11/27 06:48:20  ID:pUctI5IC.net(4)
dequeとvectorは片方あればいいとかか

18
デフォルトの名無しさん[sage]   投稿日:2016/11/27 09:24:27  ID:SqUFXM7z.net(6)
>11
vectorはただのガワなんだから、速度が必要ならallocatorだけ自作すりゃいいだろ

19
デフォルトの名無しさん[]   投稿日:2016/11/27 09:29:56  ID:WW/pNH6a.net(4)
連続性が保証できないから。
コメント2件

20
デフォルトの名無しさん[]   投稿日:2016/11/27 09:53:11  ID:Hj6igpz/.net(26)
任天堂の倒し方知ってる系の人なら、当然のようにSTLを否定するだろう。
私は任天堂の倒し方知らないので、こういう人たちを心の底から尊敬する。
コメント2件

21
デフォルトの名無しさん[sage]   投稿日:2016/11/27 10:42:14  ID:P/uIEXU4.net(8)
>20
なぜそこまでSTLを否定したいのかよこ分からないなあ。
多くのケースで多くの人が使うのに必要十分な程度の機能、性能は持ってる訳だし、標準ライブラリとしては妥当な仕様かと思う。
これで不足な場合だけ自作のコンテナなりを考えればいいだけでしょ。

22
デフォルトの名無しさん[sage]   投稿日:2016/11/27 10:58:23  ID:Uyh6ikI3.net(2)
>8
何をいってるのか、意味不

23
デフォルトの名無しさん[]   投稿日:2016/11/27 11:06:06  ID:l9GcbBcF.net(2)
いつものあれだろ?
「標準仕様書中の表現として、STLあるいはstandard template libraryなどという言葉は一回も使用されていない」
って言う。

厳格にこの言いつけを守ってる人がいるんだよ…

24
デフォルトの名無しさん[]   投稿日:2016/11/27 11:26:05  ID:Hj6igpz/.net(26)
「STLのコンテナでは力不足」と言い切る優れたプログラマになりたいのだが、私はちっともそのレベルに到達できない。orz
コメント2件

25
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:37:32  ID:zdOfPVrj.net(2)
婆ちゃんがイオンのことを今でもジャスコというのを聞くとちょっとイラッとする
STLという単語をみると同じような気持ちになるが
老人に新しいことを覚えさせるのが難しいと知っている俺は
そしらぬ顔で静観することにしている

26
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:39:37  ID:wer2Kop4.net(14)
>19
また古代からタイムスリップしてきた人ですか?

27
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:44:52  ID:qE9zLQzg.net(2)
>24
それ、優れたプログラマじゃない可能性がたっぷりある。

28
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:48:02  ID:MAcCGYLn.net(8)
標準ライブラリは速くなる余地が無いわけではないな。
テンプレート特殊化を書いてやらないと解決出来ないときもある。
Visual C++の標準ライブラリが最近見直したら一部の処理が何十倍も速くなったと言っているくらいだ

29
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:56:08  ID:wer2Kop4.net(14)
そりゃ実装依存のところは多い
規格書に事細かに記されているわけではない
しかしそれはコンテナのような昔からあって仕様がシンプルなクラスのことでは無いだろう
コメント2件

30
デフォルトの名無しさん[]   投稿日:2016/11/27 12:10:55  ID:Hj6igpz/.net(26)
以下の文書によると、basic_string のパフォーマンスが改善され、std::vectorをオーバーホールとか。
マイクロソフトの連中は、このスレでSTLを否定する優秀な人のような英断ができず、いまだにSTLの保守をやってる。
このスレでSTLを否定する優秀な人を一本釣りしてマイクロソフトにスカウトすればいいのに、マイクロソフトは見る目がないな。

What's New for Visual C++ in Visual Studio 2017 RC
https://docs.microsoft.com/en-us/cpp/top/what-s-new-for-visual-cpp-in-vi...
コメント2件

31
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:12:18  ID:MAcCGYLn.net(8)
>29
>規格書に事細かに記されているわけではない

突然関係ないことを言い出してどうした?
コンテナー自作する必要が有ったと主張する人に対してその必要性が全く理解できないという人がいたので
可能性はを示唆しただけだが。

32
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:14:02  ID:LAFeCFqG.net(6)
algorithm系は使うもの使わないものがはっきりわかれない?
コメント2件

33
デフォルトの名無しさん[]   投稿日:2016/11/27 12:17:16  ID:Hj6igpz/.net(26)
このスレは何人も天才プログラマが書き込んでるんだな。
STLで十分と思ってしまうレベルの低い私は、己の無能さで嫌悪感に陥りそうだ。
コメント2件

34
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:17:28  ID:wer2Kop4.net(14)
>30
C++のベンダーをやっている以上保守は義務だろ
MS独自のMFCはあまりにもゴミだが
CMapを使おうと思ったらあまりにも低機能すぎてキーボード破壊しそうになった

35
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:28:42  ID:plVb52Pg.net(2)
>32
adjacent_differenceの悪口はよせ

36
デフォルトの名無しさん[]   投稿日:2016/11/27 12:41:27  ID:Hj6igpz/.net(26)
怠惰で無能な私は、bool で存在有無だけを返すストイックな binary_search() を使いこなせない。
ついつい、upper_bound()やlower_bound() を使ってしまう。
STLで事足りると思ってしまう自己暗示からどうしても抜け出せない。
このスレの天才プログラマーのようにSTLを捨てて「ぼくのかんがえたさいきょうのこんてな」に行くべきなのだが。
コメント2件

37
デフォルトの名無しさん[sage]   投稿日:2016/11/27 13:18:21  ID:+eKpaGRF.net(2)
STLはあくまで汎用的で問題が起こりにくい作りになっているから
プログラムの用途に合った特殊なコンテナってことなら
自作する意味はあるかもしれない
例えば要素を削除するときに前詰めしないコンテナ、とか
そのコンテナには、どこが「空き」になっているか、別途把握できるしくみが
必要だけど、それはそういう風に実装すればよいだけだし
要は、連続的なメモリに確保されるけど、歯抜けになることが許されるコンテナ
ただしそんなに速くならないだろうね
コメント4件

38
デフォルトの名無しさん[sage]   投稿日:2016/11/27 13:55:49  ID:eIL19TgX.net(2)
>1は無能
自分で書いておきながらワッチョイ付けられないわ
ウンコード貼り付けるわ
コメント2件

39
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:11:24  ID:LAFeCFqG.net(6)
>36
むしろequal_rangeしか使わない

40
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:12:23  ID:Hj6igpz/.net(26)
>38
全くその通り。無能。恥を知れって感じ。

41
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:50:05  ID:w634zOe4.net(2)
今時STLはないだろ

42
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:08:20  ID:P/uIEXU4.net(8)
>33
STLで十分と思うことは、別にレベルが低いとはならない。
STLで十分と思うことがレベルが低いというのは、レベルが低いと思う。

自分を卑下する書き込みをしつつ、高尚なこと考えている俺カッケーと酔いしれてないか?
コメント4件

43
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:26:29  ID:BLqqs723.net(2)
それは己ちゃうんかいw

44
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:55:56  ID:3Qbc/l9n.net(2)
>42
ド素人の背伸びなんだからほっといてやれよw
下手につつくと居付いちゃうぞ

45
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:56:46  ID:SqUFXM7z.net(6)
>37
それってlistじゃないの?
コメント2件

46
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:57:37  ID:SqUFXM7z.net(6)
>45
失礼連続前提ね

47
デフォルトの名無しさん[sage]   投稿日:2016/11/27 16:32:55  ID:42UX/YwI.net(4)
理解出来ないと時代遅れと言って反応を見ているんだろうが端から見ていて痛々しい限りだ

48
デフォルトの名無しさん[sage]   投稿日:2016/11/27 16:49:01  ID:2ZVZJ+KM.net(2)
STLが理解できない?
お前さんだけじゃねw+

49
デフォルトの名無しさん[sage]   投稿日:2016/11/27 17:08:21  ID:LAFeCFqG.net(6)
コンテナ、イテレータ、アルゴリズムの組合せ、という根っこにある考え方でまあ上手く行ってたんだけど、
今となってはちょっと古びた感じはするね。
<algorithm>のごちゃついた様を見るとそういうふうに思う。

50
デフォルトの名無しさん[]   投稿日:2016/11/27 18:02:33  ID:Hj6igpz/.net(26)
>42 のような面白い返答があったのでそろそろ真意を正直に書くと、
コンテナ自作派に憧れるていを取りつつコンテナ自作派をバカにしてただけだ。

「任天堂の倒し方知ってる」とか「ぼくのかんがえたさいきょうのこんてな」とか例えてる時点で
コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってたのだが、
本当にコンテナ自作派に憧れているとストレートに解釈した人が出てきて楽しかったわ。

>37
「空き」の定義は開発者が決めなければならない。
コンテナに突っ込むクラスに「空き」フラグを扱うメンバ変数を追加すればSTLコンテナ利用で解決することを
わざわざ車輪の再発明でコンテナまで自作する人をおだててバカにするのは実に楽しい。
コメント2件

51
デフォルトの名無しさん[sage]   投稿日:2016/11/27 18:11:22  ID:MAcCGYLn.net(8)
>コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってた

これは思った。気付かない奴はアスペ

52
デフォルトの名無しさん[]   投稿日:2016/11/27 19:37:37  ID:YEwu7XTV.net(2)
俺も諄いなーと思いつつ黙って見てたけど、ストーレートに解釈してるやつが居るのみてビックリしたのと同時に、こんなに純真な心で2chやってて大丈夫なのかと心配になったわ。
あと、だからこのスレよく荒れてるんだなぁと納得した。
コメント2件

53
デフォルトの名無しさん[sage]   投稿日:2016/11/27 19:49:28  ID:4JtqQJ1X.net(2)
ゲームとかなら、汎用性よりスピード命や小メモリとかで俺会社のSTLを作ってそうなきがするが
ゲーム制作会社とかではしているところはないのかな

>1 はなんでshared_ptrのFILE deleterを張っているんだ
C++ならFILEじゃなくfstreamだろって気がするが
コメント6件

54
デフォルトの名無しさん[]   投稿日:2016/11/27 20:14:35  ID:Hj6igpz/.net(26)
>53
あまりにも ID:Hj6igpz/ が無能すぎて fstream を使いこなせないからだよ。みなまで言わせんな恥ずかしい。
アホな ID:Hj6igpz/ は>1 のラッパークラス FILE_Ptr を使って以下のように稚拙なコードを書く傾向がある。
こんなことやってるからいつまでたっても ostream系を使いこなすスキルが育たない。ID:Hj6igpz/ は C++プログラマに向いてないよ。

 {
  FILE_Ptr fp = fopen("foo.log", "w");
  if (fp != NULL) {
   fprintf(fp, "1hello world\n");
   fputs("2howdy world\n", fp);
   fwrite("3hello world\n", 13, 1, fp);
  }
 }
コメント2件

55
デフォルトの名無しさん[]   投稿日:2016/11/27 20:42:29  ID:pUctI5IC.net(4)
fstreamはfstreamで20余年の付き合いを経てもいまだにイミフなとこあるし

56
デフォルトの名無しさん[sage]   投稿日:2016/11/27 20:47:34  ID:P/uIEXU4.net(8)
>50
お前さんの真意とやらはどうでもいいから、面倒くさいことせずに、初めからもっと直接的に意味のある議論をしてほしい。
ここまでの流れで唯一ためになったのは、>52のレスにあった「諄い」という漢字を知ったということだけだ。

57
デフォルトの名無しさん[sage]   投稿日:2016/11/27 20:49:47  ID:P/uIEXU4.net(8)
>53
ゲーム会社のことはよく知らないけど、そういうのはアロケータの自作でもしてるのかな。

58
デフォルトの名無しさん[]   投稿日:2016/11/27 21:04:15  ID:zEm283RN.net(2)
ゲームエンジン・アーキテクチャによると
コンテナを自作するのは普通らしい

59
デフォルトの名無しさん[sage]   投稿日:2016/11/27 21:13:33  ID:kJvliJ+f.net(2)
>54
それ以前に、FILE"Deleleter"ってわざとしているのか
それともdeleteのスペル知らないのか
deleteはC++のキーワードだよな
operator FILE* () はcons抜けだし
コメント4件

60
デフォルトの名無しさん[]   投稿日:2016/11/27 21:46:20  ID:Hj6igpz/.net(26)
>59
何しろ無能だからこんなもんだろう。生温かく見守ってやれ。

61
デフォルトの名無しさん[sage]   投稿日:2016/11/27 21:54:20  ID:IYfuOepr.net(2)

62
デフォルトの名無しさん[]   投稿日:2016/11/27 21:59:03  ID:WW/pNH6a.net(4)
ベンチ取ってみたらどうか。
僕の古典的PCしかもノートでも驚くほど速い。
意外と問題にならない程度の速度を持っているのではないか。

63
デフォルトの名無しさん[]   投稿日:2016/11/27 22:00:05  ID:Hj6igpz/.net(26)
>59
勉強する良い機会になった。ありがとう。
https://ja.wikipedia.org/wiki/Cons

64
デフォルトの名無しさん[sage]   投稿日:2016/11/28 00:27:42  ID:nFYh94sG.net(2)
type erasureのためだけにshared_ptrを持ち出さなければならないクソ言語

65
デフォルトの名無しさん[sage]   投稿日:2016/11/28 13:41:28  ID:VFe8unWC.net(2)
SSEのイントリンシック使うとき16バイト境界にアライン必須なんで
stlに入れるとき用にアロケータだけ自作したことはあるな(コンテナの型自体変わってしまうので不便だけど
EASTLは知らんかった、家帰ったら使ってみよう

66
デフォルトの名無しさん[]   投稿日:2016/11/28 17:31:28  ID:w/GpYaDf.net(10)
>61
docディレクトリの文書でEAの中の人がSTLについて熱く語っているのが好感を持てた。

67
デフォルトの名無しさん[]   投稿日:2016/11/28 21:08:56  ID:w/GpYaDf.net(10)
EASTL にベンチマークプログラム があったのでWindows10(x86)の Visual Studio 2017 RC でビルド&実行してみた。
以下は、そのベンチマークプログラム EASTLBenchmarks.exeの標準出力結果

****************************************************************************************
EASTL Benchmark test results
****************************************************************************************

EASTL version: 3.04.00
Platform: Windows on X86
Compiler: Microsoft Visual C++ compiler, version 1910
Allocator: PPMalloc::GeneralAllocator. Thread safety enabled.
Build: Full optimization. Inlining enabled.

Values are ticks and time to complete tests; smaller values are better.

Test VC++ Dinkumware EASTL Ratio Difference?
---------------------------------------------------------------------------------------------------------------------
algorithm/adj_find/vector<TestObject> | 699814 699.8 us | 913513 913.5 us | 0.77 -
algorithm/copy/vector<LargePOD> | 270367 270.4 us | 269001 269.0 us | 1.01
algorithm/copy/vector<uint32_t> | 8193 8.2 us | 5462 5.5 us | 1.50 +
algorithm/copy_backward/vector<LargePOD> | 280267 280.3 us | 274463 274.5 us | 1.02
algorithm/copy_backward/vector<uint32_t> | 3072 3.1 us | 3414 3.4 us | 0.90
algorithm/count/vector<uint64_t> | 270367 270.4 us | 266271 266.3 us | 1.02
algorithm/equal_range/vector<uint64_t> | 10268141 10.3 ms | 22004184 22.0 ms | 0.47 -
コメント2件

68
デフォルトの名無しさん[]   投稿日:2016/11/28 21:12:50  ID:w/GpYaDf.net(10)
>67 の続き。途中省略で末尾だけ記載する。

vector<AutoRefCount>/erase | 2132212 2.1 ms | 2128798 2.1 ms | 1.00

vector<MovableType>/erase | 124073512 124.1 ms | 121713608 121.7 ms | 1.02
vector<MovableType>/reallocate | 2317236 2.3 ms | 2053355 2.1 ms | 1.13

vector<uint64>/erase | 11193260 11.2 ms | 11209646 11.2 ms | 1.00
vector<uint64>/insert | 9193159 9.2 ms | 9221835 9.2 ms | 1.00
vector<uint64>/iteration | 68957 69.0 us | 68957 69.0 us | 1.00
vector<uint64>/operator[] | 106166 106.2 us | 86368 86.4 us | 1.23
vector<uint64>/push_back | 2452078 2.5 ms | 1394507 1.4 ms | 1.76 +
vector<uint64>/sort | 8286133 8.3 ms | 7735840 7.7 ms | 1.07

sum | 871753892 871.8 ms | 768601049 768.6 ms | 1.13

****************************************************************************************

Time to complete all tests: 3.66 s.
RETURNCODE=0
コメント2件

69
デフォルトの名無しさん[]   投稿日:2016/11/28 21:22:19  ID:w/GpYaDf.net(10)
>68の続き。
188個あったテスト項目のうち、71個がEASTL有利、10個がSTL有利、107個が互角という結果になった。
以下に、参考までにEASTL有利だった項目を良い成績順にベスト10を記す。

algorithm/find_end/string/end | 600816 600.8 us | 25945 25.9 us | 23.16 +
deque<ValuePair>/push_back | 5864095 5.9 ms | 880058 880.1 us | 6.66 +
deque<ValuePair>/push_front | 6016006 6.0 ms | 1031627 1.0 ms | 5.83 +
deque<ValuePair>/operator[] | 4007712 4.0 ms | 693327 693.3 us | 5.78 +
hash_map<uint32_t, TestObject>/count | 264563 264.6 us | 56326 56.3 us | 4.70 +
deque<ValuePair>/find | 1577482 1.6 ms | 381996 382.0 us | 4.13 +
algorithm/find_end/string/middle | 579650 579.6 us | 148497 148.5 us | 3.90 +
string<char8_t>/operator[] | 133476 133.5 us | 34820 34.8 us | 3.83 +
string<char16_t>/operator[] | 133477 133.5 us | 35844 35.8 us | 3.72 +
algorithm/lex_cmp/schar[] | 137914 137.9 us | 39941 39.9 us | 3.45 +
コメント2件

70
デフォルトの名無しさん[]   投稿日:2016/11/28 21:47:38  ID:w/GpYaDf.net(10)
>69の続き。上述のランキングをさらに11位から25位まで追記しておく。

algorithm/search/string<char> | 934678 934.7 us | 285728 285.7 us | 3.27 +
algorithm/rotate/vector<TestObject large> | 161470 161.5 us | 58716 58.7 us | 2.75 +
hash_map<uint32_t, TestObject>/operator[] | 343762 343.8 us | 129722 129.7 us | 2.65 +
hash_map<uint32_t, TestObject>/find | 177172 177.2 us | 67250 67.3 us | 2.63 +
map<TestObject, uint32_t>/clear | 90805 90.8 us | 35162 35.2 us | 2.58 +
string<char16_t>/swap | 78515 78.5 us | 30723 30.7 us | 2.56 +
bitset<1500>/count | 14115750 14.1 ms | 6574833 6.6 ms | 2.15 +
hash_map<string, uint32_t>/count | 946967 947.0 us | 443784 443.8 us | 2.13 +
deque<ValuePair>/insert | 28192924 28.2 ms | 13517665 13.5 ms | 2.09 +
bitset<75>/count | 1468243 1.5 ms | 700838 700.8 us | 2.09 +
string<char16_t>/insert/pos,p | 1060986 1.1 ms | 513424 513.4 us | 2.07 +
hash_map<string, uint32_t>/find_as/char* | 947992 948.0 us | 461194 461.2 us | 2.06 +
string<char16_t>/find/p,pos,n | 66859496 66.9 ms | 33442208 33.4 ms | 2.00 +
bitset<75>/flip | 400772 400.8 us | 200727 200.7 us | 2.00 +
set<uint32_t>/count | 1733147 1.7 ms | 870841 870.8 us | 1.99 +

71
デフォルトの名無しさん[sage]   投稿日:2016/11/28 22:16:01  ID:aUTLhSnb.net(2)
キモッ

72
デフォルトの名無しさん[sage]   投稿日:2016/11/28 22:29:08  ID:nxkexmqL.net(2)
EASTLにコンテナの範囲外アクセスチェックとかのデバッグ機能ってある?
自分でもやってみるけど知ってる人いたら教えて欲しい

73
デフォルトの名無しさん[sage]   投稿日:2016/11/29 03:57:58  ID:JKfAWAo3.net(2)
C++派八策

1.C++で書けばパフォーマンスが良くなる。なぜならパフォーマンスが良くなるまでC++書くからだ。
これを頭に叩き込め。

2.常にC++で書いておればそのうち他の要因でパフォーマンスが良くなるときが来る。
そのときに思い切りC++の手柄を主張しろ。

3.いいことはC++の手柄、悪いことは他の要因のせいにしろ。

4.データは都合のいいところだけ使え。グラフは切貼りしろ。

5.タイムラグを上手く使え。

6.「これがC++だ」と明言するな。定義を問われたら「C++の本を読め」と言っておけ。

7.批判されたら「お前はC++を理解してない」と言え。

8.いざとなったら定義を変えろ。オブジェクト指向に固執するな。

74
デフォルトの名無しさん[]   投稿日:2016/11/29 06:49:46  ID:nF3eDud1.net(6)
boost spiritって
LL(∞)パーサー生成すんの?
PEGパーサー生成するの?
LL法とPEG法wikipedia両方の実装例にこの名前のってあるんだけど
それとも両方とも実装してるの?

75
デフォルトの名無しさん[sage]   投稿日:2016/11/29 10:54:07  ID:FnERKnae.net(2)
菅官房長官「ちょっと何言ってるかわかんない」

76
デフォルトの名無しさん[]   投稿日:2016/11/29 13:08:19  ID:nF3eDud1.net(6)
4行目の「法」と「w」の間に格助詞の「の」が入る予定でした

77
デフォルトの名無しさん[sage]   投稿日:2016/11/29 13:44:34  ID:CM7LOPnj.net(2)
プログラム的にいうと
LLは実装で使うアルゴリズムのひとつ
PEGは仕様を定義する表現(言語)のひとつ
で対立・排他関係にあるわけではない

boost.spiritはPEG形式で与えられたルールから構文解析器を作成するライブラリ
(作成された解析器はLL法で入力を解析する)
コメント2件

78
デフォルトの名無しさん[]   投稿日:2016/11/29 18:41:17  ID:nF3eDud1.net(6)
>77
ど素人の私にわざわざ回答をくださってありがとうございます。
これからも勉強に励みます

79
デフォルトの名無しさん[]   投稿日:2016/11/29 18:46:41  ID:GF2v+9TM.net(2)
boost spiritってEBNFじゃなくてPEGだったんだな
使わんからどうでもいいが

80
デフォルトの名無しさん[]   投稿日:2016/11/29 20:31:51  ID:baTvYruL.net(2)
いま趣味で囲碁ソフト作ってるんだけど
Cなんすよ。
いろいろ面倒なんでC++で
作りなおそうかと思案中です。

作成の労力は何割ぐらい
軽減するでしょうか?
コメント8件

81
デフォルトの名無しさん[sage]   投稿日:2016/11/29 20:47:31  ID:DmRk6e1B.net(2)
増す

82
デフォルトの名無しさん[sage]   投稿日:2016/11/29 20:55:01  ID:1SK7brxW.net(2)
その質問に答えられる人は誰一人としていないが
少なくともCより面倒になることは(熟練したC++プログラマなら)ありえないから
チャレンジしてみる価値はある
ただし、()の中が重要で、熟練したプログラマなら、という話
君がすごく筋がよいならC++はきっと役に立つはず
一方で筋が悪いというのはC++においては余計なことをやろうとすること
余計なことさえしなければ、Cより面倒になることはあり得ないし
逆に心に邪念があれば、Cとは別の意味で面倒な樹海に迷い込む
C++は書く人の心の中を映す鏡

83
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:09:35  ID:glNciwx+.net(2)
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015
コメント2件

84
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:16:52  ID:bPmZgvzu.net(2)
>83
このコピペ時々見るけどヘイトHaxeの効果抜群だな
コメント2件

85
デフォルトの名無しさん[]   投稿日:2016/11/29 21:19:45  ID:X8I97SOu.net(2)
>80
レートどんくらい?
いちおープラスなんか?

86
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:24:49  ID:Ofu9bBqm.net(2)
>84
せやな。Mindに手を出すわ

87
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:42:26  ID:8ZPVrbbC.net(2)
>80
お前の能力によるとしか言えないんじゃないのか
ソースコードの量が多いと今のCをC++へ作り直す工程はかなりの労力だろな

88
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:44:01  ID:ua9E/pwR.net(2)
いや、>80は絶対にC++で書き直すべきだ!!

89
デフォルトの名無しさん[sage]   投稿日:2016/11/30 06:56:30  ID:UPCsGfLr.net(2)
C++を「Cにvectorとかstringなんかの便利な型を追加した言語」と
割り切って使うなら手間は増えないんじゃないかな。

でも実際にC++で書き始めると、C++らしい書き方をしないと
恥ずかしいみたいな気持ちになって深みにはまることが多い。

90
デフォルトの名無しさん[sage]   投稿日:2016/11/30 07:12:30  ID:HOaAIIiu.net(2)
>80がgithubにソースを晒せば解決

91
デフォルトの名無しさん[]   投稿日:2016/11/30 07:35:10  ID:60EZvxwk.net(6)
三割くらい減る

92
デフォルトの名無しさん[]   投稿日:2016/11/30 08:50:24  ID:AmbpRVJT.net(6)
Cでいったん書いたんなら、そのときの反省点が色々あるだろ
それを踏まえてより上手くまとめるにはC++はいいツールだぜ

93
デフォルトの名無しさん[]   投稿日:2016/11/30 09:01:18  ID:WcEJDmm/.net(6)
ぼくのかんがえるC++にしかできない超強力3大機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・ラムダ。

94
デフォルトの名無しさん[]   投稿日:2016/11/30 09:03:12  ID:WcEJDmm/.net(6)
下の根の乾かないうちに訂正。

ぼくのかんがえるC++にしかできない超強力3大(5大?)機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・templateとlambda。

95
デフォルトの名無しさん[]   投稿日:2016/11/30 09:05:34  ID:WcEJDmm/.net(6)
exceptionとRTTIはよく使うけど次点。

異論反論はもちろん認める。

96
デフォルトの名無しさん[]   投稿日:2016/11/30 09:15:29  ID:60EZvxwk.net(6)
RTTIは使わないな
使うなって偉い人が言ってるし

97
デフォルトの名無しさん[sage]   投稿日:2016/11/30 09:19:23  ID:mG9+BxSG.net(2)
なんで?(殺意)

98
デフォルトの名無しさん[sage]   投稿日:2016/11/30 10:01:29  ID:2V+M5QrA.net(2)
RAIIの間違いじゃね?
RTTIをよく使うって違和感ある。

99
デフォルトの名無しさん[sage]   投稿日:2016/11/30 10:25:44  ID:TMG+JuRV.net(12)
話題になっていた
STLと標準ライブラリと違うもの?
コメント2件

100
デフォルトの名無しさん[]   投稿日:2016/11/30 11:41:28  ID:AmbpRVJT.net(6)
typeidをデバッグや実験でなく実用で使ったことが確かにないなあ
C++例外は嫌々しぶしぶ使ってるけど、クソすぎてため息

101
デフォルトの名無しさん[]   投稿日:2016/11/30 12:37:13  ID:60EZvxwk.net(6)
例外ってなんか悪い部分あるの?
コメント2件

102
デフォルトの名無しさん[sage]   投稿日:2016/11/30 12:51:41  ID:zOzS6ENl.net(2)
???部にどの様な記述でコンパイルできるのですか?

#include <iostream>
#include <vector>

template<class T>
class Point{
public:
    Point(T x,T y):m_x(x),m_y(y){}
private:
    T m_x;
    T m_y;
};

int main( int argc, char *argv[] )
{
 Point<int> p1(0,0);
 Point<double> p2(0.0,0.0);
    
    std::vector<Point<???>> vpoints;
    vpoints.push_back(p1);
    vpoints.push_back(p2);
 return 0;
}
コメント2件

103
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:02:54  ID:7bek9hnS.net(4)
エラーメッセージは?

104
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:08:22  ID:0DxS4g7L.net(2)
親クラス用意しなきゃ無理じゃね?

105
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:16:41  ID:7bek9hnS.net(4)
あ、今意味がわかった
それやるならunion用意するかな
そもそも同じvectorにする意味がわからないけど・・・
コメント2件

106
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:21:49  ID:TMG+JuRV.net(12)
>105
プログラム的に意味があるかどうかなんか問題ではないだろ
それ言い出したら、

push_backした後なにもせずにプログラムが終了しているんだから
push_backする必要ないだろ

107
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:47:54  ID:kcnEUqeY.net(2)
>102
そこをどの様に記述してもコンパイルはできない

そのPoint<int>とPoint<double>はそれぞれなんの関係もない独立した型であって
相互に変換や代入などはできないから

108
デフォルトの名無しさん[sage]   投稿日:2016/11/30 14:23:43  ID:X0PK+rS4.net(2)
>99
STLは前世紀にどこかのメーカーが作ったライブラリ
便利なので広まって標準ライブラリの礎となった
最新のバージョンは3.3で今でもダウンロードできる
対応する環境はMS C++ Ver.5とかgcc 2.9とかだと思う
コメント2件

109
デフォルトの名無しさん[sage]   投稿日:2016/11/30 14:26:14  ID:TMG+JuRV.net(12)
標準ライブラリっていってもパクリってこと?
コメント2件

110
デフォルトの名無しさん[sage]   投稿日:2016/11/30 15:43:30  ID:tnQQtKaj.net(6)
パクリでもなんでも、便利そうなものは標準に取り入れる意味があるんだよ
さもなくば、コンパイラごとに違ったSTLとか嫌だろ
コメント8件

111
デフォルトの名無しさん[sage]   投稿日:2016/11/30 16:25:16  ID:34Y1lEhk.net(8)
C++例外は、明らかにJavaやC#のそれに比べて親切度において劣る。
どこからジャンプしてきたかの呼び出し履歴をとれないのはあまりに大きい。

112
デフォルトの名無しさん[]   投稿日:2016/11/30 16:53:47  ID:34Y1lEhk.net(8)
EASTLを Visual Studio 2017 RC で使って感じたこと。
 ・なるほど少し速いかも、なレベル。悪くない。むしろ良い。
 ・仕事ではなく趣味や学習目的で扱う分には、手本としてもオススメできる。
 ・既存のstdとeastlを混在利用することは可能だが要注意。
 ・EASTLに限らずテンプレートの宿命だが、プログラマ側ソースコードのどの箇所がエラー原因なのか場所を特定しずらい。

具体的に困ったこと。いずれも対策を講じて解決済み。
 ・eastlで作ったコンテナをうっかり std::random_shuffle() にいれると、どのライブラリの swap() を呼ぶかコンパイラがわからずエラーになる。
  eastl::shuffle()に置き換えて、第三引数の乱数生成器は stdの<random>の乱数生成器を使って対処した。
 ・eastl::make_shared<>(args...) で Gdiplus::Bitmapの梟雄ポインタのインスタンスを作ろうとすると 引数2つ渡すGdiplus::GdiplusBaseのnew演算子が定義されてないとかで、エラーになる。
  従来通り、new Gdiplus::Bitmap(...) で作ったものを渡して対処した。

113
デフォルトの名無しさん[]   投稿日:2016/11/30 17:29:43  ID:AmbpRVJT.net(6)
noexceptがデフォじゃないのが許せん
コメント2件

114
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:00:58  ID:j7/lwSC0.net(2)
>109
標準化ってのは独自性の有る新たなものを産み出すんやなくて
世に存在する既存のものの統一を図るのが本来やで

115
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:08:39  ID:TMG+JuRV.net(12)
>110
コンパイラごとにSTLの実装は違いますけど?

VC++、gcc、clang、C++builderで実装が同じだと思ってました?w
                   ~~~~~
コメント2件

116
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:33:15  ID:tnQQtKaj.net(6)
誰が実装が同じだといった?
規格の話しているのに、なんで実装の話が出てくるのか謎なんだが
コメント2件

117
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:46:20  ID:TMG+JuRV.net(12)
>116
おまえ頭おかしいのか?
己が書いたものを100回復唱してみろよ

> 誰が実装が同じだといった?
> 規格の話しているのに、なんで実装の話が出てくるのか謎なんだが

118
デフォルトの名無しさん[]   投稿日:2016/11/30 19:54:56  ID:34Y1lEhk.net(8)
規格がまずあり、開発環境がそれをちゃんと守ってるかどうかは実装を見て確かめる。
規格の話だけするのなら、そもそもコンパイラや実行環境さえ必要なくて、日本の自称・憲法学者(笑)のように紙とペンだけで済む。
規格と実装、両方の話をするのが正しい。

119
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:16:34  ID:SxJugRcT.net(4)
規格の話しているのに、なんで実装の話が出てくるのか謎なんだが?

120
デフォルトの名無しさん[]   投稿日:2016/11/30 20:22:51  ID:wWCievJu.net(2)
実装はコンパイラ毎に違うに決まってんだろ

121
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:43:04  ID:TMG+JuRV.net(12)
>110
を読んでみろ

122
デフォルトの名無しさん[]   投稿日:2016/11/30 20:50:12  ID:o1dhiyLy.net(2)
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @copy__writing の管理人は東京都三鷹市の莉里子■■
http://i.imgur.com/5qAgsHG.png
http://i.imgur.com/kldi84l.png
http://i.imgur.com/8vCymiC.jpg


■今までのプライベート垢
@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko


@riricatputi (新アカ)  http://imgur.com/a/X1vQA


100垢以上作ってるキチガイ出会い厨 (粘着やめろ詐欺師!はやく捕まれホラ吹きネットストーカー犯罪者!!)

123
デフォルトの名無しさん[sage]   投稿日:2016/11/30 21:00:50  ID:SxJugRcT.net(4)
質問とか罵倒とか〜を読めとかじゃなくて自分の主張をすれば一発で終わることを

124
デフォルトの名無しさん[]   投稿日:2016/11/30 21:13:12  ID:34Y1lEhk.net(8)
実装の定義がマチマチ。
ある人はプロプロセッサ処理前のソースコードという意味で。
ある人はプロプロセッサ処理後のソースコードという意味で。
ある人はコンパイル後のobjバイナリという意味で。
ある人はビルド後の実行バイナリという意味で。
コメント2件

125
デフォルトの名無しさん[sage]   投稿日:2016/11/30 21:39:54  ID:tnQQtKaj.net(6)
ID:TMG+JuRV がなぜ発狂しているのか謎なんだが

---
パクリでもなんでも、便利そうなものは標準に取り入れる意味があるんだよ
さもなくば、コンパイラごとに違った(規格の)STL(モドキ)とか嫌だろ
---

126
デフォルトの名無しさん[]   投稿日:2016/11/30 21:56:08  ID:pYpq7m+B.net(2)
一番頭おかしいやつが降臨しました>124

127
デフォルトの名無しさん[sage]   投稿日:2016/11/30 22:24:40  ID:1zLD/kv4.net(2)
パクリとかw
開発者本人が標準化委員会に提案したんだぞ

128
デフォルトの名無しさん[sage]   投稿日:2016/11/30 23:42:37  ID:lwghcYzA.net(2)
ID:TMG+JuRV がなぜ発狂しているのか一瞬分からなかったが>108-110を読み直して理解した
>110の説明の日本語がよろしくない
コメント2件

129
デフォルトの名無しさん[]   投稿日:2016/12/01 00:10:57  ID:SwKXepyG.net(16)
PCRE という正規表現ライブラリが存在する。
これをSTLのregexと同じインターフェースでラップした場合、STLと呼べるだろうか?

130
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:14:57  ID:rFASmZLg.net(4)
regexはSTLなのか
threadをSTLと言ってる人も見かけたし何でもありだな
コメント4件

131
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:18:17  ID:O3rxu16z.net(6)
つまり
STLという言葉を使う奴=バカ
ハゲもその一人

132
デフォルトの名無しさん[]   投稿日:2016/12/01 00:23:12  ID:SwKXepyG.net(16)
>130
指摘ありがとう。
regex はあくまでstdに採用されたのであってSTLではなかった。訂正します。

133
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:27:51  ID:9RDsFVMO.net(2)
stdは「スタド」と発音すべき

134
デフォルトの名無しさん[]   投稿日:2016/12/01 00:37:39  ID:SwKXepyG.net(16)
studio をスタジオと呼ぶ日本語の舌なのに、あろうことか stdio をスタディオと呼んでしまう。

135
デフォルトの名無しさん[sage]   投稿日:2016/12/01 01:01:51  ID:lTTMQ5z2.net(2)
>113
ある程度のサイズのプログラムで大半を占めるアプリケーション層の操作が noexcept になる
なんてことは考えにくいので、 noexcept がデフォだったらそれはそれで許せない感じになる。
noexcept がデフォでうれしいのなんてライブラリ作者ぐらいでしょ。

136
デフォルトの名無しさん[sage]   投稿日:2016/12/01 01:37:48  ID:TTb4zObN.net(2)
>130
regexもスタンダードなテンプレートライブラリだろ

137
デフォルトの名無しさん[]   投稿日:2016/12/01 02:09:31  ID:SwKXepyG.net(16)
たとえ話。
STLを会社とすると、basic_stringはSTLの特別顧客だがSTLの社員ではない。
STLを会社とすると、regex、thread、iostreamは一般客。

regexを会社とすると、basic_stringはregexの特別顧客だが、regexの社員ではない。
stringstreamを会社とすると、basic_stringはstringstreamの契約社員。

basic_stringだけが特別な存在として異彩を放っている。

138
デフォルトの名無しさん[]   投稿日:2016/12/01 02:52:13  ID:PTAZcCnS.net(6)
下手な例え話はやめろとあれほど言ったじゃないか
コメント2件

139
デフォルトの名無しさん[sage]   投稿日:2016/12/01 03:20:50  ID:n8BYNyNm.net(2)
>128
確かに>110の内容は誤解する余地のある書き方だけど普通に読めば理解できるし、>115は良く読まずに脊髄反射してるか、分かってて揚げ足取りしてるのか、いずれにせよ建設的な議論ができないタイプなんだろう。
コメント2件

140
デフォルトの名無しさん[sage]   投稿日:2016/12/01 06:56:46  ID:SwKXepyG.net(16)
>138
いらだつ気持ちはわかるよ。
basic_stringはヴェルタースオリジナルと同じくらい特別な存在だからね。
https://www.youtube.com/watch?v=4Yi9_uCw2NY

141
デフォルトの名無しさん[sage]   投稿日:2016/12/01 08:11:31  ID:7obV0jvg.net(2)
STLが会社ならstringはハケン
「ボク、正規になれるって頑張ってきたのに…」
コメント2件

142
デフォルトの名無しさん[]   投稿日:2016/12/01 10:05:27  ID:PTAZcCnS.net(6)
>139
ほう?
この例え話から建設的な議論を広げて貰おうか?
コメント2件

143
デフォルトの名無しさん[sage]   投稿日:2016/12/01 12:54:22  ID:rYSe/HxL.net(4)
>142
そう言うレスが建設的じゃないって言われてるんだろ
コメント2件

144
デフォルトの名無しさん[]   投稿日:2016/12/01 13:02:57  ID:PTAZcCnS.net(6)
>143
え?なんで?
出来ないこと要求しちゃったから?

145
デフォルトの名無しさん[]   投稿日:2016/12/01 14:01:09  ID:vPHgqg3S.net(10)
template<typename T> struct moge
{
struct hage{};
};
template<typename T> void hoge(typename moge<T>::hage)
{}
hoge(moge<int>::hage{});

hogeの呼び出しができません。hogeをどう変えればいいですか。
コメント2件

146
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:05:36  ID:SwKXepyG.net(16)
>145
hoge<int>(moge<int>::hage());

147
デフォルトの名無しさん[]   投稿日:2016/12/01 15:17:40  ID:vPHgqg3S.net(10)
呼び出しの方は変えたくないです
Tがどの型でも呼び出せるようにするにはどうすればいいですか

148
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:38:14  ID:O+yJrb2h.net(8)
俺はテンプレートなんか自分ではめったに書かないし
テンプレートの型推論のメカニズムも何も知らないが
要はhoge()の中でTが得られれば良いんでしょ?

template<typename T> struct moge
{
struct hage{ typedef T type; };
};
template<typename U> void hoge( U arg )
{
typedef U::type T;
}
hoge(moge<int>::hage{});

一応これでコンパイルは通る

149
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:39:23  ID:X/1wKSRH.net(2)
>101
拾いきれない例外は外にふっとんでいく

150
デフォルトの名無しさん[]   投稿日:2016/12/01 15:41:27  ID:SwKXepyG.net(16)
>141
正社員より年収の良い派遣社員だよ、basic_stringさんは。
しかも、boost の文字列操作ライブラリの強力な支援を受けられる最強の八方美人。

151
デフォルトの名無しさん[]   投稿日:2016/12/01 15:42:30  ID:vPHgqg3S.net(10)
それだとtypeを持った型ならなんでも受け付けてしまいます
mogeのhageしか受け付けないhogeが必要です

152
デフォルトの名無しさん[sage]   投稿日:2016/12/01 16:29:20  ID:aVqOQbdr.net(4)
コンパイラ無いから試せないけど、呼び出しに{}いるんだっけ?

153
デフォルトの名無しさん[]   投稿日:2016/12/01 16:59:12  ID:umvXirxE.net(6)
clang: candidate template ignored: couldn't infer template argument 'T'

gcc: candidate: template<class T> void hoge(typename moge<T>::hage)
template argument deduction/substitution failed:
couldn't deduce template parameter 'T'

cl:
'hoge': no matching overloaded function found
'void hoge(moge<T>::hage)': could not deduce template argument for 'T'
see declaration of 'hoge'

みんな口を揃えて「Tが推定できない」と言ってくる
じゃあ、Tを明示的に与えては?
hoge<int>(moge<int>::hage{});
ちょっと腹立つけど、typenameだのtemplateだのの前置と
ウザさはそう変わらんと思う

154
デフォルトの名無しさん[]   投稿日:2016/12/01 17:04:30  ID:umvXirxE.net(6)
ヘルパー関数を用意するとか
template <typename T>
void hige()
{
hoge<T>(moge<T>::hage{});
}

155
デフォルトの名無しさん[]   投稿日:2016/12/01 17:06:57  ID:umvXirxE.net(6)
ラムダ式でも似たようなのできるな
auto closure = [](auto arg){ hoge<decltype(arg)>(moge<decltype(arg)>::hage{}); };
closure(1);

156
デフォルトの名無しさん[]   投稿日:2016/12/01 17:12:07  ID:vPHgqg3S.net(10)
hoge(moge<int>::hage());
呼び出し方はこうでないといけないのです
hogeの定義の方をなんとかしてできませんか
コメント6件

157
デフォルトの名無しさん[]   投稿日:2016/12/01 17:20:15  ID:EvfhiEON.net(2)
template<typename T> struct moge {
struct hage{ using type = T; };
};

template<typename T>
std::enable_if_t<std::is_same<T, typename moge<typename T::type>::hage>::value>
hoge(T) {};
コメント4件

158
デフォルトの名無しさん[sage]   投稿日:2016/12/01 18:08:07  ID:rYSe/HxL.net(4)
すでに終わった話を引っ張るのが建設的とはとても思えないんだが...
まあ、なんか悔しいんなら一人でやっててくれ w

159
デフォルトの名無しさん[sage]   投稿日:2016/12/01 18:49:53  ID:Xkx3qm7U.net(2)
>157
hoge関数をどう変えるかと聞いてるのに
勝手にmogeの定義を変えるお題改変野郎
コメント2件

160
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:01:40  ID:aVqOQbdr.net(4)
>156でなんか問題あるの?
コメント2件

161
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:13:39  ID:xNXWtXQs.net(2)
答えられないと「俺のお題改変に文句付けるのか」
「何が気に入らんのやワレ」と圧力

162
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:14:31  ID:O+yJrb2h.net(8)
>159
現実問題としては、using type = T は無くても有ってもかまわないんだろうよ
実際のコードのhageの中身がどうなっているかわからないが
Tを使ったメンバがあるならdecltypeでTは取得できるし
Tを使ったメンバがないなら
おそらくはhageの処理をするのにTは要らない公算が高いだろ
hoge()が何をする関数かわからないから何とも言えないが
using type = T はサービスみたいなものじゃないかな

163
デフォルトの名無しさん[]   投稿日:2016/12/01 19:15:49  ID:vPHgqg3S.net(10)
>160
コンパイル通りません
153のようなエラーが出ます

164
デフォルトの名無しさん[sage]   投稿日:2016/12/01 20:31:23  ID:O3rxu16z.net(6)
>現実問題としては、using type = T は無くても有ってもかまわないんだろうよ

質問者以外の者がどうして根拠なしに決めつけようとするのか疑問だ
math.hにM_PIを入れただけで因縁をつけられてしまうというのに
コメント2件

165
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:42:58  ID:O+yJrb2h.net(8)
だから質問者に良いかどうか決めてもらえばよいだろって話
質問者が納得さえすればそれで終わりなんだからさ
それなのにこの質問者は>157についてはノーコメントなんだよ

166
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:10:33  ID:O3rxu16z.net(6)
本気で質問しているようにも見えなかったが「できませんか」と訊かれているのだから
まず「出来ません」と回答しないと>156は納得しないのではないだろうか。
可否がはっきりしない状態で質問通りでない代替案に誘導したらお題改変と罵られても致し方ない

167
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:22:29  ID:O+yJrb2h.net(8)
おまえなー、それなー
いいかげんにしろよな
お前、俺に>164で何て言った?
コメント2件

168
デフォルトの名無しさん[]   投稿日:2016/12/01 23:42:50  ID:SwKXepyG.net(16)
min(x,y)とmax(x,y)の定義がマクロ版とテンプレート版が混在して悶絶した経験のある人だけが石を投げなさい。

169
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:46:56  ID:rFASmZLg.net(4)
マクロ版min,maxは消せるけど

170
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:39:59  ID:pucVjZc7.net(2)
質問です。
http://ideone.com/R8pyc7
配列と要素数を受け取るクラスにvectorを渡したい時のスマートな方法を教えて下さい。
コメント16件

171
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:46:20  ID:xqmmn7KF.net(2)
vectorが変更しないならそれでいいだろうけど
そのコードみたいにpush_backするならhogeクラスには渡したくない
素直に考えるならvectorごと渡すクラスにすべきだが・・・

172
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:56:10  ID:vQsfzK7a.net(2)
>156
>"hogeの定義の方"をなんとかしてできませんか
はできないからあきらめれよ!ってこと?

173
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:11:57  ID:EkOvBjK1.net(4)
>170
http://ideone.com/bdR6fU

これでいいじゃん

constの参照だと参照を握ったままになるから常に反映される

174
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:17:41  ID:BG6OiKaZ.net(2)
既存のライブラリをそのまま使いたいのでクラスの変更はなしの方向でお願いします

ラムダ式でコピーコンストラクタを呼ぶ方法がいいのかな
http://ideone.com/R8pyc7
コメント10件

175
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:46:59  ID:bQI5jx4o.net(2)
この状況だとvectorを直接からめた時点でスマートじゃなくなるだろ
unique_ptrとか補助に使ってnew[]で確保した領域に値をコピーして渡すのが結局スマート(賢い)

176
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:50:25  ID:FOrSERG0.net(2)
vector用のオーバーロード作ればいいんじゃないのか

177
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:59:15  ID:EkOvBjK1.net(4)
>174
size()を使ってる点でおかしいよ
vectorのインスタンスを無視するつもりか
コメント2件

178
デフォルトの名無しさん[]   投稿日:2016/12/02 02:33:56  ID:kfHVwGjq.net(10)
>177
君は間違っている。
STLでも begin() と end() で範囲指定するだろ。
イテレータがない型にも対応しようと思えば、先頭ポインタとサイズを渡すのが正しい。

179
デフォルトの名無しさん[sage]   投稿日:2016/12/02 02:49:25  ID:l8IxU+t8.net(2)
クラス変更無しでvector渡したいなら、ラッパを作って
配列と要素数を更新してからメソッド呼ぶようにするしかないんじゃないかな?

180
デフォルトの名無しさん[]   投稿日:2016/12/02 05:46:11  ID:na0ypgqO.net(8)
何が問題でどうしたいのか明確にしてないからこんな風にとっちらかった回答になるんだよな

181
デフォルトの名無しさん[sage]   投稿日:2016/12/02 07:22:37  ID:nGP8T2R9.net(2)
質問者本人はこれ以上無いくらいに明確にしたつもり
コメント2件

182
デフォルトの名無しさん[]   投稿日:2016/12/02 07:57:25  ID:na0ypgqO.net(8)
>181
本人?
意図不明なラムダ使った未定義動作のコードで明確にしたつもりって言われてもなあ

183
デフォルトの名無しさん[sage]   投稿日:2016/12/02 08:20:31  ID:4/nN0nxx.net(2)
明確でないならスルーしとけばいい
明確でないから自分の都合で改編するとか迷惑なだけ

184
デフォルトの名無しさん[sage]   投稿日:2016/12/02 09:56:01  ID:tdlBqAAM.net(2)
>174
連続格納が保証されてるのだから
&a[0]を渡せばいいよ

185
デフォルトの名無しさん[]   投稿日:2016/12/02 10:09:51  ID:HWcr/nXn.net(4)
そもそもの基本
◎ int* に vector<int> は渡せない
相手が int* でビルトイン[]演算子を使う限り、
vector ではなく生の配列を用意する以外に選択肢はない
コメント2件

186
デフォルトの名無しさん[]   投稿日:2016/12/02 10:30:03  ID:na0ypgqO.net(8)
明確にしたとしても
>185
みたいに何も解ってない初心者がでしゃばって見当違いな回答する事も多かったな

187
デフォルトの名無しさん[]   投稿日:2016/12/02 10:53:45  ID:HWcr/nXn.net(4)
そもそもの基本を指摘されて発狂するようなガイキチが暴れてただけだろ
コメント2件

188
デフォルトの名無しさん[sage]   投稿日:2016/12/02 10:59:49  ID:dQ26sSxp.net(4)
>170
ラッパーかヘルパーを用意して、vectorはそっちで処理する。

189
デフォルトの名無しさん[]   投稿日:2016/12/02 11:04:51  ID:na0ypgqO.net(8)
>187
お前は何のためにstd::vector<T>::dataがT*を返すと思ってんの?

190
デフォルトの名無しさん[]   投稿日:2016/12/02 12:06:38  ID:kfHVwGjq.net(10)
vector::data()が追加されたのはC++11 からだから古い入門書には載ってない。
だから安易にdata()を使えと回答する人もまた入門者に近しい。
コメント2件

191
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:12:12  ID:jbEu1BDa.net(4)
どうも論理が飛躍しているな

192
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:28:12  ID:7EcjjmS3.net(4)
質問者はラムダ使ってるんだからdata()使えるでしょ

193
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:29:35  ID:dQ26sSxp.net(4)
>190
古い入門書を想定しろ、はさすがに言いがかりがひどすぎる。

194
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:36:41  ID:oWLJBZXg.net(4)
AnsiString::data()のパクリか…

195
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:38:30  ID:oWLJBZXg.net(4)
いや、string::data()か

196
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:14:03  ID:uzv70fAD.net(8)
data()はいいけど、vectorにemplace_back()したらsize()も変化するんだが
それが渡したクラスでは反映されないってのが問題だと思ってたんだが勘違い?

197
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:59:13  ID:7EcjjmS3.net(4)
俺もそう思ってた
もっといえば要素増やすとdata()の場所がかわってアクセス違反になるかもしれなくて困ると言うことかと
コメント2件

198
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:03:09  ID:uzv70fAD.net(8)
>197
あーそれはあるね
どんどん要素を増やして行くと再newしてそこに全部要素コピーされなおして
元のアドレスは無効になるってのがあったな
だからvectorをメンバに持つのを頑なに拒否する理由がわからない

199
デフォルトの名無しさん[]   投稿日:2016/12/02 15:13:55  ID:kfHVwGjq.net(10)
なんだか急にスレのレベルが落ちたのはなぜ?
他の場所で使うためのvectorをメンバ変数にするとか勝手なこと言いだしているし、精神病っぽいんだが。
コメント2件

200
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:37:45  ID:uzv70fAD.net(8)
>199
あのさあ・・・
>170見てから発言しようよ
クラスにvectorの中身を受け渡してからその時の要素数で和を求めてるでしょ?
他のところで元のvectorの要素数が変化してもクラスに反映されたいのかと思ったわけですよ
それだったらconst&で参照を握るのが一番いいでしょって話

レベルが落ちてるのは君の頭では?
コメント2件

201
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:53:53  ID:jbEu1BDa.net(4)
さすがにそんな今更な

202
デフォルトの名無しさん[]   投稿日:2016/12/02 16:04:44  ID:kfHVwGjq.net(10)
普通に考えれば、クラスのメンバ変数として配列を持つ必要はなくて、
sum(int* arr, size_t arrsize); のように計算したいときにその配列を渡すだけでいい。
>170の人は、クラス設計の基礎について学んでいる最中なのだろう。

>200
内部でvectorを持てなどど初心者をミスリードするような言説は支持できない。
参照渡ししようがsum()実行時に配列がすでに破棄されている危険は避けられない。
コメント2件

203
デフォルトの名無しさん[sage]   投稿日:2016/12/02 16:07:07  ID:uzv70fAD.net(8)
>202
それはそうだけど、精神科医でもないのに他人を精神病呼ばわりするのはどうかと思うね
コメント2件

204
デフォルトの名無しさん[]   投稿日:2016/12/02 20:25:46  ID:CA3LJl/S.net(2)
念のため受診してみるのはどうか。

205
デフォルトの名無しさん[sage]   投稿日:2016/12/02 20:55:50  ID:u0tVj5kO.net(2)
>167
ん?何か問題でも?

206
デフォルトの名無しさん[sage]   投稿日:2016/12/02 21:54:40  ID:U8hBv6+y.net(2)
必要もないのに受診するんだからお前金出せ

207
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:09:36  ID:7p6FlYPM.net(4)
>203
自分およびリアルの周りの連中に精神病の奴が多いから、すぐにそう呼ぶんだよ
プログラマは、基地外・低脳・ド素人でもなれる底辺職業だからしょうがない
あと,2chに来る連中は基地外・低脳が普通でコミュ障害の奴が多い
コメント2件

208
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:22:54  ID:bT0HhoKK.net(6)
>207
類は友を呼ぶって言うからお前も頭おかしいんだな
だからお前の回りばっかり精神病の奴がたくさん集まるわけだ
俺の周囲にそんなおかしい奴いないぞ
コメント2件

209
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:35:27  ID:7p6FlYPM.net(4)
>208
お前も、2chに来ている。つまり、お前もおかしい奴で基地外の仲間
コメント2件

210
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:42:18  ID:bT0HhoKK.net(6)
>209
無理があり過ぎるよそれ
2chに来ていたら頭おかしいってどうなんだよ
極論過ぎるだろ

211
デフォルトの名無しさん[]   投稿日:2016/12/02 22:57:40  ID:kfHVwGjq.net(10)
物事をわざと難しい方に倒すような人は精神の変調をきたしやすい。
質問者はvectorをメンバ変数に持つつもりなら最初からやってるよ。
質問者がクラスにやらせるべきこととそうでないことを判断するトレーニング中であることぐらい、察したらどうか。

212
デフォルトの名無しさん[sage]   投稿日:2016/12/02 23:17:08  ID:bT0HhoKK.net(6)
あーこりゃ完全に頭逝ってるね

213
デフォルトの名無しさん[sage]   投稿日:2016/12/03 00:40:47  ID:lJ+FIy6l.net(4)
そう言っている奴こそ完全に頭逝っているよな
普通の奴はそんなことは普通は言わないからな
コメント2件

214
デフォルトの名無しさん[sage]   投稿日:2016/12/03 01:16:45  ID:o5juI1ev.net(2)
>213が既に普通でない件

215
デフォルトの名無しさん[sage]   投稿日:2016/12/03 01:45:59  ID:lJ+FIy6l.net(4)
昼間は楽しかったんだな。俺も参加したかったよ。
>170
19. hoge huga(&[&]{return a;}()[0],a.size());
20. cout<<huga.sum()<<endl;
21. a.push_back(4);
22. cout<<huga.sum()<<endl;

質問者が聞いているのは、19のところの渡し方のみで
21でpush_backしたことが22のhuga.sum()に反映されなくてもOK
ってことでこのコードなのか。でも、普通は反映されないと駄目だろうってなるが
しかし、そのあたりのことは質問者の方針しだいだからな
コメント4件

216
デフォルトの名無しさん[]   投稿日:2016/12/03 02:11:45  ID:VaD9CZL6.net(12)
>215
そもそもそのコード未定義だから。コピーされた一時オブジェクトの寿命がfugaのコンストラクタの終了時までしかない。つまりコンストラクタが終わった時点でfugaは無効なポインタを保持している。
俺意外誰も指摘してないこのレベルの低さよ
まともなバッファーオーバーフローチェックツールもないWindows使ってるだろうからずっと気付かないんだろうけどさ。
コメント8件

217
デフォルトの名無しさん[]   投稿日:2016/12/03 02:17:26  ID:Ub2Qtd0L.net(6)
>216
Visual Studio に静的コード分析するツールがついてるよ。

http://qiita.com/t_takahari/items/8886b84f16c21dcf3169
ツールバーの[ビルド] → [ソリューションでコード分析を実行]
コメント2件

218
デフォルトの名無しさん[]   投稿日:2016/12/03 02:45:48  ID:VaD9CZL6.net(12)
>217
この流れで紹介するから検出すんのかと思って件のコードに使ったけど検出しねえじゃん。
何で紹介したの?見てください。こんなゴミしかありませんって言いたかったの?
コメント2件

219
デフォルトの名無しさん[]   投稿日:2016/12/03 03:22:46  ID:Ub2Qtd0L.net(6)
>218
無理だったか。人柱になってくれてありがとう。参考になったわ。

220
デフォルトの名無しさん[sage]   投稿日:2016/12/03 06:19:52  ID:Dg5vNEL0.net(2)
>何で紹介したの?

文脈を理解できずに単語レベルで脊髄反射したから
以外の理由が思いつかない

221
デフォルトの名無しさん[sage]   投稿日:2016/12/03 09:55:36  ID:PFahUF7+.net(2)
そもそも fuga なんてどこにもないし、無効なポインタとバッファーオーバーランの区別もついてない >216 が知ったか君の脊髄反射にしか見えん...
コメント2件

222
デフォルトの名無しさん[]   投稿日:2016/12/03 10:41:31  ID:VaD9CZL6.net(12)
>221
そんなどうでもいい事しか指摘出来ないんかね?
×fuga
○huga
これで満足かね?
あと、勝手に脳内補完したんだろうけどバッファーオーバーフローしているとは言っていない。
コメント4件

223
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:01:08  ID:ueq5z8BC.net(2)
>222
ビルド不可能な致命的なミスをどうでもいいとかレベルが知れるね
コメント2件

224
デフォルトの名無しさん[]   投稿日:2016/12/03 11:09:33  ID:VaD9CZL6.net(12)
>223
へえ、お前はあのコメントビルドしなきゃ解釈出来ないんだ?
融通の効かない脳みそ持ってて大変そうだね。
ちょっと気の利いた実在するコンパイラですらfugaじゃなくてhugaじゃない?と提案してくれだろうに

225
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:35:29  ID:msYNpxCE.net(4)
>222
>170もタイプミスで
hoge huga(&[&]{return a;}()[0],a.size());
としたんだよ
ほんとは、
hoge huga( &[&]()->std::vector<int>&{return a;}()[0], a.size());
(でも、ラムダを使った意図が分からんが)
で、一方、a.size()はラムダじゃないところがなかなか良いな

>216で言っているチェックツールはなんていうもの?
コメント2件

226
デフォルトの名無しさん[]   投稿日:2016/12/03 11:43:54  ID:VaD9CZL6.net(12)
>225
その質問者であろう次のコメント
>174
を読んでそう言ってる?
コメント2件

227
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:55:45  ID:msYNpxCE.net(4)
>226
>215>170ぐらいしか読んでいない
で、チェックツールはなんていうもの?

228
デフォルトの名無しさん[sage]   投稿日:2016/12/03 13:30:42  ID:NvhxMxG9.net(2)
1.配列と要素数を受け取るクラスにvectorを渡したい(>170)
2.既存のライブラリをそのまま使いたいのでクラスの変更はなし(>174)

だからラッパー作るしかないんじゃ
コメント2件

229
デフォルトの名無しさん[sage]   投稿日:2016/12/03 13:32:28  ID:yMrCSOQZ.net(2)
>216
そんなの誰でも気づいてるんだが・・・
「誰も気付いてないことに気づいてる、俺偉い!」みたいなガキみたいな発言やめようよ
コメント2件

230
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:13:03  ID:10B4blEi.net(2)
>誰でも気づいてるんだが

ラムダを使った意図が分からんと言っている人が
無効ポンタの問題に気付いているなんてありえるんか?
コメント4件

231
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:32:15  ID:ibetNlvy.net(2)
>230
くやしいのうくやしいのうwww

232
デフォルトの名無しさん[]   投稿日:2016/12/03 14:38:22  ID:VaD9CZL6.net(12)
>229
後からならなんとでも言えるよねw
それに”俺偉い”じゃなくて”お前ら役立たず”だから。

233
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:49:46  ID:3jlcDMZy.net(2)
>230
ローソンで使わないとポインタつかないよ

234
デフォルトの名無しさん[sage]   投稿日:2016/12/03 15:34:57  ID:RB4pAnBd.net(2)
03ぽい話はこういうところで話してもつまらないと思う。てゆーかみんなもう興味ないでしょ。

235
デフォルトの名無しさん[]   投稿日:2016/12/03 17:47:38  ID:obyPXWW/.net(2)
>174
これでダメならラップだな
http://ideone.com/FdmnJX
コメント2件

236
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:55:37  ID:nmEGc+VH.net(2)
メモリポインタの話でもしようぜ!

237
デフォルトの名無しさん[]   投稿日:2016/12/03 21:35:23  ID:Ub2Qtd0L.net(6)
クラスがnew や delete をオーバーライドしている場合は、
make_shared によるshared_ptrインスタンス作成は避けた方がよさげ?
コメント2件

238
デフォルトの名無しさん[sage]   投稿日:2016/12/03 22:49:36  ID:P2bjLPkk.net(2)
>235 ついでに >228
質問者はLambda覚えてうれしいみたいだから
auto getsum_of_vec_a = [&](){ return hoge(a.data(),a.size()).sum();};
or
auto getsum_of_vec_int = [](std::vector<int>& rveci){return hoge(rveci.data(),rveci.size()).sum();};
の方が好きなんじゃないのか

239
デフォルトの名無しさん[sage]   投稿日:2016/12/04 01:18:15  ID:NuV6w8ql.net(2)
気のせいかQの匂いがする
QはID入ってから消えたけど老害なのにC++11/14やり始めたのか

240
デフォルトの名無しさん[sage]   投稿日:2016/12/04 01:21:08  ID:ym269Z+p.net(2)
まあそうかも知れない
見ていて哀れな自演をするのが片山
自演せずにアホなレスを続けるのがQ

241
80[]   投稿日:2016/12/04 11:02:45  ID:VNQPodhL.net(2)
お礼が遅れましたが、レス沢山いただきまして
ありがとうございます。

毎週土曜日に囲碁ソフトを作ってる仲間で集まって対戦しているのですが、
昨日は、とうとう勝率で最下位に転落してしまいました。

というわけで来週の対戦に備えて、C言語のままでレベルをはかります。
C++への移植は、C++をもうちっと勉強してからにします。
コメント4件

242
デフォルトの名無しさん[sage]   投稿日:2016/12/04 11:30:28  ID:lLLqnakU.net(2)
>241
> 毎週土曜日に囲碁ソフトを作ってる仲間で集まって対戦しているのですが、
面白そうだな、羨ましい

243
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:44:55  ID:3hO5sNCQ.net(6)
集まる必要があるのか?
コメント6件

244
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:52:15  ID:vQKkq8/O.net(2)
ソケットの勉強してネットで対戦出来るようにしてくれ
コメント2件

245
デフォルトの名無しさん[]   投稿日:2016/12/04 13:15:12  ID:G39rTcwP.net(2)
>244
いくらでもあるじゃん

246
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:18:43  ID:0x/ZyvVg.net(2)
>241
英断
C++なんて初めたら囲碁ソフトどころじゃなくなるからな

247
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:22:41  ID:npHUCn5F.net(2)
>243
集まってわいわいやるのが楽しいんだろ

248
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:34:54  ID:3bGgXPCq.net(4)
>243
ぼっちか?
コメント2件

249
デフォルトの名無しさん[sage]   投稿日:2016/12/04 15:02:30  ID:3hO5sNCQ.net(6)
>248
集まるか?
まあ楽しいんだろうけど。
そういう場で言語の話題になったりしないのかな?

250
デフォルトの名無しさん[]   投稿日:2016/12/04 19:50:57  ID:IGd+W/R5.net(4)
>243みたいに一生ずーっとスマホ越しの
同好の士との交流だけをし続けるやつキモすぎ
コメント2件

251
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:01:23  ID:3hO5sNCQ.net(6)
>250
C++忘年会には出るけどな
コメント2件

252
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:22:06  ID:c0yJ+Nvf.net(2)
日本語が通じなさそう

253
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:31:12  ID:WzPfJn5T.net(4)
雑談している時が平和で良いな
C++のレベルは低くてC++の話はたいしてできないんだから
もう、C++な奴のの雑談スレで良いな
コメント4件

254
デフォルトの名無しさん[]   投稿日:2016/12/04 21:34:02  ID:IGd+W/R5.net(4)
おまえの中ではな

255
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:44:00  ID:3bGgXPCq.net(4)
>251
このスレ基準だとすぐ喧嘩になりそう

256
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:05:03  ID:ORLi/53U.net(2)
>237
そんな気がする

257
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:21:04  ID:mxVYcsZL.net(4)
>253
ついったーとかですればいい

258
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:21:43  ID:mxVYcsZL.net(4)
訂正
>253
れべるの高い話はついったーとかですればいい
コメント2件

259
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:53:20  ID:BLPKeA8O.net(2)
「このnewでインスタンスを作成する所が」
「インスタンスはコンパイラが明示的または暗黙的に作成するもの。イミフ」
「会話の流れから常識で理解できない馬鹿はお辛そうですねww」
「論破されて反論出来なくなると人格攻撃ミジメwww」
こんな感じだな
コメント2件

260
112[]   投稿日:2016/12/04 23:39:04  ID:Auh8Qey4.net(2)
eastl::make_shared<>(args) で new オーバーライドがないエラーが出て調べたんだが、
VS2017RC の std や boost の make_shared<>(args) は、しれっと new/delete オーバーライドを無視して、通常のnew/deleteを使うので要注意。

最初はコンパイルできないeastlの問題かと思ったが、今はむしろ意図しない解釈を許す std や boostの方が問題に思える。
コメント10件

261
デフォルトの名無しさん[sage]   投稿日:2016/12/04 23:39:11  ID:WzPfJn5T.net(4)
>259
ここには俺も含めてそうなる連中以外いないだろ
いまや,2chは基本的にコミュ障(議論っぽいことはしているが、実はコミュニケーションはできていない)
者が集まるところ。
議論にはコミュニケーション能力必要だが、雑談ならコミュニケーション能力なくていい。
意味不明の独り言でもよいし

>258
れべるの高い話だけじゃなく低い話もついったーとかで
雑談はここで良いが、C++のこと(議論)をここですると(コミュ障全開の)罵倒・喧嘩・基地りあいになるから
雑談以外はついったーとかですればいい

262
デフォルトの名無しさん[sage]   投稿日:2016/12/05 00:01:16  ID:JXZGoe9z.net(2)
>260
make_shared<T>はTとshared_ptrの管理ブロック用の領域を合わせた大きさで
一回しかメモリ確保を行わないからそういうもの
Tの大きさ分のメモリしか確保しないオーバーロードされたnewはメモリ確保には使わない
コメント2件

263
デフォルトの名無しさん[]   投稿日:2016/12/05 00:19:06  ID:oh/e0eB5.net(46)
>262
そういうもの、とはどういう意味ですか?
やはりコンパイルエラーが出るEASTLが間違っているということでしょうか。
コメント6件

264
デフォルトの名無しさん[]   投稿日:2016/12/05 00:23:17  ID:soEx3sdp.net(16)
>263
特定のアロケーター使って欲しい場合のためのstd::allocate_shared
コメント2件

265
263[]   投稿日:2016/12/05 00:33:53  ID:oh/e0eB5.net(46)
>264
代替的な解決策のご提示、ありがとうございます。
正直、クラスのnew/deleteオーバーライドを警告なしに無視することが make_shared() の仕様であるとは思いたくないです。
コメント2件

266
デフォルトの名無しさん[]   投稿日:2016/12/05 00:43:42  ID:soEx3sdp.net(16)
>265
std::listなどのコンテナ関係が警告なしに無視するのは許せるの?
逆に言えば標準ライブラリの中でクラスのnew deleteがあればそれを使うなんてもの殆ど無いよ
コメント2件

267
263[]   投稿日:2016/12/05 02:11:52  ID:oh/e0eB5.net(46)
>266
警告くらいは出してもいい気がしますが。
list<shared_ptr<T>> を使えばクラスのnew/deleteオーバーライドを呼ぶよう対処可能だけど、
そのshared_ptr<T>インスタンスをmake_shared<T>()で作ると要素をshared_ptrでラップした意図も台無しになる。
コメント2件

268
デフォルトの名無しさん[sage]   投稿日:2016/12/05 03:07:21  ID:PDKg3SYv.net(2)
どいつもこいつもオブジェクトをJava化しようとするんだろうな

269
デフォルトの名無しさん[sage]   投稿日:2016/12/05 07:38:41  ID:nBxFX+pd.net(6)
>仕様であるとは思いたくないです

だが仕様は確認しない。
そう誓ったに相違ない

270
デフォルトの名無しさん[]   投稿日:2016/12/05 08:03:39  ID:soEx3sdp.net(16)
>267
何のためにクラスのnew deleteをオーバーロードしてるのか知らんけどスタックに構築するのはいいの?
std::list<T> a;って出来るのはいいの?
それらが良くてmake_shared<T>()がダメな理由が解らないよ。
コメント4件

271
263[]   投稿日:2016/12/05 09:14:32  ID:oh/e0eB5.net(46)
>270
> 何のためにクラスのnew deleteをオーバーロードしてるのか知らんけどスタックに構築するのはいいの?

ん?オーバーロードじゃなくてオーバーライドの話してるんだけど。

Win32APIのGDI+ のクラスはすべてGdiplusBaseを基底クラスとして持っていて、
GdiplusBaseのnew/deleteオーバーライドがヘッダーファイル GdiPlusBase.h に定義されている。
何のためにオーバーライドしてるのかこっちが聴きたいくらい。
コメント2件

272
デフォルトの名無しさん[]   投稿日:2016/12/05 10:16:56  ID:soEx3sdp.net(16)
>271
new deleteはオーバーライド出来ません

gdiplusは恐らくそのクラスをgdiplusのdllの中でnewしてポインタ返しユーザーにdeleteさせるような設計になってるからdllの中のnewとアプリケーションのdeleteが不一致になるのを防ぐ為だと思う。
だからアプリケーションコードの中で生成、削除する分には必ずしもオーバーロードされてるnew deleteを使う必要はないんじゃねえかな
コメント6件

273
263[]   投稿日:2016/12/05 10:33:28  ID:oh/e0eB5.net(46)
>272
ここはC++相談室スレだから、憶測のデタラメな回答はやめましょう。
雑談はよそのスレでどうぞ。

274
デフォルトの名無しさん[sage]   投稿日:2016/12/05 11:18:49  ID:AODxEeuP.net(6)
お前いったい何がしたいんだよ
反論できなくなったり、気に入らなかったりしたら
「雑談はよそのスレでどうぞ」
かよ
ことの発端はお前だろ
で、new delete の「オーバーライド」の話はどうなったの?
コメント2件

275
デフォルトの名無しさん[]   投稿日:2016/12/05 11:20:32  ID:soEx3sdp.net(16)
>274
触っちゃダメな人だよ

276
263[]   投稿日:2016/12/05 11:42:41  ID:oh/e0eB5.net(46)
new 演算子がヘッダーに書かれているのに dllの中で new するなどとデタラメなこと書いてるから門前払いさせてもらった。
このスレは、質問者の想定する前提条件を勝手に変更する読解力のない人がちょくちょく来るんだけど、何なの?
ほかのスレにこんな人いないよ。

277
デフォルトの名無しさん[]   投稿日:2016/12/05 11:44:07  ID:soEx3sdp.net(16)
公式のexampleでもスタックに構築してる事から構築方法に特に制限は無い、(もし制限があるなら記述するか、factory関数内でのみこう)

278
デフォルトの名無しさん[]   投稿日:2016/12/05 11:51:24  ID:soEx3sdp.net(16)
途中で書きこんでしまった。
通じる人に向けて書こうと思ったけど面倒くさくなったからいいや。

279
デフォルトの名無しさん[]   投稿日:2016/12/05 12:02:47  ID:soEx3sdp.net(16)
C++とdllとnew deleteの関係性について理解してる人には説明の余地もないけど、DLLの中でnewっていうのは所謂factoryメソッドのようなもの。gdiplusならBitmap::FromFileとか中で構築した物の生ポインタを返してるね。
それをユーザーコードでdeleteするとnew deleteをオーバーロードしていなけれはnewはDLLの中でリンクされているライブラリのメモリ確保が呼ばれる。
deleteはアプリケーションでリンクされているライブラリのメモリ解放が呼ばれる。

自分の知識の無さを棚に上げてデタラメ呼ばわりしたことを恥じて貰うために詳細に説明してあげたよ。
コメント2件

280
263[sage]   投稿日:2016/12/05 12:17:58  ID:oh/e0eB5.net(46)
>279
基底クラスが newやdeleteをオーバーロードすることの説明になってない。
あなたの言っていることは根本的にズレているんだが。
あなたが自分で書いた>270の質問に自分で回答してみたらどうか。

281
デフォルトの名無しさん[sage]   投稿日:2016/12/05 12:22:37  ID:AODxEeuP.net(6)
>gdiplusならBitmap::FromFileとか中で構築した物の生ポインタを返してるね。

>272

>gdiplusのdllの中でnewしてポインタ返しユーザーにdeleteさせるような設計

には該当してないんですか?
頭大丈夫?

そのあとの説明も、お前のはタイプミスしているようだが、ともかく
お前の長々書き上げたその説明も
>272

>dllの中のnewとアプリケーションのdeleteが不一致になるのを防ぐ為だと思う。

を意味もなく長く書いただけにすぎないと思うが
まったくお前の行動は意味不明すぎて訳が分からない
否定しておいて自分で同じことを言いなおすのが趣味の人?
コメント2件

282
デフォルトの名無しさん[]   投稿日:2016/12/05 12:28:33  ID:IcdzVsWl.net(4)
>281
いや、それ俺(同一人物)だから…
270の回答は良いんだよstd::vector<Bitmap> a;しても。
コメント4件

283
263[sage]   投稿日:2016/12/05 12:35:24  ID:oh/e0eB5.net(46)
>282
頼むからデタラメ書いてスレを荒らすのをやめてもらえないか。

284
デフォルトの名無しさん[]   投稿日:2016/12/05 12:42:20  ID:IcdzVsWl.net(4)
直接入れると配置newが無いってコンパイルエラーになるかもしらんけどね。

285
デフォルトの名無しさん[sage]   投稿日:2016/12/05 12:53:16  ID:AODxEeuP.net(6)
>282
素で間違えたわ・・・・ゴメンゴ
ついでににmake_sharedも問題ないね
DLLの内部でnewされるものにmake_sharedは使えないからね

286
263[sage]   投稿日:2016/12/05 12:54:28  ID:oh/e0eB5.net(46)
Bitmapはコピーコンストラクタがprivateになってるのでvector<Bitmap>を使えない。結果的にnew/deleteの問題を起こせないようになってた。

Bitmapをコンテナで使うには、生ポでいれるかshared_ptrでくるんで入れるしか選択肢がない。
前にも書いたが、stdやboostの場合、shared_ptrをmake_sharedで作るとnew/deleteの不整合問題が暗黙のうちに発生する。
コメント6件

287
デフォルトの名無しさん[]   投稿日:2016/12/05 13:19:44  ID:MCpw3CLl.net(2)
>286
それは何が不整合になると言ってんだ?
new deleteのオーバーロードが使われないというだけなら問題ないという話をしてたわけだけど

288
デフォルトの名無しさん[]   投稿日:2016/12/05 16:56:12  ID:rZWSQmpd.net(6)
>286
横レス失礼
そのBitmapとやらは、内部的にはHBITMAPだったりするのか?
コピコンがprivateってあたりが、そのように聞こえるんだが
だとしたらnew/deleteじゃなくCreateDIBSection/DeleteObjectだろ

289
デフォルトの名無しさん[]   投稿日:2016/12/05 16:57:36  ID:rZWSQmpd.net(6)
いや、何でもない
忘れてw

290
デフォルトの名無しさん[sage]   投稿日:2016/12/05 17:39:58  ID:IxGDT3As.net(2)
newのオーバーライドなんてできたっけ??
コメント4件

291
デフォルトの名無しさん[]   投稿日:2016/12/05 18:23:28  ID:5HZvpDM+.net(2)
【被爆】治療法より原因を報道せよ!【死刑】


増える原因不明死 死因解明が追いつかない
(NHK・クローズアップ現代)

某看護師会の集まりで
「なぜ最近20代の突然死が急に増えたのか」
というテーマが議題にあがったそう。
みんな全く理由がわからなかったらしい。
1990年以降、被曝医学が
カリキュラムから追放された事情も大きい


たくさんの人があっけなく死んでいく
ベンチに座ったまま バスを待ちながら
説明のつかない死が多かった
多くの人が脳卒中や心筋梗塞を起こした
駅やバスの中で (『チェルノブイリの祈り』)


朝本浩文、自転車転倒死。(UAなど作曲、53)
小泉義仁、駅で脳梗塞。(スピリチュアルTV 51)
森岡賢、、心不全。     (元ソフトバレエ 49)
飯野賢治、心不全。    (株式会社ワープ 42)
今井洋介、心筋梗塞。(テラスハウス出演者 31)
杉崎由佳、急死。(『進撃の巨人』作画監督 26)

今井雅之54 盛田幸妃45 松来未祐38 泉政行35
宮田紘次34 黒木奈々32 丸山夏鈴21 椎名もた20

292
263[]   投稿日:2016/12/05 19:02:40  ID:oh/e0eB5.net(46)
>290
>newのオーバーライドなんてできたっけ??

newはオーバーライドできる。さらに独自にクラス内でオーバーロードもできる。

世間では オーバーロード が使われることが多いが、オーバーライド を使うのが正しい。
オーバーライドは、 異なるクラスの同名メソッド
オーバーロードは、 同じクラスの引数違いの同名メソッド

new /delete を引数違いで複数定義すればオーバーロードになる。
多くの場合、newした場所を特定するデバッグ手段としてオーバーロードしているため、誤用が広まった。

293
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:06:45  ID:Ij/A1A/c.net(8)
>290
そこは触れないでおきたい、おもしろそうだから。
あー、でも もう263逃げちゃったかな。

> ん?オーバーロードじゃなくてオーバーライドの話してるんだけど。
名言だな
コメント2件

294
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:12:16  ID:Ij/A1A/c.net(8)
まだいたの?
盛り上がってくるの?

295
263[]   投稿日:2016/12/05 19:18:05  ID:oh/e0eB5.net(46)
「コンテナに入れるクラスの実装を変えろ」という意見はごもっともだが、他から提供されたクラスなので勝手に書き換えできないケースも想定するべきだろう。

Gduplusは、MFCやと違ってcyginやmingw向けにもクラスライブラリが提供されている。皮肉交じりに言えば、
意のままにならない他社製クラスをC++のコンテナやテンプレートで扱うためのスキルを磨くのに、Gdiplusのクラスが一役買うかもしれない。

>293
何を対象として話しているか曖昧になるので、オーバーロードの誤用は控えるべき。ヘッダーを見ればすぐわかることだが、
そもそもGdiplusBaseはサイズ引数1つだけをとる基本の new, new[], delete, delete[] がオーバーライドされているだけであり、オーバロードはされてない。

296
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:19:21  ID:HK8B5iWy.net(8)
>260は最初からオーバーライの話をして
そいつの相手をしている人は最初からオーバーロードの話をしているんだろ。
最初から議論がかみ合っていない、やっぱり2chだよな。議論はついったーとかでだな

297
デフォルトの名無しさん[]   投稿日:2016/12/05 19:23:45  ID:TTRwCBA5.net(4)
まだnew deleteのオーバーライドなんて言ってんのかよ。
お前はoperator+書くときもオーバーライドって言うのか
コメント4件

298
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:28:52  ID:HK8B5iWy.net(8)
>297
>260はnew deleteのオーバーロード(operator+のオーバーロードじゃなく)の話じゃなく
継承でオーバーライドされたnew deleteの話をしているんだろ
コメント4件

299
デフォルトの名無しさん[]   投稿日:2016/12/05 19:29:18  ID:TTRwCBA5.net(4)

300
263[sage]   投稿日:2016/12/05 19:35:38  ID:oh/e0eB5.net(46)
>297
同一クラス内で operator+ がひとつだけならオーバーライド。
同一クラス内で operator+ が複数あればオーバーロード。

オーバーロードという語を誤用しても普通は問題ない。
誤用すると混乱する話題だからあえて指摘した。
コメント4件

301
デフォルトの名無しさん[]   投稿日:2016/12/05 19:37:03  ID:2NaB5jfD.net(16)
>298
それが誤用だって言ってんだよ
お前は派生クラスで基底クラスのvirtualではない関数と同じ名前付けて隠した場合もoverrideって言うのかよ。
そうだとしたら根本的に話通じない相手だな。
コメント2件

302
デフォルトの名無しさん[]   投稿日:2016/12/05 19:47:51  ID:HK8B5iWy.net(8)
>301
俺は>298のように>263(>260?)のオーバーロードとオーバーライドの違いと理解したが
でも、>300からするとなんか違ったみたいだが。
コメント2件

303
デフォルトの名無しさん[]   投稿日:2016/12/05 19:53:49  ID:2NaB5jfD.net(16)
>302
最初に述べたようにnew deleteはオーバーライド出来ない。
クラス内に書くnew deleteもオーバーロード。
グローバルのnew deleteの他にそのクラスだけで使うnew deleteを多重定義できるからオーバーロード。
そのクラスを派生して基底のメンバーを使用したからと言ってオーバーライドされてるなんて言わない

304
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:53:59  ID:HK8B5iWy.net(8)
Win32APIのGDI+ のクラスや 、それのGdiPlusBase.h をよく見てみないと
>263(>260?)が言っているnew/deleteことが分からんのかもしれないが。
当然、俺は全く見ていない

305
デフォルトの名無しさん[]   投稿日:2016/12/05 19:59:25  ID:Ij/A1A/c.net(8)
263 俺がC++標準規格だ

306
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:07:08  ID:lQvX1MVr.net(12)
>300
なんだよその謎基準w

307
263[sage]   投稿日:2016/12/05 20:25:56  ID:oh/e0eB5.net(46)
例えると、インターネットとイントラネットの違いみたいな感じ。
override = inter-
overload = intra-

内と外の境界をどこに置くかで定義が変わる。

308
デフォルトの名無しさん[]   投稿日:2016/12/05 20:31:39  ID:SJelErcp.net(2)
こんばんは。

このスレ見ていますと、
C++は、難しい言語なんですね。

覚えてしまえば便利なんだけど
誰しも完全には覚えていない
言語のように思います。

私は記憶力の悪い馬鹿なので
頭のよくなる薬ができるまで
C++は触らないようにいたします。

309
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:36:21  ID:q1I0LUvJ.net(2)
まもなくAIで頭の悪いやつは何もしなくて良くなるからな

310
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:41:41  ID:lQvX1MVr.net(12)
そもそもstaticじゃなかったっけ?

311
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:03:57  ID:Xa5pMyWr.net(2)
newもdeleteもoverrideできないというのは間違い
そもそもnewもdeleteも非staticなメンバとして定義できない
だからnewとdeleteはoverloadはできるが、そもそもoverrideどうのこうのという議論自体がおかしい

ID:oh/e0eB5は完全に勘違いしててクラス内に書いてあるメソッドをoverrideできるんじゃなくて仮想メソッドをoverrideできるの
こういう人ってクラスのメンバを全部virtual宣言したり必ず仮想デストラクタをつけるよね
C++の言語仕様を全く理解してないと言っても過言ではないが、Javaとかから流れてきた人なのかな
コメント2件

312
263[sage]   投稿日:2016/12/05 21:15:20  ID:oh/e0eB5.net(46)
>311
抽象的なoverrideの話は、言語仕様に依存する static や virtual といった属性と何の関係もない。
あなたが、既定のグローバルな new や delete がどのように定義されているかさえ知らないってのはよくわかった。
コメント2件

313
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:21:35  ID:ddMLk6te.net(2)
>new や delete がどのように定義されているかさえ

C++のreplaceable functionってよく理解してないんだ
アホな俺に教えて

314
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:25:06  ID:0ETq54/D.net(2)
>312
違う
overrideというのはサブクラスからベースクラスのメソッドを上書きすること
staticメソッドでは非staticメソッドと違って暗黙的にクラスのインスタンスを受け取ることがないためクラスの話ですらない
ADLについて議論するならまだしも、クラス内に書いたら強制的にstaticにされてしまうnewやdeleteをクラスという枠組み前提で話すのは間違いだよ
そもそもクラスのメンバ関数と言うものが何かもわかってないのかな?
コメント2件

315
263[sage]   投稿日:2016/12/05 21:27:27  ID:oh/e0eB5.net(46)
特定の言語仕様ではなく、厳格なオーバーライドとオーバーロードの定義の話をしている。

<new> をインクルードして グローバルな new や delete を置き換えるのはオーバーロード。
グローバルなnew や deleteを呼ばないようクラスのnew deleteで置き換えるのはオーバーライド。
さらにそのクラスでnew や deleteの引数違いなメソッドを複数提供すればオーバーロード。
コメント6件

316
263[sage]   投稿日:2016/12/05 21:32:31  ID:oh/e0eB5.net(46)
>314
グローバルの new, delete は暗黙の基底クラスの静的メソッド扱い。名前なしだからそう見えないだけ。

317
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:33:42  ID:nEyLAjLt.net(8)
俺は頑張った
もうこれ以上にわかりやすい説明は無理
誰か変わってくれ
コメント2件

318
デフォルトの名無しさん[]   投稿日:2016/12/05 21:38:26  ID:2NaB5jfD.net(16)
>317
無理
無知はバカとは思わないがアレは本当にバカってやつだと思う

319
263[sage]   投稿日:2016/12/05 21:43:39  ID:oh/e0eB5.net(46)
オーバロードを誤用するのは別に構わないが、「new. deleteはオーバライドできない」というのは明らかな間違いだから訂正した方がいい。
オーバライドすることなくクラスの new delete を規定の名前なしグローバルのnew, deleteから置き換えることなどできないからだ。
オーバロードとオーバライドの定義をちゃんと理解せずに回答するのはもうやめてもらえるか?
コメント2件

320
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:46:15  ID:kGsjhS/J.net(10)
オーバーロードは同じ名前で引数や型引数の違う関数を定義し、静的な型推論で呼び分けること
operator newは型引数と実引数でオーバーロードされた関数
オーバーライドは派生クラスが親クラスの仮想関数の挙動を上書きする事
コメント2件

321
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:49:30  ID:kGsjhS/J.net(10)
operator newのやっていることは技術的にはテンプレートの特殊化と同じ

322
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:50:58  ID:GeoPwQ8R.net(2)
>319
あなたにとって
class Base {
  static void doSomething();
};

class Sub : public Base {
  static void doSomething();
};
はオーバーライド?オーバーロード?
コメント2件

323
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:54:27  ID:ryWJUcx/.net(2)
オーバーヒート

324
263[sage]   投稿日:2016/12/05 21:54:33  ID:oh/e0eB5.net(46)
>320
オーバーロードでは、静的な型推論の優先付けできない。
オーバーライドすることにより、はじめて静的な型推論の優先付けが成立する。
まず自分のメソッドを、なければ親のメソッドを辿って探す型推論の優先付け。

325
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:56:27  ID:nEyLAjLt.net(8)
オーバーライドは静的でなく動的解決なのですが…

326
263[sage]   投稿日:2016/12/05 21:58:11  ID:oh/e0eB5.net(46)
>322
少なくともオーバーライドである事は確か。親子関係による優先付けが発生するから。
オーバロードの誤用も可。

327
デフォルトの名無しさん[]   投稿日:2016/12/05 22:07:57  ID:rZWSQmpd.net(6)
  static void doSomething() override;
できるわけないやろw

328
263[sage]   投稿日:2016/12/05 22:16:44  ID:oh/e0eB5.net(46)
各言語仕様としての厳格な定義と、オブジェクト指向における定義が混在している。

329
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:19:29  ID:nEyLAjLt.net(8)
オーバーライドはオブジェクト指向と一切関係内が…

330
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:23:15  ID:kGsjhS/J.net(10)
直接関係ないのはオーバーロードじゃね

331
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:27:22  ID:+86vS9TV.net(6)
「演算子のオーバーロード」で丸暗記しとこうかな‥

332
263[sage]   投稿日:2016/12/05 22:32:43  ID:oh/e0eB5.net(46)
ざっくりいうと、メソッド推論の優先付けを伴わないのがオーバーロード。
親子関係などによるメソッド推論の優先付けを伴うのがオーバーライド。

オーバーライドとオーバーロードは同時に成立しうる。排他的ではない。
コメント2件

333
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:34:17  ID:x3Qm2Sdl.net(2)
規格書を見ながら書き込みした方がいい

334
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:36:02  ID:+86vS9TV.net(6)
>332
new から離れていいから,オーバーライドとオーバーロードが同時に成立するコードを見せてくれ
コメント2件

335
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:37:53  ID:kGsjhS/J.net(10)
オーバーライドはそれ自体では型推論なぞしないだろうに。
究極的には呼び出し先がインスタンス毎に変わるのだから。

336
デフォルトの名無しさん[]   投稿日:2016/12/05 22:38:15  ID:2NaB5jfD.net(16)
>334
それは普通に成立するぞ
コメント2件

337
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:41:20  ID:W20d9Bun.net(2)
規格にはオーバーロードともオーバーライドとも書いてない

もともと中途半端な動作な訳だからオブジェクト指向的には~とかの議論でさえする意味ないとおもうが

C++は自身のこの機能についてどっちとも言ってない、だからどっちでもないでいいだろ
コメント4件

338
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:48:00  ID:lQvX1MVr.net(12)
>315
厳格な話をするなら規格が必要であって、それはすなわち特定の言語に絞って語らないと無理

339
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:48:07  ID:+86vS9TV.net(6)
>336
オーバーライドは引数の種類が変わらない,オーバーロードは引数の種類が変わる.
だから両立は出来ないはずなんだが
コメント4件

340
デフォルトの名無しさん[]   投稿日:2016/12/05 22:48:15  ID:2NaB5jfD.net(16)
>337
普通に”Overloaded operators”の中でnew deleteが書かれてるけど

341
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:50:10  ID:lQvX1MVr.net(12)
>315
厳格で言語によらない定義だというなら根拠を示すべきだ。

342
デフォルトの名無しさん[]   投稿日:2016/12/05 22:51:57  ID:2NaB5jfD.net(16)
>339
俺とお前で両立の定義が違ったかもな
struct A{
virtual void a()=0;
virtual void a(int)=0;
};
これを構築できるように派生したらaはオーバーロードしてるしオーバーライドもしてる。という意味で俺は両立出来ると言った
コメント2件

343
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:52:22  ID:lQvX1MVr.net(12)
>339
いや、一度オーバーロードしたものを(引数の種類は変えずに)サブクラスでオーバーライドすることはできる

344
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:53:46  ID:nEyLAjLt.net(8)
>342
それはオーバーロードであってオーバーライドの例ではない
コメント2件

345
デフォルトの名無しさん[]   投稿日:2016/12/05 22:54:51  ID:2NaB5jfD.net(16)
>344
構築できるように派生するにはオーバーライドするしかないだろう?

346
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:58:01  ID:lQvX1MVr.net(12)
どっちにしてもstaticメンバ関数をオーバーライドなんて語義矛盾だよ。
obj.func(); という式においてobj の動的な型に応じて実際の関数が呼ばれることをオーバーライドと言う。

347
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:58:36  ID:nBxFX+pd.net(6)
>315
><new> をインクルードして グローバルな new や delete を置き換え

置き換えるのにどうしてインクルードが必要なのか
コメント2件

348
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:06:27  ID:kGsjhS/J.net(10)
overrideじゃなくhideになるよね
仮想関数でない奴は

349
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:11:21  ID:nBxFX+pd.net(6)
>337
規格の10.3にはoverridesという単語が出てきてかつ斜字体なので用語なのだが何を言っているんだお前は
因みにC++98の時からある
まさか規格にカタカナは書かれていないとでも言いたいのか

350
デフォルトの名無しさん[]   投稿日:2016/12/05 23:24:58  ID:Ij/A1A/c.net(8)
つーか、釣りだろ。
日付変わってID変わったらいなくなるよ。
コメント2件

351
263[sage]   投稿日:2016/12/05 23:31:31  ID:oh/e0eB5.net(46)
>350
釣ってなどいない。
オーバーロードが既存のメソッドを置き換えできるのは、オーバーライドが行われたから。

>347
失礼。<new>は必要ない。nothrowの制御と勘違いしてた。

352
デフォルトの名無しさん[]   投稿日:2016/12/05 23:41:10  ID:2NaB5jfD.net(16)
C#でも派生先で同じ名前付けるときoverrideとnewが選べるというのに

353
263[]   投稿日:2016/12/05 23:56:17  ID:oh/e0eB5.net(46)
日付変わる前に勝利宣言しとくわ。
コメント4件

354
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:59:54  ID:kX3Q4svv.net(2)
今来たけど、「C++の話」をみんなしてる中に「オブジェクト指向一般の話」をしだしたってこと?
抽象化したオブジェクト指向は人によって考え方に差があるから用語の定義とかについて論ずるだけ無駄
コメント2件

355
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:06:10  ID:QfNOYQI4.net(2)
人はなぜ
「現象AをBと解釈することもできる。」で満足すべきところで
「AはBだ!」と主張してしまうのか。

356
デフォルトの名無しさん[]   投稿日:2016/12/06 00:11:44  ID:VyUdPje1.net(2)
良くある誤用だから普通に流してレスしてたのにオーバーライドの話してるんだけどと突っかかってきたのはバカの方だからね

357
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:20:55  ID:ed0lUfqA.net(2)
オバマが到☆来と聞いてやってきました

358
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:27:15  ID:Eq2L1D85.net(2)
>353 日付変わっても続けられる際はコテハンそのままにするなどしてあなた様からのレスであることを特定できるようにおねがいします。

359
デフォルトの名無しさん[sage]   投稿日:2016/12/06 01:02:27  ID:0b/2xA1k.net(4)
>353
さっぱりわからんが、勝利おめでとう!

360
デフォルトの名無しさん[sage]   投稿日:2016/12/06 01:14:21  ID:0b/2xA1k.net(4)
>354
オーバーロードやオーバーライドはオブジェクト指向の中で定義されている言葉なのか?
もう、コンピュータサイエンスの言葉としてのオーバーロードやオーバーライドの話
をしているような感じからな
俺、情報系の学科には縁遠いところの出だから、ズバリコンピュータサイエンスの知識
は幼稚園児レベルになるからな。。大学レベルにはほど遠い,orz
(ほんとはコンピュータサイエンスは超重要なんだろうけどな)

361
デフォルトの名無しさん[sage]   投稿日:2016/12/06 02:23:43  ID:PnhmU0S2.net(4)
大企業なメーカーの工場は規則規則アンド規則で窮屈そうだったわ

362
デフォルトの名無しさん[sage]   投稿日:2016/12/06 02:24:21  ID:PnhmU0S2.net(4)
誤爆

363
デフォルトの名無しさん[sage]   投稿日:2016/12/06 03:02:41  ID:Wqo8M9+m.net(2)
昨日は爆釣だったんだな
俺も参加したかったわー

364
デフォルトの名無しさん[sage]   投稿日:2016/12/06 04:15:23  ID:8D/vbLGJ.net(2)
オーバーロードの総集編が映画化されるらしいな
誰が見に行くんだろうな

365
デフォルトの名無しさん[sage]   投稿日:2016/12/06 05:01:33  ID:ig7i7qkA.net(2)
cの関数ポインタみたいに関数オブジェクトの配列を実行時に動的に変えて実行するにはどうすれば良いのでしょう
Boost使えばc++11のlambdaが使えなくても出来ますか?
コメント8件

366
デフォルトの名無しさん[]   投稿日:2016/12/06 07:58:54  ID:qXZeYWw/.net(4)
>365
関数オブジェクトを引数にとる関数はテンプレートであり、関数オブジェクトの型ごとに別々の関数としてコンパイルされるのでファイルサイズも大きくなる。
配列で実行したい場合は、基底クラスのpublicな仮想関数を実装した派生クラスのインスタンスをテンプレートでない関数に参照なりポインタなりで渡すといい。
コメント4件

367
デフォルトの名無しさん[]   投稿日:2016/12/06 08:04:00  ID:EqtjFn+M.net(2)
>365
std::function
コメント2件

368
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:32:25  ID:QJVgZbOV.net(6)
>365
その制約はどこからくるの?
コメント2件

369
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:33:39  ID:S+t491v8.net(4)
なんで質問に質問で返すかね
コメント2件

370
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:42:09  ID:MylKYtcA.net(2)
>369
要件出し全否定か
コメント2件

371
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:43:39  ID:S+t491v8.net(4)
>370
>365の仕様を>368が実装するわけじゃないのでその反駁は無意味

372
デフォルトの名無しさん[sage]   投稿日:2016/12/06 14:07:32  ID:QJVgZbOV.net(6)
単に「不思議な制約だなあ」と思っただけで他意はないよ

373
デフォルトの名無しさん[sage]   投稿日:2016/12/06 14:09:34  ID:Y8nBMTUH.net(2)
ちょっと試してみた
std::bindとstd::mem_fnは面倒っちいけどメンバ関数のポインタだから仕方ない

http://ideone.com/91JDrF

この場合std::unique_ptrはコピーコンストラクタがdelete指定になっているので使えない

374
デフォルトの名無しさん[sage]   投稿日:2016/12/06 16:04:03  ID:EzooQ0Q1.net(2)
結局は関数ポインタなのか
関数オブジェクトの配列は各要素がnaitiveコード列かと思った

375
デフォルトの名無しさん[sage]   投稿日:2016/12/06 20:10:27  ID:QJVgZbOV.net(6)
Advent

376
デフォルトの名無しさん[sage]   投稿日:2016/12/06 20:15:35  ID:ndfTDeJn.net(2)
shared_ptrを使う奴は大馬鹿
ということだな
コメント2件

377
デフォルトの名無しさん[sage]   投稿日:2016/12/06 21:42:11  ID:7XmOARyR.net(2)
>376
お前アスペか?unique_ptrを使ってみたところbindでエラーが出たから
仕方なくshared_ptrを使ったってことだろ
生ポインタでも当然構わない

http://stackoverflow.com/questions/20268482/binding-functions-with-uni...
http://qiita.com/rinse_/items/2873fa75e63153dd6f85

こういう件もあるしいろいろ面倒なんだろ
でも少し考えてみると当然なんだよな
関数にunique_ptrを渡すと所有権が呼び出し先に移ってしまいいろいろ面倒なことになる

378
366[]   投稿日:2016/12/06 21:52:31  ID:qXZeYWw/.net(4)
私は>366 を書いた者だが、>367 のstd::functionが正解。>366は古い解決方法。
std::bindとstd::mem_fnは必要ない。当然、shared_ptr も必要ない。

http://ideone.com/q8ngfp

379
デフォルトの名無しさん[sage]   投稿日:2016/12/06 22:10:33  ID:ltofPI3U.net(2)
>生ポインタでも当然構わない

ナマポで構わないところにshared_ptrを持ち出すことが不適切と言われている
という認識には至らなかったようだ
コメント2件

380
デフォルトの名無しさん[sage]   投稿日:2016/12/07 02:07:23  ID:GZUHYq4p.net(4)
>379
いやだからさ・・・classをnewしなきゃらならないでしょ今回の場合
誰がdeleteするかって話をしてるんだが
deleteが面倒だからスマポ使ったわけでしょ

381
デフォルトの名無しさん[sage]   投稿日:2016/12/07 02:13:54  ID:GZUHYq4p.net(4)
ごめん本当だ
new不要だなこれ

http://ideone.com/AeaHf4

382
デフォルトの名無しさん[sage]   投稿日:2016/12/07 03:19:04  ID:ujGMInBH.net(2)
>Boost使えばc++11のlambdaが使えなくても出来ますか?
c++11が使えなくてBoostでって話ならboost::functionあたりで適当に

383
デフォルトの名無しさん[sage]   投稿日:2016/12/07 10:13:47  ID:aRBhCK1g.net(6)
質問です。
winsock2でTCP IP通信をするプログラムを勉強しているのですが、
クライアントプログラムを立ち上げていないのにも関わらず、listen(serverSock,5);の戻り値が0になります。
なぜでしょうか?listen(serverSock,5)の引数を間違えているのでしょうか?
また、listen関数のタイムアウト時間は何秒程度に設定されているのでしょうか?
開発環境はVS2015,VC++です。必要があれば追記します。

384
デフォルトの名無しさん[sage]   投稿日:2016/12/07 10:51:22  ID:eOxcQ614.net(2)
接続待ちの開始なんだから、クライアント立ち上げる前に
0(成功)になって正しいんじゃ?

385
383[sage]   投稿日:2016/12/07 12:50:14  ID:aRBhCK1g.net(6)
acceptが実際に受付待ちをするみたいでした。
勘違いしていました。ありがとうございます

386
デフォルトの名無しさん[sage]   投稿日:2016/12/07 18:15:44  ID:+0olbaDa.net(2)
受付待ちという表現がいまいちだな
listenしたら受け付けはオペレーティングシステムが行う
アプリが固まっていてもクライアントからの接続要求は処理される
acceptは接続をオペレーティングシステムシステムから受け取るだけ
接続要求がなければ無期限に待つ
コメント2件

387
デフォルトの名無しさん[]   投稿日:2016/12/07 18:37:28  ID:1BXK2gQc.net(4)
初学者はC++をやるまえにCを触っておいた方が良いのでしょうか?
コメント2件

388
383[sage]   投稿日:2016/12/07 18:47:21  ID:aRBhCK1g.net(6)
>386
勉強になりました。ありがとうございます

389
デフォルトの名無しさん[]   投稿日:2016/12/07 19:05:18  ID:iM29S6qT.net(2)
>387
「やるまえ」でなくても、同時でおk
同時でCだけでなくアセンブラも必要
コメント2件

390
デフォルトの名無しさん[sage]   投稿日:2016/12/07 19:22:50  ID:lJ3XWqgd.net(12)
話蒸し返して悪いけど
>286は間違っているからね
GDIplusのBitmapをmake_sharedしても問題ない

make_sharedはグローバルなアロケーターを使ってBitmapを確保するし
また、グローバルなアロケーターを使ってdeleteするから
整合性は保たれる
Bitmapは基底クラスにGDIplus独自のnew/deleteを持っているけど
make_sharedした場合は、これらは使われない
だから問題は起きない
Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
クラス定義のdeleteを使わなければならないが
Bitmapの生成時にmake_sharedを挟み込む余地はないので
初めっから使えないし、問題は起きない

Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
使い手が自分でdeleteするわけだけど、この時、DLLとアプリの間で
new/deleteが不一致になったらマズいので、自前のdeleteが定義してある
普通に delete bitmap; としても問題が出ないようにね
で、deleteを独自のものにしたのなら、newも独自のものに定義しとかないとマズいよね
ってことで、newも独自なものに定義してある

普通にnew/deleteした場合や、ナマポをshared_ptrに入れた場合は
クラス定義のnew/deleteが使われるので、これはこれで問題がない

常に確保した時と同じ方法で解放されるので問題が起きないって理屈
コメント12件

391
デフォルトの名無しさん[sage]   投稿日:2016/12/07 19:26:27  ID:lJ3XWqgd.net(12)
ちょっとアレな部分を補足しておく

>Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
>クラス定義のdeleteを使わなければならないが
>( Bitmap::FromFile内部で行われる )
>Bitmapの生成時にmake_sharedを挟み込む余地はないので
>初めっから使えないし、問題は起きない

392
デフォルトの名無しさん[]   投稿日:2016/12/07 19:39:19  ID:1BXK2gQc.net(4)
>389
ありがとうございます

393
デフォルトの名無しさん[]   投稿日:2016/12/07 19:52:06  ID:Ao5egMeL.net(2)
C++の仕事してて、
アメリカ人やイギリス人の
作ったプログラムを
よみながら直してるけど
さっぱりわかりません。

とりあえず見るのが20万ステップで
ドキュメントはないです。
ささやかなコメントが頼りです。

勉強しながら見てますけど
どう見てもぐちゃぐちゃです。
もう辞めたいです。
つか辞めます。

394
デフォルトの名無しさん[]   投稿日:2016/12/07 20:20:42  ID:2yTgyuYL.net(14)
正直なところ、>390,391にある「DLL内でBimapをnewする」という説明が何に基づくのか分からない。
問題あるかどうかはクラスを提供するマイクロソフトが判断すること。
ヘッダーを見る限りvoid* 型別名 GpImage* のポインタが返されてることだけがわかる。
>390,391がマイクロソフト社のソースを実際に見て確認したのなら信頼していいだろう。

395
デフォルトの名無しさん[sage]   投稿日:2016/12/07 20:35:25  ID:pN2ME9Zl.net(4)
>390
Gdiplusが配置newを使ってるせいでDEBUG_NEWが使えなくて面倒くさいなと思っていたが、
そんな理由だったのか。
いままでnew/deleteの問題があるからDLLのインターフェースはどうしてもC++っぽくない形に
せざるを得なかったんだけど、そんな手も使えるんだな。参考になった。
コメント2件

396
デフォルトの名無しさん[]   投稿日:2016/12/07 20:37:31  ID:2yTgyuYL.net(14)
クラス独自の new/delete が呼ばれずじまいなことが正しいかどうかって話してたのに、またもやズレた話になってきた印象。
>390,391が情報源を示してくれれば、ある程度の説得力は得られるだろうが、
この人は、delete とデストラクタを混同して語っている気がしてならなない。

397
デフォルトの名無しさん[]   投稿日:2016/12/07 20:48:59  ID:2yTgyuYL.net(14)
長文ででたらめ書く人って何なの? >395みたいに鵜呑みにする人出てくるし。

398
デフォルトの名無しさん[]   投稿日:2016/12/07 20:51:11  ID:uSFo19YS.net(10)
お、すぐ出てきたなw

399
デフォルトの名無しさん[]   投稿日:2016/12/07 20:55:48  ID:uSFo19YS.net(10)
newオーバーライド君、最後の方ネタに見せかけて逃げたと思ってたけど、まだ理解してなかったとは救いようがないな。

400
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:03:14  ID:pN2ME9Zl.net(4)
でたらめなのか。>390で間違ってるのはどっち?それとも両方?
・Gdiplusはそんなことしていない
・自前のnew/delete定義でもDLL境界の問題を隠蔽することはできない
コメント4件

401
デフォルトの名無しさん[]   投稿日:2016/12/07 21:17:36  ID:uSFo19YS.net(10)
>400
gdiplusbase.hでググれば

402
デフォルトの名無しさん[]   投稿日:2016/12/07 21:17:42  ID:2yTgyuYL.net(14)
このスレに書き込んだ人は自身のソースレビュー能力を晒すことになる。
このスレがワッチョイ非対応であることを八百万の神に感謝し、今日という日が終わるのを待て。
コメント2件

403
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:21:58  ID:KapaWVji.net(2)
学会なら追放ものだよ

404
デフォルトの名無しさん[]   投稿日:2016/12/07 21:31:26  ID:uSFo19YS.net(10)
>400
あと、newオーバーライド君はnew deleteのDLL境界の問題について一ミリも理解してないし、理解する気もないみたいだから聞いても仕方ないよ

405
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:36:23  ID:lJ3XWqgd.net(12)
>クラス独自の new/delete が呼ばれずじまいなことが正しいかどうかって話してたのに、
>またもやズレた話になってきた印象。

Bitmap bmp(〜);
とした場合はどうなんだねチミ
この場合はクラス定義のnew/deleteは呼ばれないぞ
スタック上に作ることがOKなら
クラス定義のnew以外の方法で確保した領域にBitmap置くのも自由だろ
メモリ確保/解放の整合性さえあってればな
スタックがOKでmake_sharedがダメな理由がどこにある?
コメント2件

406
デフォルトの名無しさん[]   投稿日:2016/12/07 21:47:16  ID:5VlRXYq6.net(2)
>402
一対多で勝利を収めた方ですよね?その偉業と名声を語り継ぐべくコテハン付けるべきだと思います!
この人の言葉なら… と周囲からの反応も違った物になると思いますので。

407
デフォルトの名無しさん[]   投稿日:2016/12/07 21:50:16  ID:2yTgyuYL.net(14)
>405
>スタックがOKでmake_sharedがダメな理由がどこにある?

それを言い出すとクラス独自なnew/deleteの存在意義を否定することになるけど、
それでいいかどうかはクラス利用者ではなくクラス設計者が判断すべきことじゃないかな。
あなたがあえてマイクロソフトに代わってGDI+クラスを保守サポートする覚悟があるなら、ぜひ勝利宣言なさってください。

408
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:57:37  ID:lJ3XWqgd.net(12)
ではこうしようか?
new/deleteを独自定義しているhoge_tクラスがあったとしよう

struct piyo_t
{
  int reference_counter;
  hoge_t hoge;
};
auto piyo = new piyo_t;

この場合、hoge_tで独自定義したnew/deleteは呼ばれないが、これはどうするんだ?
C++はこーゆー入れ子の構造体を認めているし
実際make_shared内で起こっていることもコレなわけ
これを一切禁止するときは、コンスラクタ/デストラクタを隠す
逆にコンストラクタ/デストラクタが公開されているということは
こーゆーのを認めているということ
コメント2件

409
デフォルトの名無しさん[sage]   投稿日:2016/12/07 22:08:01  ID:lJ3XWqgd.net(12)
>それを言い出すとクラス独自なnew/deleteの存在意義を否定することになるけど、

何故そうなる?
存在意義は>390で書いた
new/deleteで不整合が発生しないようにするため

>それでいいかどうかはクラス利用者ではなくクラス設計者が判断すべきことじゃないかな。

コンストラクタが公開されている以上、どこに生成するかはプログラマの自由
スタックがOKなのにmake_sharedがダメな理由など無い
ただし、DLL内で生成されたものに関しては、クラス定義のdeleteを使ってくださいってだけ

410
デフォルトの名無しさん[]   投稿日:2016/12/07 22:08:12  ID:2yTgyuYL.net(14)
>408
私ではなくhoge_tクラス設計者にご確認のうえ、勝利宣言をどうぞ。

411
デフォルトの名無しさん[]   投稿日:2016/12/07 22:16:10  ID:uSFo19YS.net(10)
普通に考えてクラスのメンバーに出来ないとかそんな致命的な制限があるならドキュメントに書いてあるから。
コメント2件

412
デフォルトの名無しさん[]   投稿日:2016/12/07 22:30:57  ID:2yTgyuYL.net(14)
コンパイルが許可されたのだから安全性も担保されたことにしようという、大胆な提案ですね。よくわかります。

413
デフォルトの名無しさん[sage]   投稿日:2016/12/07 23:37:18  ID:lJ3XWqgd.net(12)
>411も言っているが、もしできないのなら、ドキュメントに書いてあるはず
コンストラクタを公開しているのに
スタックには作れません、構造体で入れ子にできません、make_sharedは使えません
っていうんなら、ドキュメントに書いておかないと最大限マズイ
だからお前はMSDNを漁ってmake_sharedが使えないって文章を探してこい
書かれてない場合は通常の発想、使えるってこと

414
デフォルトの名無しさん[]   投稿日:2016/12/08 00:28:40  ID:Dl6k+dfy.net(2)
MSDNではスタックに構築してるサンプルだらけだから、少なくともスタックには構築できる。
そしてスタックのアドレスの範囲を決めうちし、それ以外のアドレスに構築されたら故意に不具合が発生するような実装をしない限りスタック以外に構築しても問題ない。
そんなアホみたいな実装をしているという大胆な主張ですね。わかりません。

415
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:22:15  ID:V15cSFDl.net(4)
気楽な問題
glslのような、スウィズル文法をC++で定義することはできるか?
glslの例
float3 v = float3(1,2,3);
float3 y = v.yyy; // y = (2,2,2)
実用上、float3クラスに余計な成分は持たせたくない
class float3{public : float x,y,z; ...(?)...};
(全てのスウィズルに対応する成分をもたせることで可能だが、消費するメモリ量が組合せ爆発を起こす)
逆に、メモリが増えなければ成分は持たせてもよいから
サイズ0の中間クラスを定義してそこからキャストすればできそうな気がしたがどうだか?
コメント6件

416
デフォルトの名無しさん[]   投稿日:2016/12/08 09:43:44  ID:f999g3ye.net(2)
>415
struct A{};
sizeof(A)==1
だから。
やるとしたら
struct XXX{float x,y,z;operator vec3(){return vec3(x,x,x);}}
のような型を(3要素だけなら)27通り作ってunionで持たせるとか。
コメント6件

417
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:48:16  ID:V15cSFDl.net(4)
>416
ああvec3でしたな
あとunion という手がありましたねえ
考え直してみます

418
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:31:27  ID:iaOJa8zn.net(4)
その文法だとなんかしらを27通り書く必要が出てくる

C++ならC++らしく書くべきじゃん

https://ideone.com/N697kB
コメント2件

419
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:38:19  ID:vGsZ5jRR.net(8)
それEffective Modern C++にも載ってたな
templateのインスタンス化を利用してメンバの組み合わせをコンパイル時に決定するのもあった

420
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:40:05  ID:vGsZ5jRR.net(8)
ついでに

typedef float float3::*member_type;



using member_type = float float3::*;

と書いても同じだね

421
デフォルトの名無しさん[]   投稿日:2016/12/08 13:53:59  ID:dGX7aDi+.net(4)
>418
その書き方は使う方が流石に面倒すぎて無くない?
コメント2件

422
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:57:52  ID:vGsZ5jRR.net(8)
>421
わかってないなあ
もし3^3通りでなくて10^10通りだったらどうなるかって話なのに
コメント2件

423
デフォルトの名無しさん[]   投稿日:2016/12/08 14:00:52  ID:dGX7aDi+.net(4)
>422
それでも
float3 b(a.x,a.z,a.z);
の方が書くの楽なのは本末転倒だと思うよ
コメント4件

424
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:11:00  ID:WXYhvZot.net(2)
やりたいことはglslコードの流用なので
最大でも4^4通りです
パターン化できれば書き出しは別にプログラムすればいいと思っています
>416案でできそうな詰まりそうな感じです

425
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:22:13  ID:vGsZ5jRR.net(8)
>423
この場合はな
メンバ関数を含んでたりしたらまた違うんだよ
そういう場合constexprの威力を感じる
C++11はconstexprの用途が大幅に制限されてたのがC++14で目覚めたしな
unionも目覚めたんだぜ

426
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:52:06  ID:iaOJa8zn.net(4)
>423
そっちより短くしてやったぜ
https://ideone.com/N697kB

427
デフォルトの名無しさん[sage]   投稿日:2016/12/08 19:55:50  ID:Oqc+z4pd.net(2)
右辺値参照、ムーブセマンティックス、完全転送についてまとまってるページないかな
Effective Modern C++の訳がひどすぎる
コメント2件

428
デフォルトの名無しさん[sage]   投稿日:2016/12/08 19:59:18  ID:nWlkNCgu.net(2)
流れ読んでないけどこういうのは?
https://ideone.com/OwnhEG
メンバのx, y, zがメモリ上で連続してるかどうかは保障されてないんだっけ?
コメント4件

429
デフォルトの名無しさん[sage]   投稿日:2016/12/08 20:28:22  ID:NkEermSo.net(2)

430
デフォルトの名無しさん[sage]   投稿日:2016/12/08 22:06:28  ID:eMOVQdLS.net(2)
>429
おっこれ良さそう。ありがとう

431
デフォルトの名無しさん[]   投稿日:2016/12/08 22:43:09  ID:ZbTHf5IN.net(2)
EASTL、使ってるけど、いいね。おススメできる。
わりと速いし、stdのSTLを使った実行ファイルよりもファイルサイズが小さくなるし。

432
デフォルトの名無しさん[sage]   投稿日:2016/12/08 23:03:53  ID:mq/wDsmO.net(2)
STL2.0の登場が求められる

433
デフォルトの名無しさん[sage]   投稿日:2016/12/08 23:34:38  ID:UAmWCZIj.net(2)
>428
どうして保証されると思った?
コメント2件

434
デフォルトの名無しさん[sage]   投稿日:2016/12/09 00:35:55  ID:5DBzrJdL.net(2)
eastlは早いけど中身見たときにstdみたいに表示されないのが残念
stdみたいに見る方法あれば完璧
コメント2件

435
デフォルトの名無しさん[sage]   投稿日:2016/12/09 05:35:34  ID:b9kIASzF.net(4)
>434
試してないがVisual Studioだったら autoexp.datを編集すればいける気がする

https://msdn.microsoft.com/ja-jp/library/zf0e8s14.aspx

http://blogs.wankuma.com/melt/archive/2007/10/01/98927.aspx
コメント6件

436
デフォルトの名無しさん[sage]   投稿日:2016/12/09 05:45:05  ID:b9kIASzF.net(4)

437
デフォルトの名無しさん[sage]   投稿日:2016/12/09 09:17:44  ID:inf5Yz5x.net(2)
>435-436
ありがとう
これで無敵な気がする

438
デフォルトの名無しさん[]   投稿日:2016/12/09 09:51:47  ID:wyGLW805.net(4)
現在のVisual Studioは、XML形式のNatvis フレームワークでデバッグ時データ表示の指定するらしい。
VS2017RCにはautoexp.datがないのでNatvis一択っぽい。


ネイティブ オブジェクトのカスタム ビューの作成
https://msdn.microsoft.com/JA-JP/library/jj620914(v=VS.140,d=hv.2).aspx
コメント2件

439
435[sage]   投稿日:2016/12/09 10:31:55  ID:9P/5Un1M.net(2)
>438
訂正サンクス

440
デフォルトの名無しさん[sage]   投稿日:2016/12/09 17:02:16  ID:iZKXxh2B.net(6)
出遅れ感満載だが
>415が最近やったことなんで自分のやり方
http://ideone.com/33POAz

a.xy とか a.xxx とかを括弧なしでやろうとしたのでメンバ関数の数はえらいことになるけどGLSLと同じ書き方ができる
xyとかxyzとかyzwとかは左辺値にも出来るお

あとswizzle関数は可変長テンプレートでまとめることも一応できる

無名共用体で別の名前で参照するコードが混在するのはパフォーマンス的にはよくないらしいけど
コメント2件

441
デフォルトの名無しさん[]   投稿日:2016/12/09 18:23:14  ID:wsqzeERH.net(8)
>440
マクロで大量にグローバルな名前汚すのはちょっとな…
コメント2件

442
デフォルトの名無しさん[sage]   投稿日:2016/12/09 19:04:38  ID:iZKXxh2B.net(6)
>441
括弧を不要にして大量のマクロか、括弧必要にしてxyz()みたいな形か、利用者が選べるようにはしてる
まぁそもそも280かそこらのメンバ関数が作られるんでpch使いたくなるけど・・・

xy, xxxとかの書き方をあきらめればswizzle<1, 2, 0>()みたいな単一のメンバ関数テンプレートにまとめられるとは思う
左辺値になるものと右辺値のみのものを両方作れるかどうかは不明

443
デフォルトの名無しさん[]   投稿日:2016/12/09 19:14:50  ID:wyGLW805.net(4)
>435-436 の方が知らせてくれたネイティブ オブジェクトの件、新旧両方対応してるっぽいね。
VS2017RCでEASTL.natvisを使うことでネイティブ オブジェクトのカスタム ビューが機能することを確認できた。
以下 natvisファイルを 開発環境の \Common7\Packages\Debugger\Visualizersディレクトリに入れればOK。
https://github.com/electronicarts/EASTL/blob/master/doc/EASTL.na...

余談だが、Visual Studio CodeのC/C++拡張パッケージもnatvisファイルによるデバッガ支援に対応しているらしく、
以下に示したユーザープロファイルのフォルダにnatvisファイルが配置されているのがわかる。
%USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-0.9.2\debugAdapters\vsdbg\bin\Visualizers

444
デフォルトの名無しさん[sage]   投稿日:2016/12/09 20:22:28  ID:Xrkhmoyj.net(2)
>433
保障されているともいないとも思ってないよ
最初から配列使っとけばよかったね
http://ideone.com/Sz1fP4
コメント2件

445
デフォルトの名無しさん[sage]   投稿日:2016/12/09 20:38:44  ID:EUMrXHYZ.net(2)
ゼロオーバーヘッド以外受け入れられない

446
デフォルトの名無しさん[]   投稿日:2016/12/09 21:05:10  ID:wsqzeERH.net(8)
>444
アクセス指定子が同じであれば連続するから
コメント6件

447
デフォルトの名無しさん[sage]   投稿日:2016/12/09 22:24:22  ID:RdgUgAki.net(2)

448
デフォルトの名無しさん[sage]   投稿日:2016/12/09 22:50:57  ID:3Hvgn27V.net(2)
>446
ソースは?
コメント2件

449
デフォルトの名無しさん[sage]   投稿日:2016/12/09 23:07:53  ID:iZKXxh2B.net(6)
>447
えぐいなこれ・・・w
理解に苦労したけど要するに関数呼び出しでなく、暗黙のキャストで構造体にswizzleを実行させてるのね
415じゃないけど有難く使わせてもらおう

450
デフォルトの名無しさん[]   投稿日:2016/12/09 23:17:49  ID:wsqzeERH.net(8)
>447
方法論は >416 と一緒だね
それをBoost.Preprocssorで実装してる。

451
デフォルトの名無しさん[]   投稿日:2016/12/09 23:21:00  ID:wsqzeERH.net(8)
>448
自分で規格読め

452
デフォルトの名無しさん[sage]   投稿日:2016/12/09 23:40:19  ID:1bTr9oX7.net(2)
規格読まずにデタラメ言いました
って言えばいいのに…

453
デフォルトの名無しさん[sage]   投稿日:2016/12/10 00:53:02  ID:6N2vubn2.net(2)
アラインメントの問題とかあるんじゃないの?
32bit/64bit環境の違いも影響するだろうし

ILP64環境でlong a b c;なら連続するんじゃね(すっとぼけ)
コメント2件

454
デフォルトの名無しさん[]   投稿日:2016/12/10 06:21:03  ID:RDLcPD4m.net(10)
>453
アラインメントの問題なら配列でも同じように配置される。

規格上はデータメンバーの順番は定められてはいるが間のパディングについては定められていない
実際多くのコンパイラでpragma packでパディング入れ方を制御できる。
ただアラインメントの問題も無いのにパディング入れる理由もないしデフォルトでそんな事する処理系も存在しないだろうから考慮しなくていいんじゃね。
コメント14件

455
デフォルトの名無しさん[sage]   投稿日:2016/12/10 08:18:46  ID:0wqqV0ls.net(2)
ローカル変数のスタック順が定義順だと思い込んでて移植でバグ出したこと思い出した

456
デフォルトの名無しさん[sage]   投稿日:2016/12/10 08:30:52  ID:sVZRaydg.net(4)
ということは現在でもローカル変数は全てスタックだと信じているのですね

457
デフォルトの名無しさん[sage]   投稿日:2016/12/10 09:04:34  ID:FMtwqCBj.net(2)
江添はなんて言ってる?

458
デフォルトの名無しさん[sage]   投稿日:2016/12/10 09:18:41  ID:sVZRaydg.net(4)
>446
>アクセス指定子が同じであれば連続するから

アクセス指定子?
オツムの進化がC++03で止まっているハゲに騙されたのだろうか

459
デフォルトの名無しさん[]   投稿日:2016/12/10 10:46:24  ID:RDLcPD4m.net(10)
C++の知識を豊富に持っているとしてもこんな奴にはなりたくないな

460
デフォルトの名無しさん[sage]   投稿日:2016/12/10 14:15:18  ID:SiBj5VPE.net(2)
きっとネットで人格変わってるだけなんだろ
リアルでは普通に違いない

461
デフォルトの名無しさん[sage]   投稿日:2016/12/10 14:42:33  ID:Cln915zj.net(2)
規格を示さずソースが脳内ならなんとでも言える

462
デフォルトの名無しさん[]   投稿日:2016/12/10 20:01:22  ID:RDLcPD4m.net(10)
ネットで人格が変わるってのが何の免罪符になるというんだ

463
デフォルトの名無しさん[sage]   投稿日:2016/12/10 22:18:07  ID:eJ00H2ua.net(4)
まあそーだな
だが俺もID:RDLcPD4mみたいにはなりたくないな
コメント2件

464
デフォルトの名無しさん[]   投稿日:2016/12/10 23:13:30  ID:RDLcPD4m.net(10)
>463
へぇ、具体的にどんな所が?
コメント2件

465
デフォルトの名無しさん[sage]   投稿日:2016/12/10 23:46:10  ID:eJ00H2ua.net(4)
>464
リアルでもわざわざ人にくってかかんのか?
お前も同類
コメント2件

466
デフォルトの名無しさん[]   投稿日:2016/12/10 23:49:19  ID:RDLcPD4m.net(10)
>465
行動が矛盾しすぎだろw

467
デフォルトの名無しさん[sage]   投稿日:2016/12/11 01:32:59  ID:MKBClLrx.net(2)
江添はなんて言ってる?

468
デフォルトの名無しさん[]   投稿日:2016/12/11 10:11:52  ID:V6KbZEV0.net(2)
アカデミックな対話では、論は論で人格とは独立した存在
論に属人性を持ち込もうとする低劣な輩には参加資格がない
コメント2件

469
デフォルトの名無しさん[sage]   投稿日:2016/12/11 10:22:18  ID:vFkR62Wj.net(2)
>468
いや明らかに間違っていることを強弁してる場合性格を疑うが
コメント4件

470
デフォルトの名無しさん[sage]   投稿日:2016/12/11 10:25:39  ID:/H9INus/.net(4)
>469
>明らかに間違っていることを強弁
ってどのレスのことよ

471
デフォルトの名無しさん[]   投稿日:2016/12/11 10:50:57  ID:28MCt8dd.net(6)
>469
自分はアカデミックな対話は出来ませんっていう自己紹介?

472
デフォルトの名無しさん[]   投稿日:2016/12/11 10:56:25  ID:ZUXzDC9z.net(4)
中身のない人格攻撃的なケンカをするならよそのスレでやってくれ。
それはそうと、EASTL 3.05.00 リリース

https://github.com/electronicarts/EASTL/releases/tag/3.05.00
・Implemented eastl:string_view, a non-owning string type that isn't templated on an allocator making it suitable for use at API boundaries.
 http://en.cppreference.com/w/cpp/string/basic_string_view
・Adding support for typed get for tuple (e.g. get(tuple& t)).
・CoreAllocatorAdapter::operator= now copies the allocator name.
・Fixed strict-aliasing issues in the eastl::intrusive_list implementation.
・Adding move semantic guards around test code requiring that language feature.
・Improving eastl::vector implementation to move elements (instead of copying) during a resize.
コメント2件

473
デフォルトの名無しさん[]   投稿日:2016/12/11 11:37:08  ID:ZUXzDC9z.net(4)
>472 のコピペ内容に出てきた basic_string_view とはなんぞ?と思ったら、
固定バッファに対して basic_stringに似た機能を扱うためのアロケーターなしクラスだったか。
なるほど今までなかったのが不思議なほどだ。
GCCでは試験的にヘッダーファイルでbasic_string_viewが提供されているが、VisualStudioではまだ提供しないようだ。
VisualStudioでbasic_string_viewを試したければ、boostかeastlを使うことになるのかな。

474
デフォルトの名無しさん[sage]   投稿日:2016/12/11 12:43:26  ID:/H9INus/.net(4)
正式版じゃないけど試したいなら17RC入れとけ
2015でもnugetにあったような気がするけど

475
デフォルトの名無しさん[sage]   投稿日:2016/12/11 13:18:35  ID:vQQtrq1F.net(2)
basic_string_viewはC++17に追加されるやつだね
EASTLは次期規格にも積極的だな
コメント2件

476
デフォルトの名無しさん[]   投稿日:2016/12/11 21:28:51  ID:NV+vmDfg.net(4)
このスレは意地悪だよね。

477
デフォルトの名無しさん[]   投稿日:2016/12/11 21:32:13  ID:NV+vmDfg.net(4)
相談室だから優しくしてよ。

478
デフォルトの名無しさん[]   投稿日:2016/12/11 23:09:46  ID:28MCt8dd.net(6)
コードと同じで多く語ると間違いがはいりこみやすくなるからね。
だから説明は全くしないチキンが多いのよ。
それに罵倒が入るのは何も具体的な事は語らない安全な位置だから反撃来ないだろうと思ってるんだろうね。
端的に言うと他人を攻撃する事にしか興味の無い奴が居座ってる

479
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:17:03  ID:6HZEdd7M.net(2)
へー、そんな奴がいるのか
どちらかというと嘘を平気でつくから指摘を受けるのだと思っていたが

480
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:47:20  ID:yhEzNFx3.net(4)
何も具体的な事は語らない安全な位置だから
反撃来ないだろうと思ってるクズは死すべし
間違いが入らないよう全く説明しないけどエスパーしろって?

481
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:53:11  ID:VXRcpztN.net(2)
てかこのスレ糞な質問者が大杉
エスパーして頑張って答えた奴に対して労いどころかダメ出しする始末

自演なのかわからんが、質問者と一緒になって回答者煽るのが出るのも、まともな回答者が寄り付かない原因
コメント2件

482
デフォルトの名無しさん[]   投稿日:2016/12/11 23:57:45  ID:28MCt8dd.net(6)
>481
それも具体的な事は何も語らず安全な位置から他人を攻撃する奴だね。

483
デフォルトの名無しさん[sage]   投稿日:2016/12/11 23:58:42  ID:yhEzNFx3.net(4)
質問者本人が堂々と煽ってることおおいし

484
デフォルトの名無しさん[sage]   投稿日:2016/12/12 04:00:54  ID:nqvHYcKk.net(2)
バカはレスしないでくれる?
個人の主張として批判せず、いたずらにある類として扱うのは極めて恣意的かおバカの批判にあらざる攻撃の特徴。
まあ、その軽蔑すべき発想で返した俺も反省はしてもよいが
はっきり言って精神病とバカの特徴でしかない論法でレスするなよ。
俺はバカと精神病きらいだからな。
おまえら、マジで精神病と思われる宣言的絶対主義の形而上学バカの一味は人類の公的な敵だとおもっているからな。
さしあたりお前らが馬鹿にされていることは科学的認識の健全性をそれなりに示すから喜ばしいがな。

それにしても、単なる知識を披露しあっているだけの時は頭良さそうなふりはできるが、
いよいよ自身の認識を問われる事態になるとここにいる連中、そこの浅さを露呈するやつ多すぎ
所詮、2chだな
コメント2件

485
デフォルトの名無しさん[]   投稿日:2016/12/12 04:23:26  ID:wAsQV1H6.net(16)
>475
何故かEASTLに関してはSTLは化石と言い張る連中が出てこない不思議
奴らも認識を改めたのだろうか
コメント2件

486
デフォルトの名無しさん[sage]   投稿日:2016/12/12 07:26:08  ID:QGPJ2cbM.net(2)
>484
何かのコピペ?
コメント2件

487
デフォルトの名無しさん[sage]   投稿日:2016/12/12 07:28:00  ID:BFgije+s.net(4)
>485
「EASTLあるよ」
 ↓
「STLなどというものは規格にない」
 ↓
「いきなり関係ないことを言い出してどうした。EASTLの話なのにSTLとかイミフ」

488
デフォルトの名無しさん[sage]   投稿日:2016/12/12 07:35:32  ID:Wpm6TEVI.net(2)
>486
コピペなのか?。これぞまさしく2ch住人の鑑ってカキ込みに笑ったよ
激早朝に必死コピペ・長文カキコは2chの鑑じゃないとできないよな

489
デフォルトの名無しさん[sage]   投稿日:2016/12/12 07:53:47  ID:u9yJk1Sj.net(2)
「バカはレスしないでくれる?」で始まる書き込みは
C/C++のスレッドで何回か見たから定型文なのかもしれないね。
それぞれ独自のアレンジを加えてるのかもしれないけど詳しく見ない。

質問に対しては正しい回答をするのが望ましいけど、
「それは間違ってる」「どうしてそう思った?」みたいな
間違いであることの指摘だけの反応は歯がゆいね。
じゃあ何が正しいんだよ? と思っても「規格を読め」という
万能かつ追加情報量ゼロの答えしか返らないことが多いし。
コメント6件

490
デフォルトの名無しさん[]   投稿日:2016/12/12 08:08:33  ID:wAsQV1H6.net(16)
>489
間違ってるという指摘だけならまだいいよ。
「どうしてそう思った?」なんてそんな感じの意図を含ませてるだけで間違いの指摘ですらないし

491
デフォルトの名無しさん[sage]   投稿日:2016/12/12 08:09:45  ID:BFgije+s.net(4)
>489
>じゃあ何が正しいんだよ? と思っても
そこはフツー、規格を読み直して確認してみるだろ
知ってるなら言えよとは思うけど

492
デフォルトの名無しさん[]   投稿日:2016/12/12 09:38:58  ID:wAsQV1H6.net(16)
間違ってたら一言ごめんなさいでいいんだよ。間違えて取り返しのつかないような事になるわけでもないし、そんな正確性まで誰も匿名掲示板に求めてない。
それを鬼の首取ったかのように責め立てて人格まで否定して、間違いを言いづらい空気を作って。
そんな空気だから間違えるわけにはいかないのか罵倒するやつは自分でも大抵何も説明しない。こうなると行き着く果ては何か解るよね?
まぁ、こういう場を潰したい、もしくは単に他人を攻撃したいだけというのであればそういう行動も理解できるが。
コメント6件

493
デフォルトの名無しさん[]   投稿日:2016/12/12 10:21:45  ID:zVjVBBEL.net(2)
横柄なデタラメ回答者がいなくなれば平和になるんだがなぁ。
善意による回答であろうとも、間違いは間違いなのだから訂正して取り下げるのが回答者のあるべき姿。
「たとえ間違っていようとも、俺の善意を受け入れろ」みたいなのは絶対ダメ。技術板では特に。

494
デフォルトの名無しさん[sage]   投稿日:2016/12/12 10:22:57  ID:+gwThOjs.net(12)
>492
> それを鬼の首取ったかのように責め立てて人格まで否定して、間違いを言いづらい空気を作って。
よくわかんないんだけど、たとえばどのレスのこと言ってるの?
コメント2件

495
デフォルトの名無しさん[]   投稿日:2016/12/12 10:28:51  ID:wAsQV1H6.net(16)
>494
いちばん最近だと
ID:sVZRaydg
とか
コメント2件

496
デフォルトの名無しさん[sage]   投稿日:2016/12/12 10:57:55  ID:+gwThOjs.net(12)
>495
こんなの無視か「ちょっと何言ってるかわからない」ぐらいでいいと思うんだけどな。

497
デフォルトの名無しさん[sage]   投稿日:2016/12/12 11:20:15  ID:+gwThOjs.net(12)
>492
この主張を ID:sVZRaydg のレス先である ID:wsqzeERH を見ながら考えるに、
ID:sVZRaydg は無視すれば済むいっぽうで ID:wsqzeERH は誤った情報を正しいもの
であるかのように流したという点で、どちらかというと ID:wsqzeERH のほうがマズいだろう
と思った。
コメント2件

498
デフォルトの名無しさん[]   投稿日:2016/12/12 11:28:40  ID:wAsQV1H6.net(16)
>497
つまり、間違った事を言うぐらいなら黙ってろって事?
コメント2件

499
デフォルトの名無しさん[]   投稿日:2016/12/12 11:42:34  ID:wAsQV1H6.net(16)
それが問題だと言ってるのに。
間違ってる事を見つけて、それを広めたくないなら具体的に誤りをそれ以上の説得力を持って指摘すりゃいいだろ。
コメント2件

500
デフォルトの名無しさん[sage]   投稿日:2016/12/12 11:46:51  ID:+gwThOjs.net(12)
>498
別に間違ったことを言ってもいいよ。有益な議論の種になるなら歓迎もする。
異なる意見のどちらも間違いと正しいともいえないことはあるし。たとえば規格に不備があるときとかね。

ただ、異なる意見をぶつけるなら論拠を示してほしいな。少なくとも明示的にそれを要求されたときぐらいは。
そして間違ってると分かったら撤回してほしい。

501
デフォルトの名無しさん[sage]   投稿日:2016/12/12 11:54:36  ID:+gwThOjs.net(12)
>499
ID:wsqzeERH は規格に定めのないと思われるところの動作らしきものを主張した。
定めが無いことの論拠を示すのは難しい。規格全体とその解釈を洗わないといけないからね。

そこで逆に定めがあることの出典(これは主張が正しければ簡単なはず)を要求されたわけだけど、
なぜかそれを拒否した。そこがわからない。
コメント2件

502
デフォルトの名無しさん[]   投稿日:2016/12/12 12:05:21  ID:wAsQV1H6.net(16)
>501
出典を拒否したならそれで正確性が疑われると判断すれば良くない?
コメント2件

503
デフォルトの名無しさん[sage]   投稿日:2016/12/12 12:05:56  ID:iHRm80/h.net(4)
(この流れいつまで続くんだろ…)

504
デフォルトの名無しさん[sage]   投稿日:2016/12/12 12:09:45  ID:twbdB4od.net(2)
お前ここは初めてかよ
こんなの続いてるうちに入らないだろ
コメント2件

505
デフォルトの名無しさん[sage]   投稿日:2016/12/12 12:20:54  ID:+gwThOjs.net(12)
>502
本人にとってはそれでいいんだろうけど、見てる側としてはせっかく話題に上がった論点が
「正確性が疑われる」とかいう曖昧な状態で終わるのが嫌かな。

実は規格に対応する定めがあるのかもしれないし、
主張した本人が未だに誤りを信じてるかもしれないわけで。
コメント4件

506
デフォルトの名無しさん[]   投稿日:2016/12/12 12:29:55  ID:wAsQV1H6.net(16)
>505
そういうぐらいなんだからあなたの中では曖昧な状態ではなく誤りと確信してるんでしょ?
その理由を書けばいいんじゃない?

507
デフォルトの名無しさん[sage]   投稿日:2016/12/12 12:40:39  ID:iHRm80/h.net(4)
>504
プログラム絡まない不毛な会話が続くのは珍しくない?

508
デフォルトの名無しさん[sage]   投稿日:2016/12/12 13:04:44  ID:pCtNIeWj.net(2)
質問者は質問の意図をはっきりさせる。
回答者はエスパーせずに不明な点があれば質問者に要件を確認する。

この二つを徹底させる必要がある。
コメント2件

509
デフォルトの名無しさん[]   投稿日:2016/12/12 13:17:17  ID:GRRPu0hD.net(2)
>508
質問に質問を返すなというバカが現れるが無視する。
も加えないとな

510
デフォルトの名無しさん[]   投稿日:2016/12/12 14:00:07  ID:GtH+849B.net(2)
質問の意図・・・それを聞いてどうするつもりか
質問の主旨・・・何について尋ねているのか

明晰な質問文が作れる人は、自分で答えを導く力をすでに持っている
本当にわかっていない人は、自分が何をわかっていないのかを、わかっていない
無知の知ってやつ

511
デフォルトの名無しさん[sage]   投稿日:2016/12/12 17:51:59  ID:bNwcWuUI.net(4)
ID:+gwThOjsは健常者

512
デフォルトの名無しさん[sage]   投稿日:2016/12/12 17:56:16  ID:M1+cJD9B.net(2)
>492
いいね。結婚してください。

513
デフォルトの名無しさん[sage]   投稿日:2016/12/12 18:34:35  ID:bNwcWuUI.net(4)
「規格読め。具体的に何処なのか訊かれても私は説明しない。
なお出典拒否を見たらオマエが正確性を疑えばいいだけ」

ちょっとアタマおかしいのではないだろうか
>505が不憫でならない
コメント2件

514
デフォルトの名無しさん[sage]   投稿日:2016/12/12 19:19:02  ID:mxfi3nOt.net(2)
>489
毛の壁氏のコピペだよ

515
デフォルトの名無しさん[]   投稿日:2016/12/12 19:59:06  ID:eHvHtzFg.net(2)
>513
なんでそれらを同じ人が言ったように纏めるわけ?

516
デフォルトの名無しさん[sage]   投稿日:2016/12/12 20:51:00  ID:ER7G210i.net(2)
お前ら、
2chは嘘を嘘と見抜けないようじゃなんとかって言われているからな
あと、2chはスラム街であって普通の人が来るところではない
スラム住人に普通の人の行動・マナーを要求するって無理

517
デフォルトの名無しさん[]   投稿日:2016/12/13 01:47:50  ID:3XO5JWcw.net(30)
ちなみに俺(ID:wAsQV1H6)の見解は >454 に書いてる。
出典はデータメンバーの順序しか示せないけど(それも面倒だからやりたくない)、納得いく間違いという説明があればごめんなさいするよ。
コメント2件

518
デフォルトの名無しさん[sage]   投稿日:2016/12/13 02:10:32  ID:R+yFeKlS.net(8)
>517
間違いと言われてるのは>446でしょ。
>454の中段にあるとおりパディングについては定められていないので、連続しない可能性がある。

メモリレイアウトが連続すれば配列のようにアクセスしてよい、というわけでもないので、
>454の最後の「考慮しなくていいんじゃね」が「配列アクセスしてもいいんじゃね」という意味で
言ってるなら、これもマズい。
コメント4件

519
デフォルトの名無しさん[]   投稿日:2016/12/13 06:15:11  ID:3XO5JWcw.net(30)
>518
うーん。連続するかどうかしか話題になってなかったから
元々の話が
union{
struct {float x,y,z;};
float elem[3];
};
てな感じの定義になっててそれがズレる的な話なのかと思ってたけど、
発端の >428 から読み返したら違うみたいね。
それでも >518 の言うマズいが具体的に何がマズいのかは解らないな。メモリレイアウトは配列と同じになるけど配列アクセスするとマズい理由。

428のような書き方はしないけど、struct vec3{float x,y,z;};
的なレイアウトのクラスの配列の先頭ポインタをOpenGLの頂点配列に渡したり普通にするよね。
コメント4件

520
デフォルトの名無しさん[sage]   投稿日:2016/12/13 06:41:39  ID:MMXxHZC0.net(2)
スタックは深度が増すほどポインタの値は減っていくからな

521
デフォルトの名無しさん[sage]   投稿日:2016/12/13 07:09:41  ID:3Hyjk+HW.net(10)
>何がマズいのかは解らない
質問者の日本語が読めないのだろうか
『保障されてないんだっけ?』
コメント2件

522
デフォルトの名無しさん[sage]   投稿日:2016/12/13 07:27:22  ID:exhxuOGE.net(2)
(日本語間違ってるけどな…)

523
デフォルトの名無しさん[sage]   投稿日:2016/12/13 07:31:31  ID:vJwCdf+q.net(8)
>519
> メモリレイアウトは配列と同じになるけど配列アクセスするとマズい理由。
動作が保証されないから
> struct vec3{float x,y,z;};
vec3 v;
float *a = &v;
の場合に 8086 などのセグメントアーキテクチャだと v.x と v.y でセグメント切り替えを行う必要があるかもしれないからそのようなコードを生成するけど a[0] と a[1] でその切り替えを行う保証がないとか
(配列として宣言されてればサイズがわかっているのでセグメント切り替えをサボることができるように配置できる)
コメント10件

524
デフォルトの名無しさん[sage]   投稿日:2016/12/13 07:37:31  ID:KT6JI3xh.net(6)
あの文脈で連続をcontiguousでなく
sequentialの意味で解釈するのはアホ

525
デフォルトの名無しさん[]   投稿日:2016/12/13 07:52:37  ID:3XO5JWcw.net(30)
>523
その理屈だと昔ながらのCのmemsetとか標準機能で実装できなくない?
コメント4件

526
デフォルトの名無しさん[sage]   投稿日:2016/12/13 08:04:16  ID:KT6JI3xh.net(6)
C++のメモリモデルはバイト単位だけど
floatポインタのアドレッシングまでは規定されてないからな

527
デフォルトの名無しさん[sage]   投稿日:2016/12/13 08:10:29  ID:vJwCdf+q.net(8)
>525
union とかキャストも保証されないから自己責任でよろしく
って言語ですから

現実にそんな変な処理系にぶち当たったことはないしこれからもないと思うから俺は普通に使うけど
コメント2件

528
デフォルトの名無しさん[sage]   投稿日:2016/12/13 08:38:35  ID:17Hk+0wM.net(2)
村に伝わる言い伝えの、長老が伝え聞いた、伝説の処理系の存在で反論試み奴

529
デフォルトの名無しさん[]   投稿日:2016/12/13 08:56:31  ID:tD8W/Rko.net(2)
struct vec3
{
float elem[3];
float &x, &y, &z;
vec3() : x(elem[0]), y(elem[1]), z(elem[2]) { }
};
これだけのことだろ
コメント2件

530
デフォルトの名無しさん[sage]   投稿日:2016/12/13 11:17:02  ID:R+yFeKlS.net(8)
>519
配列外参照が未定義動作なのは知ってるよね?
struct vec3 {float x,y,z;}; の x とか、非配列について配列アクセス(ポインタ演算)できる範囲は
要素数1の配列と同じになるので、 (&x)[1] を読み書きしたり (&x) + 2 したりすると未定義動作になる。
コンパイラはそういう操作が無いことを前提とした「最適化」を行ってよい。
https://cpplover.blogspot.jp/2014/06/old-new-thing.html

いま動いてても何かの拍子に静かに壊れる可能性のあるコードはマズいでしょ。
コメント2件

531
デフォルトの名無しさん[]   投稿日:2016/12/13 11:40:12  ID:3XO5JWcw.net(30)
>530
それで、char*の場合は配列外参照についても特別扱いって事?
URLの先の記事の例だとintの配列ではなくcharの配列だったら同じように最適化されないと?
コメント2件

532
デフォルトの名無しさん[sage]   投稿日:2016/12/13 11:52:43  ID:R+yFeKlS.net(8)
>531
少なくとも現行の規格では、配列アクセス(ポインタ演算)の制限についてchar類についての特例は無いよ。

>525 つまりmemsetの類をユーザーコードで実装できる保証も無い。これは規格中で曖昧なところでもある。
http://wg21.cmeerw.net/cwg/issue1701
ただ、伝統的なコンパイラは既存のコードを守るためなどの理由で、最適化を控える判断をする可能性は高い
だろうとは思う。
コメント2件

533
デフォルトの名無しさん[]   投稿日:2016/12/13 12:14:32  ID:3XO5JWcw.net(30)
>532
ん?そのURLの先のには
オブジェクトTはN個のunsigned charのシーケンスとして表現できる。Nはsizeof(T)と等しい
って書いてるから少なくともunsigned charのポインタとしてオブジェクトの範囲内を操作出来るって事じゃないの?
曖昧と言ってるのはそのシーケンスを配列のように扱っていいのかどうか。
つまりunsigned charについては特別扱いされてそうだけど、
帰ったら規格読んでみるかな…

534
デフォルトの名無しさん[sage]   投稿日:2016/12/13 12:20:19  ID:ZDIceSoS.net(2)
>521-522
ちょっと笑った

535
デフォルトの名無しさん[]   投稿日:2016/12/13 12:42:22  ID:3XO5JWcw.net(30)
まぁでもわざわざ怪しい所に足を突っ込まなくても同じ領域を別の型で解釈するunionという明確な機能があるんだからそれを使うべきだよな。
発端を読み間違えていたとはいえ >454 は良くないレスでした。ごめんなさい。
データメンバーを配列としても扱いたいなら手抜きせずunionを使いましょう。

少なくとも俺はそうしてます。
コメント4件

536
デフォルトの名無しさん[sage]   投稿日:2016/12/13 13:07:00  ID:KT6JI3xh.net(6)
便利だけで他人に勧めるとはこれ如何に
>527>529が目に入っていないのか理解できなかったのか

537
デフォルトの名無しさん[sage]   投稿日:2016/12/13 13:20:29  ID:hs9s/v66.net(2)
>535
> データメンバーを配列としても扱いたいなら手抜きせずunionを使いましょう。

ここまでずっと
union {
struct {float x, y, z;};
float f3[3];
} a;
これがピッタリ重なる保証はないよね?(a.xとa.f3[0]…a.zとa.f3[2])
という話でもあったったのでは?
unionはすべての要素のメモリ開始位置が一致する事以外は保障してないのでは?
コメント2件

538
デフォルトの名無しさん[]   投稿日:2016/12/13 13:54:57  ID:3XO5JWcw.net(30)
>537
その話をしてるつもりはなかったかな。
俺はsizeof(float[3])==sizeof(vec3)であること前提で話してたから。
そこは規格の話ではなく環境の話でそんな環境存在しないから考慮する意味ないよねって事

539
デフォルトの名無しさん[]   投稿日:2016/12/13 13:56:42  ID:3XO5JWcw.net(30)
もちろん無意味にメモリを3倍消費するような実装は目に入ってません

540
デフォルトの名無しさん[sage]   投稿日:2016/12/13 18:04:22  ID:esmzfSZb.net(2)
「保障されてないんだっけ?」
 ↓
「もちろん無意味にメモリを3倍消費するような実装は目に入ってません」

池沼はひっこんでろ

541
デフォルトの名無しさん[sage]   投稿日:2016/12/13 19:42:41  ID:E4yvkIVk.net(2)
>454
gcc はアラインメントなしだよ
コメント2件

542
デフォルトの名無しさん[sage]   投稿日:2016/12/13 19:56:23  ID:vJwCdf+q.net(8)
正直 ID:3XO5JWcw が何を言いたいのかさっぱりわからん
周回遅れで環境依存云々って言われても困惑するだけだし...

543
デフォルトの名無しさん[sage]   投稿日:2016/12/13 19:57:23  ID:vJwCdf+q.net(8)
>541
アライメント「なし」ってなんだ?
コメント2件

544
デフォルトの名無しさん[]   投稿日:2016/12/13 20:36:46  ID:3XO5JWcw.net(30)
>454 にツッコミが入ったからそれについて話してただけだけど?

545
デフォルトの名無しさん[sage]   投稿日:2016/12/13 20:48:53  ID:3Hyjk+HW.net(10)
>何を言いたいのかさっぱりわからん

これは「何か考えがある」ことを仮定しているが
「どれだけ追究しても実は答えが無い」という可能性に気付きつつ、それに目を背けてしまっているのではないだろうか

546
デフォルトの名無しさん[]   投稿日:2016/12/13 20:52:33  ID:rAk2P0Xd.net(8)
Visual Studio Code スレに初期化子を理解できてない御仁が湧いたのを思い出したわ。

547
デフォルトの名無しさん[sage]   投稿日:2016/12/13 21:04:49  ID:3Hyjk+HW.net(10)
>アライメント「なし」ってなんだ?

仮説だが「ボクのレス(オツム?)は中身が無し」に置き換えると>543も意外にすっきりするのではないか

548
デフォルトの名無しさん[]   投稿日:2016/12/13 21:08:33  ID:3XO5JWcw.net(30)
unionで一致しない可能性を挙げるなら
struct vec3{float x,y,z;};
sizeof(float[3])==sizeof(vec3)
にならない可能性がある合理的な理由、もしくは現時点で実在する処理系をあげてもらわないと。
>454 で俺はそんな処理系存在しないだろうから考慮する必要ないと述べた、いや、ある!というならその理由を述べてくれってだけの話だよ。

規格で許されてるんだからアラインメントも関係なく間にパディング入れるコンパイラが今後出現するかもしれない、と理由もなくフワッとした感じで主張するなら、
そんな扱いづらいコンパイラを使う日が来ないことを祈るよとしか言えないけど
コメント2件

549
デフォルトの名無しさん[]   投稿日:2016/12/13 21:17:44  ID:rAk2P0Xd.net(8)
アラインメントが怪しい配列バッファの生ポ操作を新しく書く場面ってそうそうないでしょ。
C++11のinitializer_list<T>に置き換える方法を考えたが建設的じゃないかね?

550
デフォルトの名無しさん[sage]   投稿日:2016/12/13 21:19:16  ID:ewxTG/d/.net(2)
>523で指摘されてたでしょ?
コメント2件

551
デフォルトの名無しさん[sage]   投稿日:2016/12/13 21:25:33  ID:rAk2P0Xd.net(8)
わざわざC++スレで今さらナマポ操作について議論する価値はあるのかな。
コンパイラ依存をエレガントに解決するC++的記法とかならアリだが。

552
デフォルトの名無しさん[sage]   投稿日:2016/12/13 21:37:30  ID:FfoiWr4S.net(6)
>548
> struct vec3{float x,y,z;};
> sizeof(float[3])==sizeof(vec3)
になっててもダメって言われてることすら理解してないのかよ...
コメント2件

553
デフォルトの名無しさん[]   投稿日:2016/12/13 21:41:05  ID:3XO5JWcw.net(30)
>552
だからその理由を言えよ
コメント2件

554
デフォルトの名無しさん[sage]   投稿日:2016/12/13 21:51:33  ID:3Hyjk+HW.net(10)
「言われてることすら理解してないのかよ」
 ↓
「その理由を言え」

健常者なら仮に理解できなくても「どのレスなんだ?」という日本語になっただろうが、そうはならなかったようだ

555
デフォルトの名無しさん[sage]   投稿日:2016/12/13 22:05:23  ID:vKGN+G2S.net(2)
#pragma push(pack,1)
union {
struct {float x, y, z;};
float f3[3];
} a;
#pragma pop

でいいだろ
もう文句言うなよ
あとはC言語スレでやれ
ほれ、帰った!帰った!

556
デフォルトの名無しさん[sage]   投稿日:2016/12/13 22:14:46  ID:FfoiWr4S.net(6)

557
デフォルトの名無しさん[]   投稿日:2016/12/13 22:19:10  ID:3XO5JWcw.net(30)
>556
union使って

>(配列として宣言されてればサイズがわかっているのでセグメント切り替えをサボることができるように配置できる)

のまさに配列として宣言してるわけだけど
コメント12件

558
デフォルトの名無しさん[]   投稿日:2016/12/13 22:23:00  ID:3XO5JWcw.net(30)
あと、規格に準拠したコードでmemsetのようなものを実装出来ないというようなレスに説得力がないかな。

559
デフォルトの名無しさん[sage]   投稿日:2016/12/13 23:16:38  ID:FfoiWr4S.net(6)
引っ込みつかなくなってるのか、壊滅的に理解力がないのかよくわからんけど
もしかして同じアドレスを複数の方法でアクセスするアーキテクチャを知らんのか?
それなら 8086 の本でも買って勉強してこい
コメント6件

560
デフォルトの名無しさん[sage]   投稿日:2016/12/13 23:24:14  ID:rAk2P0Xd.net(8)
アラインメント不整合の例
http://qiita.com/kaityo256/items/fadffae00e517efbc8aa

561
デフォルトの名無しさん[]   投稿日:2016/12/13 23:38:22  ID:3XO5JWcw.net(30)
>559
知らんけど。
その環境で標準準拠のC++が動くのか?
コメント2件

562
デフォルトの名無しさん[sage]   投稿日:2016/12/13 23:41:25  ID:3Hyjk+HW.net(10)
フルボッコのID:3XO5JWcwだが>559については>557への反論になっていないと言わざるを得ない

と思ったら墓穴を掘るようなアホレスが続いて脱力だ
「その環境で標準準拠のC++が動くのか?」
コメント2件

563
デフォルトの名無しさん[]   投稿日:2016/12/13 23:44:19  ID:3XO5JWcw.net(30)
墓穴もなにも実際そんな環境しらんからな。

564
デフォルトの名無しさん[sage]   投稿日:2016/12/13 23:58:07  ID:R+yFeKlS.net(8)
>535
> 同じ領域を別の型で解釈するunionという明確な機能がある

C++のunionにそんな機能は無いよ。
アクティブなメンバ以外を通して読み書きすると未定義動作になる。
(構造体同士のcommon initial sequence部分の読み取りだけ特例でOK)
(Cの規格にはいけそうな文面があるんだけど、複数のDRへの委員会回答が
 さらなる混乱を醸しててカオス状態だから結局ポータブルとは言い難い
 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65892
コメント6件

565
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:10:53  ID:Sz6DS640.net(2)
>561
動かせない理由がない

>562
> フルボッコのID:3XO5JWcwだが>559については>557への反論になっていないと言わざるを得ない
union 中の構造体と配列で同じアドレスの要素に違う方法でアクセスする話だぞ
理解できないならいちいちしゃしゃり出てくるなよ...
コメント4件

566
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:11:46  ID:j9bleioz.net(2)
どんな流れかしらんけど
POD型では。

567
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:13:33  ID:pL75kfvJ.net(6)
unionはもともとメモリをケチるための物だからなぁ

568
デフォルトの名無しさん[]   投稿日:2016/12/14 00:16:58  ID:MOfhcMLl.net(4)
>564
ほんとだ。C99では記述あるけどC++の規格には書かれてないのな。

569
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:25:09  ID:pL75kfvJ.net(6)
俺の中では>564が本当だとしたらもう決定的といいますか
少なくとも規格上はNGって事でしょ
unionはもともとメモリをケチるために同じ領域を使いまわすための物だから
キャスト目的の使い方は本来の使い方ではないってだけで
なんかアレだよね
まるでバッドノウハウじゃないですか
やっぱ、本来の使い方から外れた使い方は良くないんじゃないですかねー
悪用ってやつでしょ
規格上NGってのも痛いでしょ

570
デフォルトの名無しさん[]   投稿日:2016/12/14 00:26:44  ID:MOfhcMLl.net(4)
http://stackoverflow.com/questions/36051084/do-array-elements-count-as...

丁度ぴったりな質問と解答みつけた。

ID:R+yFeKlS さんだけがまともなレスくれるわ。ありがたい。

571
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:39:25  ID:4ENgz5lN.net(6)
ふーん。
最後に書いたメンバ以外の読み出しは未定義なのか

572
デフォルトの名無しさん[sage]   投稿日:2016/12/14 00:50:30  ID:4ENgz5lN.net(6)
お行儀よく書くにはCで共用体周りを書いてコンパイルしC++にリンクか

573
デフォルトの名無しさん[sage]   投稿日:2016/12/14 03:34:55  ID:4GTows1q.net(2)
大の昔のgccなんかはunion使っても共有されないで単なるstructとして扱われることもあった

574
デフォルトの名無しさん[]   投稿日:2016/12/14 04:06:39  ID:19iGSV5P.net(2)
Win32で最も有名な共用体は、ULARGE_INTEGER型だろう。異論は認めない。

https://msdn.microsoft.com/ja-jp/library/windows/desktop/aa383742(v=vs.85).aspx
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
ULONGLONG QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;

575
デフォルトの名無しさん[sage]   投稿日:2016/12/14 04:12:41  ID:pL75kfvJ.net(6)
MSは自社でコンパイラを作っているから問題ないのだ

576
デフォルトの名無しさん[sage]   投稿日:2016/12/14 06:10:35  ID:TuSrwtRX.net(2)
江添の御節本は持ってるのだが、その後に出した禿の翻訳本は買うべきだろうか?

577
デフォルトの名無しさん[sage]   投稿日:2016/12/14 07:04:38  ID:FjhkxVYf.net(4)
>565
その話のなかで>523の理由には納得できなかった>557が居て、>557の日本語が理解できなかったので
(523の理由ではなく)許されるかどうかの話にすり替えたいのですねわかります

578
デフォルトの名無しさん[sage]   投稿日:2016/12/14 07:07:03  ID:ItxoOukr.net(4)
お前の日本語が理解できん
コメント2件

579
577[sage]   投稿日:2016/12/14 07:58:27  ID:FjhkxVYf.net(4)
>578
これは失礼
「規格上保証されないとする理由の源泉を>523とするなら>557の反論は尤もで妥当。>523単独では論拠として不完全。
>557が拘っているのは>523の後半部分なのでまずそれに対する回答を済ませるべき」
といえば良かったか
コメント2件

580
デフォルトの名無しさん[sage]   投稿日:2016/12/14 08:23:33  ID:ItxoOukr.net(4)
>579
>565 を読んでわからないような奴に説明するすべを持たない

581
デフォルトの名無しさん[]   投稿日:2016/12/14 08:49:56  ID:Bi35R/pC.net(2)
ここは是非理解出来た人を募集して代わりに説明してもらうって事でどうでしょう

582
デフォルトの名無しさん[sage]   投稿日:2016/12/14 18:03:49  ID:vdJGZhx+.net(2)
STLの

583
デフォルトの名無しさん[sage]   投稿日:2016/12/14 18:26:05  ID:bVVmVNC+.net(2)
強要隊

584
デフォルトの名無しさん[sage]   投稿日:2016/12/14 22:02:38  ID:D6UN0xSn.net(2)
メモリイメージ意識したコードで規格に固執する奴はアホ
コンパイラや環境に依存して当然やろ
空想の処理系を語るやつはshine

585
デフォルトの名無しさん[sage]   投稿日:2016/12/14 23:05:51  ID:CnQeYnTC.net(2)
環境依存の話なら他に色々スレがあるからそっちで

586
デフォルトの名無しさん[sage]   投稿日:2016/12/14 23:18:56  ID:4ENgz5lN.net(6)
struct {flot x,y,z;};
とかっていわゆるPODだからfloat [3]とunionしてもちゃんとアクセスできるんじゃねーのか
コメント4件

587
デフォルトの名無しさん[sage]   投稿日:2016/12/14 23:19:16  ID:hiLU9Xxd.net(2)
win7でVisualStudio2017でC++の勉強をしようと思ってるんですが最初はどんなの作れば練習になりますかね?
自分のレベルとしてはC言語の基本だけ知ってるレベルです
わからないところは調べつつやろうと思っています

588
デフォルトの名無しさん[sage]   投稿日:2016/12/15 00:03:21  ID:21oBCq6J.net(4)
作りたいものか作る必要のあるものやればー

589
デフォルトの名無しさん[sage]   投稿日:2016/12/15 01:08:01  ID:jtCJlu/u.net(10)
>586
unionのアクセスについてPODを特別扱いするルールは無い。
コメント2件

590
デフォルトの名無しさん[]   投稿日:2016/12/15 07:31:58  ID:J5ztPLlo.net(2)
socket周りにunionが沢山あるけど、よく破たんしないなと思う。たまたまかね。
コメント6件

591
デフォルトの名無しさん[sage]   投稿日:2016/12/15 07:59:00  ID:21oBCq6J.net(4)
>589
特別扱いではなくて、PODであるから必然的にアクセスできるのではないかね。
つーかPODな型同士ならreinterpret_castでいいじゃん
コメント2件

592
デフォルトの名無しさん[]   投稿日:2016/12/15 08:10:42  ID:xMFaiiqq.net(6)
Cでは保証されてるからね。
C++の規格上保証されていないとしても、CのAPIを直接呼べる事を望まれているC++のコンパイラがそれを考慮しないって事は現実的には有り得ない選択だと思う
コメント4件

593
デフォルトの名無しさん[]   投稿日:2016/12/15 08:16:21  ID:xMFaiiqq.net(6)
>590
それがC++では規格上は保証されていないという話
コメント2件

594
デフォルトの名無しさん[sage]   投稿日:2016/12/15 08:20:01  ID:Rg7daUM6.net(2)
>590
アライメントをちゃんと考えて char/int でエンディアンを考慮してアクセスするだけなら破綻する環境はまずない

595
デフォルトの名無しさん[]   投稿日:2016/12/15 08:24:26  ID:xMFaiiqq.net(6)
すまん >593 のアンカー間違えた
>591 に宛てたもの

596
デフォルトの名無しさん[sage]   投稿日:2016/12/15 09:59:36  ID:jtCJlu/u.net(10)
>592
「Cでは保証されてる」って、何が?

Cでも環境依存のパディングが入る可能性があるのは同じだし型ベースのエイリアシングルールは
あるし、>586のいうようなアクセスについて保証はないでしょ。
「ちゃんとアクセス」の意味によるのかもしれないけど。
コメント2件

597
デフォルトの名無しさん[]   投稿日:2016/12/15 10:17:49  ID:T67tgzmG.net(10)
>596
>592>590に宛てたものだよ
コメント2件

598
デフォルトの名無しさん[]   投稿日:2016/12/15 10:23:21  ID:T67tgzmG.net(10)
一応補足しとくと、Cで保証されてるのはunionの全く別の型からのアクセス
type punningと呼ばれるやつ
コメント2件

599
デフォルトの名無しさん[sage]   投稿日:2016/12/15 10:24:50  ID:jtCJlu/u.net(10)
>597
それでもやっぱり「Cでは保証されてる」が何のこと言ってるのかわからない。

600
デフォルトの名無しさん[sage]   投稿日:2016/12/15 10:39:52  ID:jtCJlu/u.net(10)
ごめんリロードしてなかった。

>598
未定義動作じゃないってだけで環境依存ではあるんだから、
この流れで「保証されてる」というのもいかがなものかと。
>564のリンク先の例にもあるように、unionにしとけばすべて期待したとおりになるとは限らないわけで。
コメント8件

601
デフォルトの名無しさん[]   投稿日:2016/12/15 10:49:41  ID:T67tgzmG.net(10)
>600
そのリンク先で期待通りにならないっていうのはstrict aliasing ruleのせいであってunionと直接関係ないよ
例のコードの関数は引数に渡された二つの互換性のない型がunionのメンバーと解らない状態だからね。
コメント2件

602
デフォルトの名無しさん[sage]   投稿日:2016/12/15 11:04:05  ID:jtCJlu/u.net(10)
>601
うーん・・・まぁいいやCの話だし。きっと言外に「(〜な場合は)保証されてる」って限定があったんだろう。
コメント2件

603
デフォルトの名無しさん[]   投稿日:2016/12/15 11:18:18  ID:T67tgzmG.net(10)
>602
単純な話だよ。リンク先の例の関数はunionのメンバーとしてアクセスしてないでしょ?

604
デフォルトの名無しさん[sage]   投稿日:2016/12/15 11:25:29  ID:k7cNIRIo.net(2)
PODはmemcpyとかmallocとかバイト単位で領域をさわっていいわけだよね。
だからPODな型どうしならエンディアンやら内部表現の意味やらはおいといて、
ポインタ、参照をreinterpret_castで相互に変換しても
全く存在しないアドレスを指して壊れるみたいなことはないじゃん。
コメント2件

605
デフォルトの名無しさん[]   投稿日:2016/12/15 11:38:15  ID:T67tgzmG.net(10)
>604
それはちょっと違う
上にも書いたけどstrict aliasing ruleっていうのがあって互換性のない別の型にreinterpret_castして書き換えた後、元の型で参照しても書き換えた結果が反映されないということがあり得る。そのルールではcharなどのバイト型とかについては特別扱い
strict aliasing ruleについては詳しくはググって。
解りやすい翻訳記事が出るから
コメント2件

606
デフォルトの名無しさん[]   投稿日:2016/12/15 13:08:36  ID:Mt/OUcfG.net(2)
>600
「保証されない」のは未定義の動作と未規定の動作だぞ
処理系定義の動作や文化圏固有の動作は「保証される」事項にあたるわけだが
おまえさんは未定義じゃないなら未規定とでも言いたいのか?
コメント2件

607
デフォルトの名無しさん[sage]   投稿日:2016/12/15 18:38:09  ID:8RRI46Yv.net(2)
書き換えが反映されない問題なら
volatileにしときゃきっと動くだろ

608
デフォルトの名無しさん[sage]   投稿日:2016/12/15 20:55:47  ID:qjVjn2tr.net(2)
昔のvolatileは最適化しないという意味があったが今はどうなんだろう

609
デフォルトの名無しさん[sage]   投稿日:2016/12/15 21:32:15  ID:ryYHdhLD.net(2)
アクセスを省略しないというなら正しいが最適化しないというのは間違い

610
デフォルトの名無しさん[]   投稿日:2016/12/15 23:30:53  ID:XnpLdVDT.net(2)
レジスタだけで完結する演算でもわざわざメモリへアクセスしにいくから高い確率で非効率的なコードになるけどなー
だからstrict aliasing ruleの回避の為にvolatileを使うのは悪手

611
デフォルトの名無しさん[sage]   投稿日:2016/12/16 00:48:28  ID:fGg7JmOu.net(2)
>605
探して読んだ。
なるほど。
非互換なaliasはないものとして処理するのか。
で、PODだとmemcpyは使えるので、
非互換な型のポインタが示す領域間でmemcpyしてしまってから読み出せば問題ないと。

612
デフォルトの名無しさん[sage]   投稿日:2016/12/16 01:24:59  ID:+Cerr3R4.net(4)
>606
特定環境での動作が保証されるかどうかならそのとおりなんだろうけど、
ポータビリティが保証されるかどうかと考えれば>600でもおかしくないでしょ。
コメント2件

613
デフォルトの名無しさん[]   投稿日:2016/12/16 01:31:25  ID:VoJ0WBIM.net(6)
>612
おまえが勝手に決めた移植性の範囲を
見も知らん馬の骨に押しつけてるだけだろ
どんな処理系にも移植できるコードを書けと言うなら
おまえ自身が世界中の全ての処理系で試す責任があるわけだが
コメント2件

614
デフォルトの名無しさん[sage]   投稿日:2016/12/16 02:05:15  ID:+Cerr3R4.net(4)
えwww理不尽すぎんだろ。責任とかwww

615
デフォルトの名無しさん[sage]   投稿日:2016/12/16 02:25:02  ID:cho0HItf.net(2)
もし612にその責任とやらがなかった場合
費用は613が支払う責任が出てくるのか
おいしい仕事うらやま

616
デフォルトの名無しさん[]   投稿日:2016/12/16 02:50:01  ID:vLNiG0Uc.net(6)
ここは、メーカーをさしおいて動作保証する有志が大量に湧く香ばしいスレですね。

617
デフォルトの名無しさん[sage]   投稿日:2016/12/16 03:43:44  ID:bfViihU5.net(2)
お前に都合のいい形で定義した本当の何かについて語るとお前に都合のいい形で話を進められるんじゃ

618
デフォルトの名無しさん[]   投稿日:2016/12/16 08:42:11  ID:VoJ0WBIM.net(6)
取って付けたような仮定でごちゃごちゃ言われても相手しようがない

619
デフォルトの名無しさん[sage]   投稿日:2016/12/16 09:14:08  ID:QVt2AG5I.net(2)
>613
メーカー抜きに規格上どんな処理系でも意図した通り動くかの簡単なお仕事です
動かない条件が存在するのにそれを隠して保証されてると言った人が費用を払うのが筋です
コメント2件

620
デフォルトの名無しさん[]   投稿日:2016/12/16 13:27:00  ID:6icF8y4L.net(4)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65892
がunion使っても正しく動かない場合があると言うのは、
{
lock_guard<mutex> lk(mutex);
}
value++;
と書いて
mutex使ったのにvalueが正しくインクリメントされない場合がある

というのと同じぐらい暴論だと思うぞ。

621
デフォルトの名無しさん[]   投稿日:2016/12/16 13:39:06  ID:VoJ0WBIM.net(6)
>619
異な事を仰る
PGの仕事は実機で動くコードを作ることで
規格上の正しさが第一条件なわけではない
規格票を読むこと自体が第一条件な人がいるようだが
手段が目的化してる痛いやつだ

622
デフォルトの名無しさん[sage]   投稿日:2016/12/16 14:04:50  ID:vWCWSv0y.net(4)
できうる限り規格上認められたコードを書くように努力するべきだよ
処理系依存にならざるを得ない部分も有ると思うが
可能な限り減らす努力をするというのは言うまでもないだろう
未定義動作が含まれたコードは非常に不味く
コンパイラはとんでもない最適化をかけてくることがあるからね
unionの件でいえば、アクディブでないメンバの読出しは未定義動作なので
意味のないコードとして一切をバッサリ削除するっていう最適化も
規格上は許されていると思う
未定義動作に関してはコンパイラは何をしても許されることになっているからね

有名なのでは
before(p);
auto i = *p;
after(p);
このコードで、beforeとafterがインライン展開されたとき
beforeやafterでpのnullチェックをしていたとしても
そのチェックをコンパイラは削除しにかかるかもしれない
なぜならauto i = *p;があるのでpは絶対にnullではないという判断
この効能は、デリファレンスの前のコードにも及ぶ、つまりbeforeも最適化の対象
pがnullの時、auto i = *p;は未定義動作になるので
pがnullの場合においてはコンパイラは何をしても自由ってことで
バッサリ削除しにかかるわけだわ、おっそろし
例えばbeforeの中で、if(!p){ output_log(); abort(1); }としていて
プログラマはそのことを知っていたので、auto i = *p;の時にはnullチェックをしなかった
のかもしれないが、一切のコードは削除されて、ログも吐かずにセグフォで落ちるということもありうる

未定義動作というのは最適化において直感的にはわからない非常にまずいことが起こる場合があるので
避けたほうがよいだろう
コメント6件

623
デフォルトの名無しさん[]   投稿日:2016/12/16 15:09:13  ID:6icF8y4L.net(4)
>622
念のために言うがそれはC++では正しい。しかしC言語では正しくない。Cではunionのメンバーについて異なる型でアクセスしても大丈夫な事が保証されている
socketでunionが多用されている、というのに(socketAPIの)Cでは保証されているから、とレスしたらそれにつっこんできたのが >600 だからね

624
デフォルトの名無しさん[sage]   投稿日:2016/12/16 16:31:31  ID:7+CqS1oK.net(2)
規格上未定義の場合、
○ 処理系の説明書では動作が規定されていたので使った
× 処理系の説明書にも動作は未定義とあるのに実験をして動作を確認して使った

625
デフォルトの名無しさん[sage]   投稿日:2016/12/16 17:49:52  ID:9Wz/M+WC.net(2)
621は潜在的に後者タイプ

626
デフォルトの名無しさん[sage]   投稿日:2016/12/16 18:54:22  ID:CA9Tfamg.net(2)
>622
> できうる限り規格上認められたコードを書くように努力するべきだよ
これはできる限りではなくマストだろ
> 処理系依存にならざるを得ない部分も有ると思うが
> 可能な限り減らす努力をするというのは言うまでもないだろう
これはケースバイケース
移植を全く考慮しないプログラムは普通にありうる
コメント2件

627
デフォルトの名無しさん[sage]   投稿日:2016/12/16 19:23:06  ID:zvOL+XWx.net(4)
> > できうる限り規格上認められたコードを書くように努力するべきだよ
> これはできる限りではなくマストだろ
異な事を仰る
PGの仕事は実機で動くコードを作ることで
規格上の正しさが第一条件なわけではない
規格票を読むこと自体が第一条件な人がいるようだが
手段が目的化してる痛いやつだ
コメント2件

628
デフォルトの名無しさん[]   投稿日:2016/12/16 19:26:22  ID:BXmKubid.net(2)
実機で動けばいい程度の仕事なのか
実機で動くのは当たり前
可搬性があるのもあたりまえ

629
デフォルトの名無しさん[sage]   投稿日:2016/12/16 19:45:33  ID:zvOL+XWx.net(4)
要求されてもいないことに努力するのが美徳とされるのは日本だけ
世界的にはgold platingといって避けるべきと考えられているんだな
顧客は技術屋の自己満足のためにお金を払ってるわけじゃないから

630
デフォルトの名無しさん[]   投稿日:2016/12/16 19:59:29  ID:vLNiG0Uc.net(6)
実機の挙動を追いかけるのが精いっぱいってこともあると思うんだが。
そういう時は、「おお、クロスコンパイル、ちゃんとビルド通ったね、めでたしめでたし」程度のもんだ。

631
デフォルトの名無しさん[sage]   投稿日:2016/12/16 20:02:23  ID:P4d6yKEb.net(2)
>622
>そのチェックをコンパイラは削除しにかかるかもしれない
それはない
コメント2件

632
デフォルトの名無しさん[]   投稿日:2016/12/16 20:04:27  ID:vLNiG0Uc.net(6)
下手にコンパイル通ると動くと思い込んでしまうからいっそのことビルド通らない方がマシだ(暴論)
コメント2件

633
デフォルトの名無しさん[sage]   投稿日:2016/12/16 20:22:54  ID:vWCWSv0y.net(4)
>631
実際この手の最適化でLinuxのカーネルにセキュリティーホールが出たことがあるし
http://blog.kmckk.com/archives/1202810.html

「未定義動作はタイムトラベルを引き起こす」
https://cpplover.blogspot.jp/2014/06/old-new-thing.html
にも、
>しかし、非古典的なコンパイラーは、このバグ関数を利用して、タイムトラベルを始めるのだ。
とある
コメント2件

634
デフォルトの名無しさん[]   投稿日:2016/12/16 21:24:35  ID:X9dL4QxA.net(2)
>632
そんな貴方にrust

635
デフォルトの名無しさん[sage]   投稿日:2016/12/16 22:42:01  ID:NA9YnVud.net(2)
>627
コンパイラがバージョンアップするだけで動かなくかもしれないようなコードは
> 実機で動くコード
とは言わんよ

636
デフォルトの名無しさん[sage]   投稿日:2016/12/16 23:30:15  ID:RQniJWoR.net(2)
それってsockaddrのこと?

637
デフォルトの名無しさん[]   投稿日:2016/12/17 00:20:42  ID:TZRPZZKH.net(4)
>626
できる限りとマストってニュアンスは違うけど実質同じ意味だよね。

638
デフォルトの名無しさん[sage]   投稿日:2016/12/17 00:23:18  ID:rz2849ZH.net(2)
should と must の違いはあるんじゃないかな

639
デフォルトの名無しさん[sage]   投稿日:2016/12/17 00:39:42  ID:fuQenMl0.net(2)
すべき と やらないと許さない くらいの違いがある

640
デフォルトの名無しさん[]   投稿日:2016/12/17 00:50:12  ID:TZRPZZKH.net(4)
できる限りってその人の出来る最大限の事だから。
まぁ、もし能力的に出来ないならやるなという意味も含めてマストと言ってる可能性もあるけど、うっかりバグも含めたらそんなこと出来る人殆ど居ないと思うんだ。

641
デフォルトの名無しさん[sage]   投稿日:2016/12/17 02:08:30  ID:QGFH/8LE.net(2)
>633
622で書いた例はおかしいんじゃないか。
beforeでnullチェックがあれば最適化しても消されないだろ。
記事の話はafter にnullチェックがあっても消されれるってだけ。

642
デフォルトの名無しさん[sage]   投稿日:2016/12/17 02:28:16  ID:JNOD62wa.net(2)
> [1] 標準規格は、明示的に未定義動作によるタイムトラベルを認めている。
> しかし、もしそのような実行が未定義の操作を含む場合、
> この国際標準規格は実装に対し、そのような入力に対し、
> いかなる実行上の制約をも課すことはない
> (未定義操作に先行する操作をも含む)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

643
デフォルトの名無しさん[sage]   投稿日:2016/12/17 06:57:11  ID:zNE1YHbQ.net(4)
beforeでnullチェックしてNULLなら*pに至らないコードであれば消えへんわな。
throwしてるとか。
あるいはpに影響を与える処理がnull処理に続くとか。

nullの時にbeforeの中の処理を迂回してるだけならばっさりいくかもね。
*pの処理をbeforeより先にやっても問題ないようなフロー場合を考えれば消えるが理解出来ると思う

644
デフォルトの名無しさん[]   投稿日:2016/12/17 08:56:05  ID:SZHJDyPT.net(8)
nullだったら未定義動作に突っ込むんだからそんなの有り得ないってことでnullの場合のコードを全部削除するっことはあり得るでしょ。
前か後ろかは全く関係ないよ

645
デフォルトの名無しさん[]   投稿日:2016/12/17 09:08:20  ID:SZHJDyPT.net(8)
おっとすまん。abort見落としてた。

>例えばbeforeの中で、if(!p){ output_log(); abort(1); }としていて

abortが規格通りちゃんとnoreturnで修飾されてるならnullなら未定義にならずにそのまま終了するんだから消えないわな。
abortするコードだけが残る可能性がある。

646
デフォルトの名無しさん[]   投稿日:2016/12/17 09:14:59  ID:SZHJDyPT.net(8)
あと書きミスだろうから話の本筋に関係ないけど標準のabortに引数はない。

647
デフォルトの名無しさん[sage]   投稿日:2016/12/17 09:18:30  ID:qqGfUFWc.net(2)
inline void before(int *&p) {
static int si = 2016;
if (!p) p = &si;
}

648
デフォルトの名無しさん[]   投稿日:2016/12/17 09:28:03  ID:SZHJDyPT.net(8)
ん?ちょっと待てよ?
翻訳単位が違うなどで中身の解らない関数を呼び出したとき、その中で必ず例外飛ばすとかterminateする可能性は捨てきれないから、noreturnで修飾されてようがいまいが関係ないか。

649
デフォルトの名無しさん[sage]   投稿日:2016/12/17 15:25:33  ID:sjHKoy2h.net(2)
ああ、そうだな
中身が分かってる場合に限られるだろう

650
デフォルトの名無しさん[sage]   投稿日:2016/12/17 16:07:38  ID:zNE1YHbQ.net(4)
インラインとか翻訳単位間での最適化がかかる場合だけだっての。
俺としては素直にrestrictをC++にも入れろと思う

651
デフォルトの名無しさん[sage]   投稿日:2016/12/18 16:04:27  ID:ZiJh313B.net(2)
>前か後ろかは全く関係ないよ
さすがに後ろは遠慮願いたいです

652
デフォルトの名無しさん[sage]   投稿日:2016/12/18 17:55:14  ID:A5RLn4gx.net(2)
畑中葉子か

653
デフォルトの名無しさん[]   投稿日:2016/12/18 18:44:38  ID:3mNBVKev.net(2)
(*)

654
デフォルトの名無しさん[sage]   投稿日:2016/12/18 19:44:57  ID:O7+9i5Ii.net(4)
そこはフツー、
)*(

655
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:12:23  ID:FPWIWuxB.net(2)
流石はC++のスレッド、というところだな。
気恥ずかしげに『はじめてのC』とか読んでるお子様とは一味違う。

656
デフォルトの名無しさん[sage]   投稿日:2016/12/18 20:15:17  ID:r3yaM0uJ.net(2)
結構お年の人がいるスレだな

657
デフォルトの名無しさん[sage]   投稿日:2016/12/18 21:39:25  ID:CFuzcgv7.net(2)
まあ2ちゃん自体が高齢化してるからな
俺ももう定年が視野に入る年で K&R スタイルの引数しか使えないコンパイラ使ってたけど i =- 1 とかは知らんかった

658
デフォルトの名無しさん[sage]   投稿日:2016/12/18 23:47:58  ID:O7+9i5Ii.net(4)
もう30歳以上は来ないでください
コメント2件

659
デフォルトの名無しさん[]   投稿日:2016/12/19 07:13:19  ID:JfSEkcBS.net(4)
20歳とかおっさんだろ20歳以上が来るなよ

660
デフォルトの名無しさん[]   投稿日:2016/12/19 07:58:47  ID:TguvqWsq.net(8)
コンパイラをC++11以上にするのは、武家のたしなみ。事実上マストな。

661
デフォルトの名無しさん[]   投稿日:2016/12/19 08:07:11  ID:TguvqWsq.net(8)
「C++11とそれより前」は、「Java5とそれより前」と同じくらいの隔たりがある。
Javaと違いC++は仮想VMで動くわけではないので、古いC++コンパイラを使い続ける積極的な理由はない。
C++11よりも前のコンパイラを使って新しいコードを書いている人は偉くもなんともなくて単にPG業界の負け組である。
コメント2件

662
デフォルトの名無しさん[sage]   投稿日:2016/12/19 08:13:02  ID:s4WNerU2.net(2)
>658-659
むしろ若いつもりならこんな古い掲示板にたむろせずにお前らがどっか行けよ...

663
デフォルトの名無しさん[]   投稿日:2016/12/19 08:33:37  ID:BpYOD4yf.net(4)
>661
積極的な理由あるだろ
GCCの2.95縛りとか長かったぞ

664
デフォルトの名無しさん[sage]   投稿日:2016/12/19 08:40:59  ID:qUwjyat8.net(2)
黙れ小僧

665
デフォルトの名無しさん[]   投稿日:2016/12/19 08:46:52  ID:TguvqWsq.net(8)
C++はJavaと違ってJava4縛りみたいなものはないので、新しいコンパイラが手に入るなら積極的に使うべき。
C++11コンパイラが供給されない見捨てられたハードで仕事している人はお気の毒としか言いようがない。

666
デフォルトの名無しさん[]   投稿日:2016/12/19 08:49:25  ID:BpYOD4yf.net(4)
はははは
あの件を知らないんだな
コメント6件

667
デフォルトの名無しさん[]   投稿日:2016/12/19 09:13:46  ID:TguvqWsq.net(8)
>666
不幸自慢か。よかろう、続けたまえ。 >666 よ。

668
デフォルトの名無しさん[]   投稿日:2016/12/19 09:18:32  ID:JfSEkcBS.net(4)
現在サポート継続中のOSでも環境標準のコンパイラ+標準ライブラリーだと対応してないものまだ結構あるでしょ。
例えばubuntu12.04とか
コメント2件

669
デフォルトの名無しさん[sage]   投稿日:2016/12/19 10:41:05  ID:LsCIfPmC.net(2)
>666
オーメン

670
デフォルトの名無しさん[sage]   投稿日:2016/12/19 10:44:56  ID:dPpwmd9E.net(2)
仕事さぼってこんなところにいたのね

671
デフォルトの名無しさん[sage]   投稿日:2016/12/19 18:33:47  ID:UkY+ZLT4.net(2)
他人の書いた古い糞コードをちょっと修正するのに
わざわざ新しいコンパイラを使おうとは思わないな

672
デフォルトの名無しさん[sage]   投稿日:2016/12/19 19:09:05  ID:nkfgQpHK.net(2)
コンパイラの最適化でバグが顕在化することもあるからリリースしてるソフトだと環境は極力変えないようにしてる

673
デフォルトの名無しさん[]   投稿日:2016/12/19 19:15:33  ID:CiSzNtO4.net(2)
むしろ色々な環境で試すことにより潜在バグをあぶり出す
コメント2件

674
デフォルトの名無しさん[sage]   投稿日:2016/12/19 20:15:07  ID:kP/9omRt.net(2)
そんな予算は無い

675
デフォルトの名無しさん[sage]   投稿日:2016/12/19 20:30:11  ID:ssWThwsz.net(2)
ださっ

676
デフォルトの名無しさん[sage]   投稿日:2016/12/19 21:13:03  ID:VOmGrAJz.net(2)
C++erにとって、全知全能でなければそれはダサいのだ

677
デフォルトの名無しさん[sage]   投稿日:2016/12/19 21:21:21  ID:875KlIZO.net(2)
予算というか、単にプログラムを利用したい人に対して
開発する話にすり替えるよくある詭弁

678
デフォルトの名無しさん[sage]   投稿日:2016/12/19 22:39:58  ID:K8raT0NF.net(2)
>673
これは良くやる。

679
デフォルトの名無しさん[sage]   投稿日:2016/12/19 23:09:24  ID:TaYHseGN.net(2)
C++14ならまだしも過去のC++11を持ち出すアホは何なの?
ヒキコモリなの?

680
デフォルトの名無しさん[sage]   投稿日:2016/12/19 23:44:45  ID:32YrbjET.net(2)
>668
Linuxサバでもサポート限界まで使うってところも多いだろうからな
それに搭載のstdC++ライブラリがC++11すら対応していないのものなのに
あえて新しいC++14のコンパイラーでいじくるなんてしないからな。

681
デフォルトの名無しさん[sage]   投稿日:2016/12/20 00:27:57  ID:D+KHLjez.net(2)
取引先の工場ではwin2000が現役

682
デフォルトの名無しさん[]   投稿日:2016/12/20 00:43:37  ID:2R+ZSOQx.net(2)
サポート切れてるOSターゲットに開発は流石にない

683
デフォルトの名無しさん[]   投稿日:2016/12/20 06:54:54  ID:IznJBAG+.net(2)
組み込みではよくある

684
デフォルトの名無しさん[sage]   投稿日:2016/12/20 08:45:37  ID:/4ZK922w.net(2)
無償サポート

685
デフォルトの名無しさん[sage]   投稿日:2016/12/21 11:55:31  ID:uc71CH8D.net(2)
カメラの座標を毎秒実行画面に表示しててそれをテキストファイルに書き出したいんだけど、最後の座標しか書き出せてないんだけど、どうプログラムしたら最初から最後の座標が書き出せるの?
コメント2件

686
デフォルトの名無しさん[sage]   投稿日:2016/12/21 11:58:27  ID:E3mPp/qZ.net(6)
fopenを゙a+b゙モードで呼び出す

687
デフォルトの名無しさん[sage]   投稿日:2016/12/21 12:00:04  ID:E3mPp/qZ.net(6)
上のはバイナリやった
テキストなら "a+t"

688
デフォルトの名無しさん[sage]   投稿日:2016/12/21 12:36:04  ID:KtI+UjCH.net(4)
データを1回表示するたびに
ファイルを開く → 書き出す → ファイルを閉じる
ってやってるクチかな。

ファイルを開く → 書く書く書く... → ファイルを閉じる
て感じにするんだ。


またはパイプでteeに送る
$ camerapos | tee output.txt

689
デフォルトの名無しさん[]   投稿日:2016/12/21 12:44:27  ID:aubTzGvR.net(8)
>685
座標を書き込むたびごとにcloseしてるだろ
void app::display_point(POINT const& pt){
std::fstream fs{filename, std::ios_base::out}; //ここで定義するとデストラクタでcloseされる
fs << pt;
}

std::fstream fs{std::ios_base::out};
void app::display_point(POINT const& pt){
fs << pt;
} //これならcloseされない

690
デフォルトの名無しさん[]   投稿日:2016/12/21 12:45:36  ID:aubTzGvR.net(8)
あ、filenameを忘れてるw
わりいわりい、でもわかるよな

691
デフォルトの名無しさん[sage]   投稿日:2016/12/21 12:48:25  ID:hcCdx4AT.net(6)
レス助かる
今のプログラムが
outputfile=fopen("text名","w");
fprint(optputfile, "カメラ座標¥n");
fclose(outputfile);
なんだけど、fopenのところに*a+t書き込むってこと?
コメント2件

692
デフォルトの名無しさん[sage]   投稿日:2016/12/21 12:55:05  ID:hQfd8N4I.net(4)
>691
wをat+にする
コメント2件

693
デフォルトの名無しさん[sage]   投稿日:2016/12/21 12:58:37  ID:hcCdx4AT.net(6)
>692
おおおお!ありがとうございます

694
デフォルトの名無しさん[]   投稿日:2016/12/21 13:16:35  ID:u1MDUlHV.net(4)
プログラム起動する度にどんどんファイルでかくなっていくけど大丈夫か

695
デフォルトの名無しさん[sage]   投稿日:2016/12/21 13:32:09  ID:E3mPp/qZ.net(6)
そこまで俺らが世話焼く必要は無い希ガス

696
デフォルトの名無しさん[sage]   投稿日:2016/12/21 14:00:14  ID:hcCdx4AT.net(6)
ファイルは毎回、削除、移動等してるので大丈夫です。ありがとうございました。

697
デフォルトの名無しさん[sage]   投稿日:2016/12/21 15:23:41  ID:nQIVUYH+.net(2)
fstream を使った回答をガン無視する流れ、嫌いじゃないよ。

698
デフォルトの名無しさん[]   投稿日:2016/12/21 16:20:38  ID:aubTzGvR.net(8)
質問者が使ってるのがfopenてだけじゃん
それ以上に他意があって欲しそうなヒマネラーがつまらん戯れ言をほざきやがる

699
デフォルトの名無しさん[sage]   投稿日:2016/12/21 16:41:16  ID:KtI+UjCH.net(4)
そういや、ここC++のスレッドじゃないか。
最初の質問と回答、それに質問者からの再質問がCの話になってるよ。
それで互いに通じてるから支障はないんだろうけど。
コメント4件

700
デフォルトの名無しさん[]   投稿日:2016/12/21 17:36:29  ID:aubTzGvR.net(8)
うん、だからfstreamで回答した
個人的にはfstreamは気安く使いたくないものなので
fopenを使っている質問者には内心同調してた

701
デフォルトの名無しさん[sage]   投稿日:2016/12/21 18:20:37  ID:MHGJUGGs.net(2)
>699
>Cの話になってるよ
どこが?
fopenみたいなC++の標準ライブラリに有る関数の話しかしてないだろ

702
デフォルトの名無しさん[sage]   投稿日:2016/12/21 18:50:02  ID:PZYB8k4u.net(2)
>699
std::fopenだからセーフ

703
デフォルトの名無しさん[]   投稿日:2016/12/21 19:06:50  ID:u1MDUlHV.net(4)
なんでストリーム系は評判悪いんですか

704
デフォルトの名無しさん[sage]   投稿日:2016/12/21 19:10:12  ID:hQfd8N4I.net(4)
フォーマッティングがウザい

705
デフォルトの名無しさん[sage]   投稿日:2016/12/21 19:41:35  ID:ZtnFV01Y.net(2)
coutってなんでprintfより遅いの?

706
デフォルトの名無しさん[sage]   投稿日:2016/12/21 23:42:58  ID:Padeiior.net(2)
安全性上げてるから

707
デフォルトの名無しさん[sage]   投稿日:2016/12/21 23:49:07  ID:/5DtifXw.net(2)

708
435[sage]   投稿日:2016/12/21 23:53:59  ID:5x6EB9D5.net(2)
>707
これVisual Studioでも速くなる?
昔試して変わらなかった記憶が
コメント2件

709
デフォルトの名無しさん[]   投稿日:2016/12/22 00:00:22  ID:uQsPz27E.net(4)
>708
リンク先のコメントに書いてあるね

>なお,Dinkumware による実装においては,そのソースコードのコメントにあるとおり,std::sync_with_stdio() の呼び出しは意味がないようです.
コメント2件

710
デフォルトの名無しさん[sage]   投稿日:2016/12/22 00:06:55  ID:nspPuHe1.net(2)
>709
センキュ

前のレスの名前欄435は無視してくれ、別スレのだ

711
デフォルトの名無しさん[]   投稿日:2016/12/22 00:12:02  ID:uQsPz27E.net(4)
まぁ、記事自体5年以上前だし今の実装がそのままかどうか解らんから最新の環境の中をチラ見してみるのも一興じゃないかな

712
デフォルトの名無しさん[sage]   投稿日:2016/12/22 01:11:23  ID:kb3vxaUU.net(2)
C++のライブラリって内部でC言語関数呼んでたりするから
遅くなっても速くなることはない気がするんだけど

713
デフォルトの名無しさん[sage]   投稿日:2016/12/22 08:33:08  ID:/kaZRMcK.net(2)
ソート

714
デフォルトの名無しさん[sage]   投稿日:2016/12/22 09:22:57  ID:oqG6b75c.net(12)
iostream系は超絶複雑杉るから流行らずに消えてゆく運命にある

715
デフォルトの名無しさん[sage]   投稿日:2016/12/22 10:26:29  ID:RBqM6sio.net(4)
printf系はあれはあれで意外と可読性が良いからな
フォーマット文字列と引数の対応を間違ったらアレっていう問題はあるが

716
デフォルトの名無しさん[sage]   投稿日:2016/12/22 10:32:56  ID:RBqM6sio.net(4)
あと、初心者がやりがちなミスとして
外部から入力された文字列をそのままprintfに渡しちゃうっていうやつ
文字列に%dとかが入ってるとヤバイ
その辺は気をつけなきゃダメだけど
iostreamより可読性自体は良いんだよねぇ

717
デフォルトの名無しさん[sage]   投稿日:2016/12/22 13:16:20  ID:RhVrJNPB.net(2)
どちらかと言うとiostream系はオーバーロードのためにあるような気がする

718
デフォルトの名無しさん[]   投稿日:2016/12/22 13:35:46  ID:duhm3nbB.net(12)
ランダムに生んだ点をx座標の小さい順にvectorに入れていきたいんだけど
ソートじゃなくてね,入れるときに並べときたい
それでこんな感じでしたらエラー出てしまった なんでかな?

vector<Point> points;
for(int i=0;i<100;i++){
Point new(rand()%i,0);
if(points.size()!=0){
int k=0;
for(auto it=points.begin();it!=points.end();it++){
Point tmp = (Point)(*it);
if(new.x < tmp.x) points.insert(points.begin()+k, new);
else if(i+1==points.size()) points.push_back(new);
else k++;
}
}
else points.push_back(new);
}
コメント4件

719
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/22 13:52:19  ID:rnqjScPf.net(4)
>718
newはキーワード。別名にせよ。
コメント2件

720
デフォルトの名無しさん[]   投稿日:2016/12/22 13:56:28  ID:duhm3nbB.net(12)
>719
すみません 適当な名前にしてみたところ出来ませんでした。

Expression:vector iterator not incrementable

だそうですが,どうしてでしょうか?
コメント2件

721
デフォルトの名無しさん[sage]   投稿日:2016/12/22 14:29:58  ID:oqG6b75c.net(12)
>718
バイナリソートか
vectorならヒープソート使った方が良い希ガス
コメント2件

722
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/22 14:35:06  ID:rnqjScPf.net(4)
>720
ideoneに上げろ。
コメント4件

723
デフォルトの名無しさん[]   投稿日:2016/12/22 14:49:04  ID:/ytrOsGa.net(2)
死ぬほど効率悪いな
コメント2件

724
デフォルトの名無しさん[]   投稿日:2016/12/22 15:08:00  ID:duhm3nbB.net(12)
>721
エラーが出ずにこの順に追加できるなら何でもいいです

>722
少しやってみます.

>723
どう改良すればよいですか?

725
デフォルトの名無しさん[]   投稿日:2016/12/22 15:16:58  ID:duhm3nbB.net(12)
>722
これで上げ方あってますでしょうか?
上げる用に多少変えましたが,こんな感じです.

http://ideone.com/AoWC3A

726
デフォルトの名無しさん[]   投稿日:2016/12/22 15:28:35  ID:V2qxRM4o.net(6)
rand()%0にならないほうがいい
コメント2件

727
デフォルトの名無しさん[]   投稿日:2016/12/22 15:38:54  ID:duhm3nbB.net(12)
>726
ご指摘ありがとうございます,その通りでした.
修正してみましたが,まだ上手くいきませんでした.
vectorがおかしいみたいです
コメント2件

728
デフォルトの名無しさん[]   投稿日:2016/12/22 15:45:54  ID:V2qxRM4o.net(6)
insertするときにkの値がvectorのサイズより大きくなってるよ
コメント2件

729
デフォルトの名無しさん[sage]   投稿日:2016/12/22 15:47:33  ID:k8IxKIg+.net(2)
>727
基本的にオリジナルのコードを尊重

#include <iostream>
#include <vector>
#include <stdio.h>
#include <cstdlib>
using namespace std;
struct Point{
int x, y;
};
int main() {
vector<Point> points;
for (int i = 0; i < 100; i++) {
Point pt = { rand() % (i + 1), 0 };
if (points.size() < 1) {
points.push_back(pt);
continue;
}
for (auto it = points.begin(); it != points.end(); ++it) {
if (pt.x < it->x) {points.insert(it, pt); break;}
else if (it + 1 == points.end()) {points.push_back(pt); break;}
}
}
for (int i = 0; i < points.size(); i++) {
cout << points[i].x << endl;
}
return 0;
}
コメント2件

730
デフォルトの名無しさん[]   投稿日:2016/12/22 15:52:39  ID:duhm3nbB.net(12)
>728 >729
できました.
insertしたあとにbreakしないといけなかったんですね.
無事に解決しました,ありがとうございました.

731
デフォルトの名無しさん[]   投稿日:2016/12/22 15:53:09  ID:V2qxRM4o.net(6)
pushしたあとbreakすればいいんじゃね

732
デフォルトの名無しさん[sage]   投稿日:2016/12/22 16:05:21  ID:oqG6b75c.net(12)
http://ideone.com/zKEbJr
y座標はなにに使うんだ??

733
デフォルトの名無しさん[sage]   投稿日:2016/12/22 16:26:05  ID:oqG6b75c.net(12)
http://ideone.com/iJulZX
順列乱さないで追加ならこんな感じなりかのう

734
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:11:12  ID:oJ9BUBiV.net(2)
なんかすごい盛り上がってるね
どうしたの?

735
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:25:12  ID:oqG6b75c.net(12)
http://ideone.com/LYqoaT
lower_boundも昔の扱いだと値が一致しない場合、end返すんだっけな?
自分、昔自作したinsert_posっての使ってやってみるとこんな感じ…
quick_sortの位置返し版みたいなやつ
コメント2件

736
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:32:34  ID:E3eibBgy.net(6)
>735
beginのときもあるんじゃない?
コメント2件

737
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:42:59  ID:oqG6b75c.net(12)
なんかね、値が一致しない場合、ココら辺りぁゃιぃんだよね
次の反復子返すライブラリとend返すやつとまたはbeginなのか?
コメント4件

738
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:47:13  ID:E3eibBgy.net(6)
>737
つねに[begin, end)の中に該当物がある、と覚えておけばいいんじゃないか

739
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:57:02  ID:WpoSlvHb.net(2)
rendじゃないのか

740
デフォルトの名無しさん[sage]   投稿日:2016/12/22 17:59:55  ID:91Kua5tc.net(2)
>736
無いだろう

741
デフォルトの名無しさん[sage]   投稿日:2016/12/22 18:09:01  ID:E3eibBgy.net(6)
>737
間違えた
[lower, upper)の中

742
デフォルトの名無しさん[sage]   投稿日:2016/12/22 18:47:02  ID:sqn1ckjA.net(2)
製作したexeが予定では
win10 win7の
32ビット環境・wow64環境・64ビット環境で使えるようにする予定だったのですが
32ビット環境以外では動作がぼこぼこでどういうところを注意すれば良いかアドバイス頂けないでしょうか...
sizeof演算子のようなバイト数で変わりそうなものは利用してないです

743
デフォルトの名無しさん[sage]   投稿日:2016/12/22 21:03:10  ID:YR5bk+a5.net(2)
Wow64でだめなら自分のコードじゃなくて糞ライブラリだろきっと

744
デフォルトの名無しさん[sage]   投稿日:2016/12/23 09:35:24  ID:ynZqqi62.net(2)
むしろビット数で変わりそうなものをきっちり使えよ。
size_tとかな。
LLP64だからポインタをlongに入れるとかお行儀悪いことをしたら死ぬ
コメント2件

745
デフォルトの名無しさん[sage]   投稿日:2016/12/23 12:27:57  ID:xkktLNTS.net(2)
wow64で単体で動く分には問題になったことないな。
64bitプロセスとかドライバとやりとりするときくらいかな。
何がぼこぼこなんだ。そもそもぼこぼこってのがどういう意味?

746
デフォルトの名無しさん[sage]   投稿日:2016/12/23 13:49:39  ID:2uBTaJD7.net(4)
>744
データのメモリレイアウト変わったら互換性が脅かされるだろドアホ
コメント2件

747
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/23 13:51:51  ID:3xdKhrkh.net(2)
<cstdint>使え。で終わり。

748
デフォルトの名無しさん[sage]   投稿日:2016/12/23 14:02:35  ID:2uBTaJD7.net(4)
int32_tが無い可能性について断わらんと刺されるぞおまえ

749
デフォルトの名無しさん[sage]   投稿日:2016/12/23 14:34:14  ID:gcrFo8Yk.net(2)
完全に互換性のあるコードを書こうと思うところからが既に間違いだろ

750
デフォルトの名無しさん[sage]   投稿日:2016/12/23 18:57:05  ID:XiISUE9C.net(2)
鉞もったおっさんが茂みからこちらを伺っている

751
デフォルトの名無しさん[sage]   投稿日:2016/12/23 19:21:12  ID:B95XUOMz.net(8)
動作がぼこぼこでってのは大まかに書きすぎたわ
会社の製品だから内部について詳しく書けないが概要を話すと
オブジェクトとして32bitと64bit用のdll読み込んで実行するexeを作成中だった
簡単に言えばそのdllのテストをするexe

32bit環境と64bit環境で違いはないと思っていたんだが
WaitForSingleObject使ったところでスレッドの処理順序が逆になったりとか微妙なさが生まれてる
逆ってのは

スレッドA B(Bがサブ)が存在しているときに
Aが待機してBが処理を投げるってのをすると
A待機→Bがイベント生成→B終了→A続行ってやりたかったのが
A待機→Bがイベント生成→A続行→B終了みたいな順序になってしまったっぽい
解析はまだしてないから確定ではないが月曜に備えて学んでおきたいんだ
コメント4件

752
デフォルトの名無しさん[sage]   投稿日:2016/12/23 19:29:54  ID:RIl3d4il.net(2)
うぇ?ソースが逝かれてんじゃないのか?
コメント2件

753
デフォルトの名無しさん[sage]   投稿日:2016/12/23 19:30:49  ID:B95XUOMz.net(8)
>752
と言うとビルドの時に壊れたってことだろうか?
コメント2件

754
デフォルトの名無しさん[sage]   投稿日:2016/12/23 19:52:00  ID:BpfBtVzR.net(2)
>753
もともとコードに問題があって不定な動作になってたのが、環境によって違う結果になったとか。
コメント2件

755
デフォルトの名無しさん[sage]   投稿日:2016/12/23 19:56:02  ID:B95XUOMz.net(8)
>754
元々のコードについては何ら問題はないはず
一応32bitの環境では意図通り動作してくれてるからさ
ただdllの中身の話と、あと32とwow64・64の違いの話で何かしら注意することがあるなら
もっと知りたいと思って恥を忍んできてる
sizeof演算子だったりsize_tだったりは使用してないから影響ないだろうと浅はかに考えていてこうなっている
コメント2件

756
デフォルトの名無しさん[sage]   投稿日:2016/12/23 20:01:29  ID:tydkaaKw.net(2)
>751
単にマルチスレッドを理解してないだけじゃ...
> A待機→Bがイベント生成→B終了→A続行ってやりたかったのが
そもそも今時のPCだとB終了とA続行がほんとに同時に動くこともあるし
コメント2件

757
デフォルトの名無しさん[sage]   投稿日:2016/12/23 20:32:03  ID:h0dHaDo6.net(2)
とりあえずここでも読んだら?
https://msdn.microsoft.com/ja-jp/library/bb427430(v=vs.85).aspx
自分が引っかかったのは、LPARAMの型が32bitと64bitで変わっていたことぐらいかな。
コメント2件

758
デフォルトの名無しさん[sage]   投稿日:2016/12/23 20:41:37  ID:2E3hGVLc.net(2)
>755
A待機→Bがイベント生成→B終了→A続行って動作を保証するには
Bの終了確認→A続行って作り込んでなきゃいけないが
そんなことせずにOS任せにしてたらそう動いてたというだけの話だろ
それが問題かどうかは知らないが
コメント4件

759
デフォルトの名無しさん[sage]   投稿日:2016/12/23 22:07:47  ID:hTM2VAPk.net(2)
GUIでも64bitの時だけバグが発生するコントロールとかあったはず
コメント2件

760
デフォルトの名無しさん[sage]   投稿日:2016/12/23 22:43:21  ID:B95XUOMz.net(8)
>758
WaitforSingleobgectでそれは保証されてると俺は考えていた
それとは別にだろうか

>756
>757
>759
少し読んでみるわ
速度が早すぎるとほぼ同時実行なんだな
何かで越えてしまったのだろうか
コメント4件

761
デフォルトの名無しさん[sage]   投稿日:2016/12/24 00:12:51  ID:pRsMHrqN.net(8)
>A待機→Bがイベント生成→B終了→A続行ってやりたかった

もうこの時点でUNKO確定
>758の助言もなんのその

762
デフォルトの名無しさん[sage]   投稿日:2016/12/24 00:34:42  ID:AuIvJJ/c.net(2)
>760
察するにBの終了コードでも欲しかったんだろうけど、
イベント待ちをするのではなく、
WaitForSingleObject(Bのスレッドハンドル,...)
のようにして、Bの終了待ちにしないとだめです。
コメント6件

763
デフォルトの名無しさん[sage]   投稿日:2016/12/24 00:43:38  ID:pRsMHrqN.net(8)
関係ないものの待ち合わせをしておいておかしいと気づかないアフォには無理
特に
『元々のコードについては何ら問題はないはず
一応32bitの環境では意図通り動作してくれてるからさ』
ここまで知能が低いと生きているのも辛いだろう

764
デフォルトの名無しさん[]   投稿日:2016/12/24 00:59:51  ID:13QAQt3w.net(4)
っていう自分では何の助言もしないゴミクズのレスはスルー推奨な

765
デフォルトの名無しさん[sage]   投稿日:2016/12/24 01:23:17  ID:c2QXRfZm.net(4)
>760
AがCreateEvent
Bにハンドルを渡してBの処理開始
AがWaitFor で待機
Bが終了するタイミングでSetEvent
AのWaitForの待機が終わる

普通はこれでおかしくならないと思うけど。
コメント8件

766
デフォルトの名無しさん[sage]   投稿日:2016/12/24 02:03:27  ID:Nwl7kpj0.net(2)
いつまでWINAPI使ってるんだ

767
デフォルトの名無しさん[sage]   投稿日:2016/12/24 05:48:56  ID:pRsMHrqN.net(8)
その普通では満足できない危篤な質問者に>762が折角ひとつの答えを示したというのに自分の普通を押し付ける>765
スレッドの終了を待つ必要がある例を示した>762のレスなどなんのその
コメント2件

768
デフォルトの名無しさん[sage]   投稿日:2016/12/24 07:28:55  ID:hL5gqOrj.net(8)
http://ideone.com/eLuYYZ
よし、どうにか20行以内に纏まったぞ

769
デフォルトの名無しさん[sage]   投稿日:2016/12/24 08:35:36  ID:8lcOa/+v.net(2)
>765
内部でやってるのこれなんだよね

>762>765の違い何かあるのだろうか
>767を見る限りでは何かあるような感じなのだが....
コメント2件

770
デフォルトの名無しさん[sage]   投稿日:2016/12/24 08:39:38  ID:dPbQS77J.net(6)
>765
> Bが終了するタイミングでSetEvent
こう書く人は

# Thread-A    Thread-B
---------------------------
1 WaitForSingleObject
2           SetEvent
3           ExitThread
4 GetEixtCodeThread

のようなコードを書いてそうでちょっと怖い
コメント2件

771
デフォルトの名無しさん[sage]   投稿日:2016/12/24 08:58:48  ID:c2QXRfZm.net(4)
>770
スレッドの終了コードを取りたいとはもともと言ってないのだから
スレッドの終了を待つ必要はないんじゃないのか?
スレッドの終了を待ちたいのならスレッドハンドルで待機する必要があるけど。
コメント2件

772
デフォルトの名無しさん[sage]   投稿日:2016/12/24 09:26:03  ID:jiDVWPIU.net(2)
スレッドの終了を待つ必要がないなら、>751
>A待機→Bがイベント生成→B終了→A続行ってやりたかったのが
>A待機→Bがイベント生成→A続行→B終了みたいな順序になってしまったっぽい
は、どちらの順序でも問題がないはず。

773
デフォルトの名無しさん[sage]   投稿日:2016/12/24 10:00:21  ID:hL5gqOrj.net(8)
beginthreadexを待ち無し(create suspended)でやっちゃっているオチとかないよな
コメント2件

774
デフォルトの名無しさん[sage]   投稿日:2016/12/24 10:11:57  ID:dPbQS77J.net(6)
>771
終了コードの取得は単なる例
言いたいのは
> Bが終了するタイミングでSetEvent
なんて書いちゃダメって話
終了と SetEvent は同時にはできない
なので SetEvent とスレッドの終了の間には必ず隙間が生じる
その隙間に他のスレッドが動作しておかしくなる
って言うのはマルチスレッドに慣れてない人がよく陥るミスの一つ

775
デフォルトの名無しさん[sage]   投稿日:2016/12/24 10:18:42  ID:pRsMHrqN.net(8)
今日は健常者が二人もいるな
それに引き替え>769の日本語も読めない>773は一体…
『内部でやってるのこれなんだよね』

ここはひとつ、スレッドの終了コードにする予定だった値を代わりに独自の変数に入れてからSetEventする方式をすすめるべきではないだろうか
コメント2件

776
デフォルトの名無しさん[sage]   投稿日:2016/12/24 10:34:27  ID:hL5gqOrj.net(8)
>775
スレッド作成時のことを言っているんだが
状況もすんなり理解出来ないほど堅物なの?
コメント2件

777
デフォルトの名無しさん[]   投稿日:2016/12/24 10:40:23  ID:13QAQt3w.net(4)
>776
触るなよ

778
デフォルトの名無しさん[sage]   投稿日:2016/12/24 11:15:46  ID:dPbQS77J.net(6)
この流れでいきなりスレッド作成時云々とか言い出す奴 w

779
デフォルトの名無しさん[sage]   投稿日:2016/12/24 11:25:36  ID:hL5gqOrj.net(8)
おれのエスパーがざわついただけだから
おまいらなんの解決策も提示できていない癖に口だけは達者だな

780
デフォルトの名無しさん[sage]   投稿日:2016/12/24 11:46:30  ID:A+UuIzca.net(2)
ID:hL5gqOrj以外は解決策提示してるけど
どんだけ嘘つきなの

781
デフォルトの名無しさん[sage]   投稿日:2016/12/25 10:32:25  ID:0PY0aCVg.net(4)
class B{ virtual void func(const B& o)=0;}
class D1 : public B{void func(const B& o);};
class D2 : public B{void func(const B& o);};
...
class Dn : public B{void func(const B& o);}:

funcはDiとDjの組み合わせで変化する関数ですが
各Diクラスのfuncを実装する場合
DiクラスでD0~Dnに対するfunc_jを定義
Diクラスのfuncの実装でdynamic_castを使い?func_jに誘導?

なんか筋が悪い気がしますが、他にやり方ありますか?
コメント10件

782
デフォルトの名無しさん[sage]   投稿日:2016/12/25 10:55:52  ID:gzohGyN7.net(4)
>781
dynamicしなくてもDj::funcで呼び出せるやろ

783
デフォルトの名無しさん[sage]   投稿日:2016/12/25 10:59:07  ID:0PY0aCVg.net(4)
すると基底クラスに全てのDiに対するvirtual func_iが必要な気がしますね

784
デフォルトの名無しさん[sage]   投稿日:2016/12/25 11:00:28  ID:gzohGyN7.net(4)
>781
ていうか継承した関数を後継でも使用する場合はprotectedにしておかないとそのままでは呼び出せんぞ

785
デフォルトの名無しさん[sage]   投稿日:2016/12/25 11:28:39  ID:kHsO0S5C.net(6)
visitorかな

786
デフォルトの名無しさん[sage]   投稿日:2016/12/25 11:29:58  ID:Lu3Vvdec.net(6)
C言語を勉強せずにC++を勉強しても理解できるものでしょうか?
コメント6件

787
デフォルトの名無しさん[sage]   投稿日:2016/12/25 11:44:37  ID:kHsO0S5C.net(6)

788
デフォルトの名無しさん[sage]   投稿日:2016/12/25 11:45:13  ID:kHsO0S5C.net(6)

789
デフォルトの名無しさん[]   投稿日:2016/12/25 11:58:11  ID:crG++i4M.net(4)

790
デフォルトの名無しさん[sage]   投稿日:2016/12/25 12:12:43  ID:dmtrl+ZZ.net(2)
>781
> funcはDiとDjの組み合わせで変化する関数ですが
どう変化するのかを書かないとなんとも

791
デフォルトの名無しさん[sage]   投稿日:2016/12/25 12:31:52  ID:hxH29S3q.net(2)
>781
「ダブルディスパッチ」でググると幸せになるかも
コメント2件

792
デフォルトの名無しさん[sage]   投稿日:2016/12/25 12:38:31  ID:6QEq7FnE.net(2)
>786
C++は全く思想が異なる言語がC言語の振りをしている。
という指摘が一番合っているかと。少し前のMSDNでも
テンプレート使ってprintf実装するなんて話があったぐらい。

793
デフォルトの名無しさん[sage]   投稿日:2016/12/25 13:33:20  ID:S3W4YDfq.net(6)
>746
もはや流れと違ってるからツッコむのもアホらしいが、
windowsなら32bitと64bitでDLLのバイナリ互換がないから
データのメモリレイアウトが変わったところで何ら問題がない。
ファイルやパイプを介して結合するなら、エンディアン含めて
環境に依存しないシリアライズを考えるだけ。
データのメモリレイアウトが変わって困るようなプログラムが糞だろw

794
デフォルトの名無しさん[sage]   投稿日:2016/12/25 13:59:08  ID:d1z2kMp7.net(2)
>791
むしろ不幸になるような気がする

795
デフォルトの名無しさん[]   投稿日:2016/12/25 14:26:29  ID:D6Y6Gc11.net(2)
>786
うん、できる。
俺でもできたんだから
みんな大丈夫なはず。

796
デフォルトの名無しさん[sage]   投稿日:2016/12/25 15:08:55  ID:SibbJTGE.net(2)
>786
むしろ理解しやすいかも

797
デフォルトの名無しさん[]   投稿日:2016/12/25 15:13:01  ID:crG++i4M.net(4)
C++はCよりコンパイル時の型チェックが厳しいから、初心者にはC++の方が便利だと思う。
実行時に意図しない動作されるよりは、コンパイルエラーになった方がはるかに楽だから。

798
デフォルトの名無しさん[sage]   投稿日:2016/12/25 17:13:02  ID:Lu3Vvdec.net(6)
ありがとうございます。
では、このまま勧めて勉強していきたいと思います。
コメント2件

799
デフォルトの名無しさん[sage]   投稿日:2016/12/25 18:17:49  ID:S3W4YDfq.net(6)
>798
他人の話かよ
コメント2件

800
デフォルトの名無しさん[sage]   投稿日:2016/12/25 19:09:35  ID:Lu3Vvdec.net(6)
>799
グループ内での話です。
すいません。

801
デフォルトの名無しさん[sage]   投稿日:2016/12/25 19:42:55  ID:S3W4YDfq.net(6)
えーっと、ツッコまれた意味わかってんのかな…

802
デフォルトの名無しさん[]   投稿日:2016/12/26 05:51:22  ID:HXwuwdhI.net(2)
「進めて」を「勧めて」に誤変換しただけだろ

803
デフォルトの名無しさん[sage]   投稿日:2016/12/26 06:36:04  ID:lGaHGaRq.net(2)
グループ学習なら「勧めて」でも辻褄は合ってる、かも。

804
デフォルトの名無しさん[]   投稿日:2016/12/26 14:44:41  ID:bkz3PoYD.net(8)
こんな感じでソートしてるんですが滅茶苦茶遅いです…
要素たった二つなのに激遅です… なんででしょうか??

class A{ int a; };
class B : public A{ int t; };
struct g {
bool operator() (const B* &p1, const B* &p2) const {
return(p1->a > p2->a);
}
};
std::list<B*> b_list;
B *p1 = new B(); p1->a = 0;
B *p2 = new B(); p2->a = 1;
b_list.push_back(p1);
b_list.push_back(p2);
b_list.sort(g ());
コメント2件

805
デフォルトの名無しさん[]   投稿日:2016/12/26 15:47:38  ID:B60orki6.net(4)
>804
コンパイルが通らない。エラーログを見落としていて、最後にビルド成功した古い実行バイナリの挙動を見ているだけなのでは?
コメント2件

806
デフォルトの名無しさん[sage]   投稿日:2016/12/26 16:24:18  ID:bkz3PoYD.net(8)
>805
いやちょっと今環境が無いのと急いで書いたので
ここではコンパイル通らないコードが含まれてるかもしれないんですが
実際には通ってるんです…
ちょっとわかりにくくてすみません。
コメント2件

807
デフォルトの名無しさん[sage]   投稿日:2016/12/26 16:58:02  ID:1PwuyQJn.net(2)
一見遅そうには見えない
コメント2件

808
デフォルトの名無しさん[sage]   投稿日:2016/12/26 17:12:30  ID:0UQS5t27.net(2)
環境依存かと
Wandbox等で確認してみては
コメント2件

809
デフォルトの名無しさん[]   投稿日:2016/12/26 17:15:43  ID:B60orki6.net(4)
>806
Windows10では最近のアップデートで、アクセス違反が発生した時にエラーダイアログが出ずに裏でエラーレポート作成アプリが走るようになっている。
アプリがクラッシュしててOSによるダンプデータ収集に時間かかっているのでは?
コメント2件

810
デフォルトの名無しさん[sage]   投稿日:2016/12/26 17:16:12  ID:bkz3PoYD.net(8)
>807
>808
そういえば昔、Pentiumマシンで実行した時は遅くなかったような気が…
ありがとうございます。もうちょっと調査してみます!

811
デフォルトの名無しさん[sage]   投稿日:2016/12/26 17:17:16  ID:bkz3PoYD.net(8)
>809
なるほどです。その辺もしらべてみます!

812
デフォルトの名無しさん[sage]   投稿日:2016/12/26 21:12:17  ID:wb4zf1kz.net(4)
listってチェーンリンカーだから遅いのかね

813
デフォルトの名無しさん[sage]   投稿日:2016/12/26 22:20:10  ID:K9pbdry/.net(2)
>要素たった二つなのに激遅です
 ↓
>listってチェーンリンカーだから遅いのかね

リテラシーが足りないのではないだろうか
コメント2件

814
デフォルトの名無しさん[sage]   投稿日:2016/12/26 23:52:43  ID:wb4zf1kz.net(4)
listの感想を述べたまでだしなぜ2つの違う物事を無理矢理結び付けようとするのかね?リテラシーに欠けるね

815
デフォルトの名無しさん[sage]   投稿日:2016/12/27 02:32:57  ID:SQsOUYP2.net(2)
プロレスやめろ

816
デフォルトの名無しさん[sage]   投稿日:2016/12/27 08:36:45  ID:CVPZfFKk.net(4)
いきなり自分の感想をこのスレに書くとかリテラシー以前の話かと
コメント2件

817
804[sage]   投稿日:2016/12/27 09:30:09  ID:REz3izgi.net(2)
大変ご迷惑をおかけしました!
newとdelete演算子を定義し直してメモリ状態をチェックするようにしてたのですが
それが原因でした!!自分のプログラムのせいでした!
実際には要素二つをループの中でずっとソートしてたので
ソート中にSTL(sortメソッド)が内部でnewとdeleteを繰り返してたのが原因だったようです。
コメント2件

818
デフォルトの名無しさん[]   投稿日:2016/12/27 09:49:38  ID:mf9uACo2.net(2)
>817
純粋な疑問なんだけどさ、なんでメモリ状態の確認に既存のツール使わないの?
コメント2件

819
デフォルトの名無しさん[sage]   投稿日:2016/12/27 09:55:30  ID:ooIzE4iM.net(4)
>816
おまえ今感想書いているじゃねぇかよハゲ
コメント2件

820
デフォルトの名無しさん[sage]   投稿日:2016/12/27 10:17:24  ID:sjoi84j7.net(2)
64bit32bitWow64で質問してた人です
解析していったら読み込んでるdllの方に不具合が見つかりました
ご意見ありがとうございました

821
デフォルトの名無しさん[sage]   投稿日:2016/12/27 12:43:01  ID:CVPZfFKk.net(4)
>819
どう見たら感想に見えるんだよ...
それこそリテラシー無さすぎやろ w
コメント4件

822
デフォルトの名無しさん[sage]   投稿日:2016/12/27 14:10:07  ID:3ZgUrie8.net(2)
プロレスやめろ

823
デフォルトの名無しさん[sage]   投稿日:2016/12/27 17:18:42  ID:B94R3vH/.net(2)
ゼイリブか

824
デフォルトの名無しさん[sage]   投稿日:2016/12/27 19:56:42  ID:vDOdsba4.net(2)
>821
会話の流れ無視していきなりlistの感想述べるバカに構わないで
コメント4件

825
デフォルトの名無しさん[sage]   投稿日:2016/12/27 20:44:49  ID:ooIzE4iM.net(4)
>824
ID変えて自演してんじゃねーよハゲ

826
デフォルトの名無しさん[sage]   投稿日:2016/12/27 21:19:53  ID:bExJ5BFF.net(2)
なんでも自演に見えるとかほとんど病気だな
コメント2件

827
デフォルトの名無しさん[sage]   投稿日:2016/12/27 21:41:32  ID:taDSxYLE.net(2)
別に自演してるつもりはないし >813=>824=俺 は>821ではない

>826
統合失調症になると何でも自演に見えることがあるらしい
でも不治の病だとか

828
デフォルトの名無しさん[sage]   投稿日:2016/12/27 22:22:25  ID:70y60g+7.net(2)
http://i.imgur.com/8urPI1X.png
たとえば、C2143のエラーに対して「こういうミスによるエラーの可能性が多い」みたいな感じの文章を
追加で表示(出力?)するようにしたいのですが、エラーメッセージを編集することは可能でしょうか?

829
デフォルトの名無しさん[sage]   投稿日:2016/12/28 01:12:00  ID:ETTH3dv3.net(2)
>818
どんな環境でもログに残せるようにしてました。
コメント2件

830
デフォルトの名無しさん[]   投稿日:2016/12/28 04:00:48  ID:yWrP/m5t.net(2)
>829
考え方が俺と逆だなぁ

831
デフォルトの名無しさん[]   投稿日:2016/12/28 11:03:34  ID:J8k3KBrD.net(2)
どんな環境でも動かせるようにしてたら強力なメモリエラーチェックツールのある環境でテストしたらいいよね。なんでわざわざ貧弱なものを再発明してまで特定の環境上で動かしたがるのか解らない

832
デフォルトの名無しさん[]   投稿日:2016/12/28 12:12:38  ID:1k+b+5LA.net(2)
単体テストで完璧に押さえておくべきことを
結合テスト以後に持ち越してるのかなあ

833
デフォルトの名無しさん[sage]   投稿日:2016/12/28 16:48:27  ID:mX+MonYx.net(2)
C++で依存型はどうやるの?
コメント2件

834
デフォルトの名無しさん[sage]   投稿日:2016/12/28 18:05:01  ID:Pde3P7vx.net(2)
ソフトウェア開発企業の方法論をさも普遍的であるかのように振りかざされても…

835
デフォルトの名無しさん[sage]   投稿日:2016/12/28 19:01:21  ID:N788bEQH.net(2)
まったくだ。

836
デフォルトの名無しさん[sage]   投稿日:2016/12/29 14:33:44  ID:Tbw9F1U5.net(2)
>833
まず君の「依存型をやる」の定義を述べたまへ

837
デフォルトの名無しさん[sage]   投稿日:2016/12/29 15:00:27  ID:B8IUc9rj.net(8)
kill dependent type.

838
デフォルトの名無しさん[]   投稿日:2016/12/29 15:39:46  ID:QycqsppM.net(2)
C++の建設的な話題はないの?

839
デフォルトの名無しさん[]   投稿日:2016/12/29 16:34:38  ID:B8IUc9rj.net(8)
C++から使える正規表現ライブラリで一番速いのってどれなんだろう?
最近4年以内測定結果ないかな?
コメント2件

840
デフォルトの名無しさん[sage]   投稿日:2016/12/29 16:47:17  ID:bUdbWaJH.net(2)
>839
stlじゃ不満?
コメント2件

841
デフォルトの名無しさん[]   投稿日:2016/12/29 18:29:34  ID:B8IUc9rj.net(8)
>840
regexがC++標準機能になって数年が経ち、非stdな正規表現ライブラリの存在意義について現状把握したくなった次第

842
デフォルトの名無しさん[sage]   投稿日:2016/12/29 19:25:53  ID:AiXb9Xql.net(2)
正規表現使ったら競プロでTLEした。std::regex死ね

843
デフォルトの名無しさん[sage]   投稿日:2016/12/29 19:39:41  ID:4SBHJX0Y.net(2)
裏インターネット#1085

844
デフォルトの名無しさん[sage]   投稿日:2016/12/29 20:27:08  ID:mmdDlTxQ.net(4)
正規表現ライブラリは鬼車/鬼雲、RE2、PCRE-JITが混戦状態じゃないのかな
ライブラリ以外ではGNU egrepが最速なのは相変わらずだと思うけど
コメント2件

845
デフォルトの名無しさん[]   投稿日:2016/12/29 20:37:24  ID:B8IUc9rj.net(8)
>844
なるほど。egrepってことは、事実上PCRE。
windows環境に関して言えば、pcre2を使ったサンプル実行ファイルである pcre2grep は、 msys の grep -E よりさらに速いので色々謎。
コメント2件

846
デフォルトの名無しさん[sage]   投稿日:2016/12/29 20:46:06  ID:mmdDlTxQ.net(4)
>845
egrepはPCREじゃない自前の方のつもりで書いた

847
デフォルトの名無しさん[]   投稿日:2016/12/30 06:49:45  ID:0ZFj7vnK.net(4)
ソースコード整形プログラム AStyle を使ってる人、どのくらいいるかわからないが最新版が来たようなので、一応貼っとくわ。

Artistic Style(AStyle) 2.06
https://sourceforge.net/projects/astyle/
2016-12-27

848
デフォルトの名無しさん[]   投稿日:2016/12/30 07:26:12  ID:0ZFj7vnK.net(4)
今となっては、boostの正規表現ライブラリ boost::regexのstd::regexに対する優位性は、文字クラスに"unicode"を使えることぐらいかねぇ。

849
デフォルトの名無しさん[sage]   投稿日:2016/12/30 07:54:52  ID:l5WpNL3H.net(2)
この文字はUnicodeだ、みたいな識別があるのですか

850
デフォルトの名無しさん[]   投稿日:2016/12/30 08:40:14  ID:n0+bjvYh.net(2)
UCS-2相当の物をUnicodeと言ってるなら死語(UCS-2も)になって10年経つんだからそろそろ頭の中更新してほしいよね

851
デフォルトの名無しさん[sage]   投稿日:2016/12/30 20:39:13  ID:F4cb6AGO.net(2)
Unicode規格によるとUCS-2が死語になったのはISO/IEC 10646:2011からとあるのだが
10年前に何があったのか

852
デフォルトの名無しさん[sage]   投稿日:2016/12/31 19:44:49  ID:1zLOHjMk.net(6)
正規表現って覚えておいた方が良いものかな?
コメント4件

853
デフォルトの名無しさん[sage]   投稿日:2016/12/31 19:55:54  ID:RP5GqFRc.net(2)
>852
テキストの一部からデータ取り出したりが楽になるから覚えていて損はない
そもそもそんなに難しいものでもないし
コメント2件

854
デフォルトの名無しさん[]   投稿日:2016/12/31 19:58:53  ID:bmD+g+A2.net(2)
>852
プログラム内で使うよりも、テキストエディタの機能や、コマンドラインのツールで使うことが多いかな。
ツールとして覚えておいて損はないと思う。
コメント2件

855
デフォルトの名無しさん[sage]   投稿日:2016/12/31 20:05:26  ID:1zLOHjMk.net(6)
>853
>854
全然学んでないから知識がないから学んでみるよ
データ整理が楽になるのかな

856
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/31 20:12:12  ID:JCMJkH4b.net(2)
例えば正規表現で
「(。|、)$」→「」と置き換えすれば、行末の句読点を取り除くことができる。
「(\d+|[0123456789]+)」→「【\1】」と置き換えすれば、数字の並びを【】で囲むことができる。
コメント2件

857
デフォルトの名無しさん[sage]   投稿日:2016/12/31 23:10:24  ID:1zLOHjMk.net(6)
>856
string型に入ってる奴にやるんだよね?
勉強の序列低いが早めにすべきなのかな
業務にいきそうだ

ちなみに正規表現を違う箇所に応用できたりする?
コメント2件

858
デフォルトの名無しさん[sage]   投稿日:2016/12/31 23:21:26  ID:Kmz/fYBF.net(2)
MDN, Ruby, Python とか、正規表現はどこにでも載っている

859
デフォルトの名無しさん[sage]   投稿日:2016/12/31 23:53:29  ID:dx9vbJE4.net(2)
>857
正規表現の入門にはここを勧めてる
http://qiita.com/jnchito/items/893c887fbf19e17d3ff9
検索して始めに出てくるサルにも〜は分かりにくかったが
こちらはステップが整理されてて二日ほどでかなり理解できるようになった
コメント2件

860
デフォルトの名無しさん[sage]   投稿日:2017/01/01 13:06:23  ID:/PcE0jFZ.net(2)
>入門にはここを勧めてる
匿名掲示板でいきなり自分語りし始める奴w
コメント2件

861
デフォルトの名無しさん[sage]   投稿日:2017/01/01 13:36:30  ID:YlDkqvBj.net(2)
>859
オッ 有難い

862
デフォルトの名無しさん[sage]   投稿日:2017/01/01 14:43:43  ID:t97nghu2.net(2)
>860
有用な情報が含まれてるなら、自分語りでも何でもいいよ。単なる茶々入れよりよほどいい。

863
デフォルトの名無しさん[sage]   投稿日:2017/01/01 14:54:44  ID:Z1rYB3lC.net(2)
正規表現使うと、入力の正当性チェックもできるよ
日付とかメールアドレスとか、桁数含めた数値チェックとか

864
デフォルトの名無しさん[sage]   投稿日:2017/01/01 15:51:28  ID:iPavsRR3.net(2)
プログラミング必修化というが、正規表現をリテラシーとして教えた方がいい
文系でも事務に使えるし

865
デフォルトの名無しさん[sage]   投稿日:2017/01/01 19:22:56  ID:3ABdABSG.net(2)
関数テンプレートのテンプレート引数がベースクラスを継承しているかのチェックをしようと
is_base_of を使った部分特殊化の方法を試したのですが、そもそも関数テンプレートは
部分特殊化できないことを知り困っています。
具体的なコードは以下ですが、こういう場合どうすればいいでしょうか?

http://ideone.com/5eUtRr

適合しないものは弾くような仕組みにしないとコンパイルエラーがドパーと出てきて大変なので・・・
コメント2件

866
デフォルトの名無しさん[sage]   投稿日:2017/01/01 19:35:56  ID:HLv5dR03.net(4)
正規表現になぜ「正規」=retular という語句が冠せられているかぐらいは、その手の教科書を読まないとね
いいのありませんか?
コメント2件

867
デフォルトの名無しさん[sage]   投稿日:2017/01/01 19:36:17  ID:HLv5dR03.net(4)
regular

868
デフォルトの名無しさん[sage]   投稿日:2017/01/01 19:52:26  ID:d6FH7xPK.net(2)
>865
その程度ならSFINAEで何とかなりそうだが部分特殊化したいならクラステンプレートを作って処理を任せるしかない
template<typename T, typename U>
struct unko_impl {
static int f(T , U ) {…}
};

template<…> struct unko_impl<…, …> {
特殊化
};

template<typename T, typename U>
int unko(T &t, U &&u) {
return unko_impl<T, U>::f( forward<T>(t), forward<U>(u) );
}
コメント2件

869
デフォルトの名無しさん[sage]   投稿日:2017/01/01 20:37:00  ID:H4wHe4cD.net(2)
非正規表現

870
デフォルトの名無しさん[sage]   投稿日:2017/01/01 21:31:53  ID:jsYYlNsD.net(2)
>866
計算理論の基礎
コメント2件

871
デフォルトの名無しさん[sage]   投稿日:2017/01/02 02:41:11  ID:cNm7joN7.net(4)
>868
ありがとうございます。SFINAEで何とかなるというのは、以下のoperatorについて
SFINAEを使うという意味でしょうか?例をいただけると助かります

template <class T>
ostream& operator << (ostream& os, const Base<T>& base)
コメント2件

872
デフォルトの名無しさん[sage]   投稿日:2017/01/02 09:59:06  ID:gBF+qdso.net(2)
あけおめこ!

873
デフォルトの名無しさん[sage]   投稿日:2017/01/02 15:21:19  ID:cNm7joN7.net(4)
すいません>871は無視してください
自分で考えてみます

874
デフォルトの名無しさん[sage]   投稿日:2017/01/02 16:56:07  ID:b/RASLC2.net(2)
>870
amazon リンクで頼む

875
デフォルトの名無しさん[sage]   投稿日:2017/01/04 00:07:09  ID:wOLmnoYC.net(2)
VC++の正規表現って全角数字が\dにヒットするけどこれって仕様通りなの?
コメント2件

876
デフォルトの名無しさん[]   投稿日:2017/01/04 00:24:46  ID:H7YeB4ee.net(2)
>875
おそらく仕様通り
http://www.cplusplus.com/reference/regex/regex_traits/imbue/
デフォルトはグローバルに設定されてるlocaleに従う

877
デフォルトの名無しさん[sage]   投稿日:2017/01/04 03:30:01  ID:rabvmYP6.net(2)
江添はなんて言ってる?

878
デフォルトの名無しさん[sage]   投稿日:2017/01/04 09:30:33  ID:oS0JsegY.net(2)
質問ではない

879
デフォルトの名無しさん[sage]   投稿日:2017/01/04 09:53:11  ID:4nJc+6+v.net(2)
ちょいちょい江添言うなこいつ
ちゃんと聞いて来いよwwww

880
デフォルトの名無しさん[]   投稿日:2017/01/04 09:57:08  ID:zzeNA6vA.net(4)
江添は一般コメント受け付けてるんだから直接聞けばいいのにな
くだらん個別質問すぎて相手されんのだろうけど

881
デフォルトの名無しさん[sage]   投稿日:2017/01/04 16:54:18  ID:Gyk6VmEd.net(2)
「江添はなんて言ってる?」は一種の言葉遊びじゃないかな。
リズムネタとか合いの手みたいな感じ。
もちろん「江添さんの文書に載ってるんじゃね?」という
気持ちでの書き込みもあるだろうけど。

こんな場で、ある種の最高権威として引き合いに出されたり
いじられたりしてるのをご当人は知ってるのかな、どう思ってるのかな?
(という流れに乗せて合いの手を入れます)

882
デフォルトの名無しさん[]   投稿日:2017/01/04 19:39:15  ID:zzeNA6vA.net(4)
最高権威は禿だよ
江添は禿をこき下ろしてるけど
江添に禿と同じことをする器はない

883
デフォルトの名無しさん[sage]   投稿日:2017/01/04 20:02:57  ID:hbEVCuwD.net(2)
んなこたあない

884
デフォルトの名無しさん[sage]   投稿日:2017/01/04 20:11:11  ID:xue+qv3N.net(2)
おっと江添の悪口はそこまでだ

885
デフォルトの名無しさん[sage]   投稿日:2017/01/04 20:36:05  ID:EEzN430Y.net(4)
江添はAskを引退したと噂で聞いた

886
デフォルトの名無しさん[sage]   投稿日:2017/01/04 21:02:29  ID:mtnpTOaF.net(2)
意味不明なことばかり聞くからAskはとっくに止めてるぞ

887
デフォルトの名無しさん[sage]   投稿日:2017/01/04 23:00:03  ID:6PKdRVzk.net(2)
日本で、C++をやる以上、ドワンゴ江添を避けて通れないw
コメント1件

888
デフォルトの名無しさん[sage]   投稿日:2017/01/04 23:54:30  ID:EEzN430Y.net(4)
ドワンゴ江添 ← 芸人っぽい

889
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:03:49  ID:Hj6igpz/.net(26)
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ:
C++相談室 part127 C++相談室 part127

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 【初心者歓迎】C/C++室 Ver.100【環境依存OK】

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

■ shared_ptr で 標準ライブラリのFILE構造体ポインタをラップしよう
class FILE_Ptr : public shared_ptr<FILE> {
 struct FILEDeleleter {
  void operator() (FILE* fp) const { if (fp != NULL) { fclose(fp); }}
 };
public:
 FILE_Ptr(FILE* fp = NULL) : shared_ptr<FILE>(fp, FILEDeleleter()) {}
 operator FILE* () { return get(); }
 template<typename T> bool operator == (const T& obj) const { return get() == reinterpret_cast<FILE*>(obj); }
 template<typename T> bool operator != (const T& obj) const { return get() != reinterpret_cast<FILE*>(obj); }
};

890
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:28:48  ID:1WWISKCd.net(2)
2

891
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:53:39  ID:oNxTNf5q.net(2)
前スレでSTLなんて使わない信用できないみたいな恐ろしいこと言ってるアホがいたが、そういう人って生配列、生ポ、for、whileで暮らしてるのかな
正気の沙汰ではない

892
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:59:26  ID:wer2Kop4.net(14)
C++の規格書に書かれているということはC++の一部なのであってそれを避けるというのはC++の機能の半分を使わないでいるということだ

893
デフォルトの名無しさん[sage]   投稿日:2016/11/27 00:59:39  ID:wlJLbi6+.net(2)
STLつかうと一気に実行ファイルサイズが10倍に?!

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

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

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

#include <stdafx.h>
後死ね。

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

---- テンプレ ここまで ----

894
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:08:13  ID:42UX/YwI.net(4)
STLが時代遅れとかほざいてたな
モロにスタンダードで常に進化を続けているというのにな

895
デフォルトの名無しさん[]   投稿日:2016/11/27 01:18:02  ID:0maVDSwR.net(4)
>3, >6
自社でSTLやboostより素晴らしいのを作っているじゃないか
日本企業のIT技術力は圧倒的世界一で、3流の外国製のライブラリ等は使用に耐えないって企業が多いから
そうなるんだろ

896
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:19:33  ID:MAcCGYLn.net(8)
STLは使ったことがないな
標準ライブラリのstd::vectorはよく使う
コメント1件

897
デフォルトの名無しさん[sage]   投稿日:2016/11/27 01:43:32  ID:wer2Kop4.net(14)
そうだな
コメント1件

898
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:11:39  ID:4hBpEO9s.net(2)
実際問題、コンテナクラスに汎用的な性能を求めることが間違ってる。
本当に速度が欲しい場合には選ばん。
コメント1件

899
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:16:56  ID:0maVDSwR.net(4)
>10
本当に速度が欲しい場合はコンテナを自作しているんだろな
コメント1件

900
デフォルトの名無しさん[sage]   投稿日:2016/11/27 02:47:34  ID:wer2Kop4.net(14)
という奴が実際にvectorに対して明確に優位性のあるコンテナを作れたところを見たことがない
どうせそういった研究に取り組んだこともなく口だけなんだろうな

901
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:11:56  ID:Hj6igpz/.net(26)
STLはこれ以上速くなりようがないくらいに簡素な作りだと思いこんでいる私には、STLを上回る速度のコンテナ書く自信は全くないな。
私は圧倒的にスキルが不足しているから、要素をコピースワップするコストはついついshared_ptr使って対処してしまう。コンテナを自作できない無能な自分が嫌になるよ。
コメント1件

902
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:21:22  ID:411Nbo29.net(2)
使い方次第じゃないかなぁ
極端な話、vectorで毎回先頭に挿入するような使い方してたら遅くなるよね
どういうのか把握して適切なコンテナ選べるならわざわざ自作する必要はないかと
コメント1件

903
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:30:23  ID:Hj6igpz/.net(26)
私の場合、ついつい std::vector<T> ではなく、std::vector<shared_ptr<T>> を使って済ませてしまうので、いつまでたってもコンテナを自作するスキルが上がらないよ。
「ぼくのかんがえたさいきょうのこんてな」を自作する精神力がまだまだ足りないようだ。反省。

904
デフォルトの名無しさん[sage]   投稿日:2016/11/27 03:33:36  ID:wer2Kop4.net(14)
C++はコンテナの種類だけなら無駄に多いからな
コメント1件

905
デフォルトの名無しさん[]   投稿日:2016/11/27 06:48:20  ID:pUctI5IC.net(4)
dequeとvectorは片方あればいいとかか

906
デフォルトの名無しさん[sage]   投稿日:2016/11/27 09:24:27  ID:SqUFXM7z.net(6)
>11
vectorはただのガワなんだから、速度が必要ならallocatorだけ自作すりゃいいだろ
コメント1件

907
デフォルトの名無しさん[]   投稿日:2016/11/27 09:29:56  ID:WW/pNH6a.net(4)
連続性が保証できないから。
コメント2件

908
デフォルトの名無しさん[]   投稿日:2016/11/27 09:53:11  ID:Hj6igpz/.net(26)
任天堂の倒し方知ってる系の人なら、当然のようにSTLを否定するだろう。
私は任天堂の倒し方知らないので、こういう人たちを心の底から尊敬する。
コメント1件

909
デフォルトの名無しさん[sage]   投稿日:2016/11/27 10:42:14  ID:P/uIEXU4.net(8)
>20
なぜそこまでSTLを否定したいのかよこ分からないなあ。
多くのケースで多くの人が使うのに必要十分な程度の機能、性能は持ってる訳だし、標準ライブラリとしては妥当な仕様かと思う。
これで不足な場合だけ自作のコンテナなりを考えればいいだけでしょ。

910
デフォルトの名無しさん[sage]   投稿日:2016/11/27 10:58:23  ID:Uyh6ikI3.net(2)
>8
何をいってるのか、意味不
コメント1件

911
デフォルトの名無しさん[]   投稿日:2016/11/27 11:06:06  ID:l9GcbBcF.net(2)
いつものあれだろ?
「標準仕様書中の表現として、STLあるいはstandard template libraryなどという言葉は一回も使用されていない」
って言う。

厳格にこの言いつけを守ってる人がいるんだよ…

912
デフォルトの名無しさん[]   投稿日:2016/11/27 11:26:05  ID:Hj6igpz/.net(26)
「STLのコンテナでは力不足」と言い切る優れたプログラマになりたいのだが、私はちっともそのレベルに到達できない。orz

913
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:37:32  ID:zdOfPVrj.net(2)
婆ちゃんがイオンのことを今でもジャスコというのを聞くとちょっとイラッとする
STLという単語をみると同じような気持ちになるが
老人に新しいことを覚えさせるのが難しいと知っている俺は
そしらぬ顔で静観することにしている

914
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:39:37  ID:wer2Kop4.net(14)
>19
また古代からタイムスリップしてきた人ですか?

915
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:44:52  ID:qE9zLQzg.net(2)
>24
それ、優れたプログラマじゃない可能性がたっぷりある。

916
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:48:02  ID:MAcCGYLn.net(8)
標準ライブラリは速くなる余地が無いわけではないな。
テンプレート特殊化を書いてやらないと解決出来ないときもある。
Visual C++の標準ライブラリが最近見直したら一部の処理が何十倍も速くなったと言っているくらいだ

917
デフォルトの名無しさん[sage]   投稿日:2016/11/27 11:56:08  ID:wer2Kop4.net(14)
そりゃ実装依存のところは多い
規格書に事細かに記されているわけではない
しかしそれはコンテナのような昔からあって仕様がシンプルなクラスのことでは無いだろう

918
デフォルトの名無しさん[]   投稿日:2016/11/27 12:10:55  ID:Hj6igpz/.net(26)
以下の文書によると、basic_string のパフォーマンスが改善され、std::vectorをオーバーホールとか。
マイクロソフトの連中は、このスレでSTLを否定する優秀な人のような英断ができず、いまだにSTLの保守をやってる。
このスレでSTLを否定する優秀な人を一本釣りしてマイクロソフトにスカウトすればいいのに、マイクロソフトは見る目がないな。

What's New for Visual C++ in Visual Studio 2017 RC
https://docs.microsoft.com/en-us/cpp/top/what-s-new-for-visual-cpp-in-vi...
コメント1件

919
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:12:18  ID:MAcCGYLn.net(8)
>29
>規格書に事細かに記されているわけではない

突然関係ないことを言い出してどうした?
コンテナー自作する必要が有ったと主張する人に対してその必要性が全く理解できないという人がいたので
可能性はを示唆しただけだが。
コメント2件

920
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:14:02  ID:LAFeCFqG.net(6)
algorithm系は使うもの使わないものがはっきりわかれない?
コメント1件

921
デフォルトの名無しさん[]   投稿日:2016/11/27 12:17:16  ID:Hj6igpz/.net(26)
このスレは何人も天才プログラマが書き込んでるんだな。
STLで十分と思ってしまうレベルの低い私は、己の無能さで嫌悪感に陥りそうだ。

922
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:17:28  ID:wer2Kop4.net(14)
>30
C++のベンダーをやっている以上保守は義務だろ
MS独自のMFCはあまりにもゴミだが
CMapを使おうと思ったらあまりにも低機能すぎてキーボード破壊しそうになった
コメント1件

923
デフォルトの名無しさん[sage]   投稿日:2016/11/27 12:28:42  ID:plVb52Pg.net(2)
>32
adjacent_differenceの悪口はよせ
コメント2件

924
デフォルトの名無しさん[]   投稿日:2016/11/27 12:41:27  ID:Hj6igpz/.net(26)
怠惰で無能な私は、bool で存在有無だけを返すストイックな binary_search() を使いこなせない。
ついつい、upper_bound()やlower_bound() を使ってしまう。
STLで事足りると思ってしまう自己暗示からどうしても抜け出せない。
このスレの天才プログラマーのようにSTLを捨てて「ぼくのかんがえたさいきょうのこんてな」に行くべきなのだが。

925
デフォルトの名無しさん[sage]   投稿日:2016/11/27 13:18:21  ID:+eKpaGRF.net(2)
STLはあくまで汎用的で問題が起こりにくい作りになっているから
プログラムの用途に合った特殊なコンテナってことなら
自作する意味はあるかもしれない
例えば要素を削除するときに前詰めしないコンテナ、とか
そのコンテナには、どこが「空き」になっているか、別途把握できるしくみが
必要だけど、それはそういう風に実装すればよいだけだし
要は、連続的なメモリに確保されるけど、歯抜けになることが許されるコンテナ
ただしそんなに速くならないだろうね
コメント1件

926
デフォルトの名無しさん[sage]   投稿日:2016/11/27 13:55:49  ID:eIL19TgX.net(2)
>1は無能
自分で書いておきながらワッチョイ付けられないわ
ウンコード貼り付けるわ

927
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:11:24  ID:LAFeCFqG.net(6)
>36
むしろequal_rangeしか使わない

928
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:12:23  ID:Hj6igpz/.net(26)
>38
全くその通り。無能。恥を知れって感じ。
コメント3件

929
デフォルトの名無しさん[sage]   投稿日:2016/11/27 14:50:05  ID:w634zOe4.net(2)
今時STLはないだろ

930
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:08:20  ID:P/uIEXU4.net(8)
>33
STLで十分と思うことは、別にレベルが低いとはならない。
STLで十分と思うことがレベルが低いというのは、レベルが低いと思う。

自分を卑下する書き込みをしつつ、高尚なこと考えている俺カッケーと酔いしれてないか?
コメント1件

931
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:26:29  ID:BLqqs723.net(2)
それは己ちゃうんかいw

932
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:55:56  ID:3Qbc/l9n.net(2)
>42
ド素人の背伸びなんだからほっといてやれよw
下手につつくと居付いちゃうぞ

933
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:56:46  ID:SqUFXM7z.net(6)
>37
それってlistじゃないの?
コメント1件

934
デフォルトの名無しさん[sage]   投稿日:2016/11/27 15:57:37  ID:SqUFXM7z.net(6)
>45
失礼連続前提ね

935
デフォルトの名無しさん[sage]   投稿日:2016/11/27 16:32:55  ID:42UX/YwI.net(4)
理解出来ないと時代遅れと言って反応を見ているんだろうが端から見ていて痛々しい限りだ

936
デフォルトの名無しさん[sage]   投稿日:2016/11/27 16:49:01  ID:2ZVZJ+KM.net(2)
STLが理解できない?
お前さんだけじゃねw+

937
デフォルトの名無しさん[sage]   投稿日:2016/11/27 17:08:21  ID:LAFeCFqG.net(6)
コンテナ、イテレータ、アルゴリズムの組合せ、という根っこにある考え方でまあ上手く行ってたんだけど、
今となってはちょっと古びた感じはするね。
<algorithm>のごちゃついた様を見るとそういうふうに思う。

938
デフォルトの名無しさん[]   投稿日:2016/11/27 18:02:33  ID:Hj6igpz/.net(26)
>42 のような面白い返答があったのでそろそろ真意を正直に書くと、
コンテナ自作派に憧れるていを取りつつコンテナ自作派をバカにしてただけだ。

「任天堂の倒し方知ってる」とか「ぼくのかんがえたさいきょうのこんてな」とか例えてる時点で
コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってたのだが、
本当にコンテナ自作派に憧れているとストレートに解釈した人が出てきて楽しかったわ。

>37
「空き」の定義は開発者が決めなければならない。
コンテナに突っ込むクラスに「空き」フラグを扱うメンバ変数を追加すればSTLコンテナ利用で解決することを
わざわざ車輪の再発明でコンテナまで自作する人をおだててバカにするのは実に楽しい。

939
デフォルトの名無しさん[sage]   投稿日:2016/11/27 18:11:22  ID:MAcCGYLn.net(8)
>コンテナ自作派をバカにしてると君らに察してもらえるだろうと思ってた

これは思った。気付かない奴はアスペ
コメント1件

940
デフォルトの名無しさん[]   投稿日:2016/11/27 19:37:37  ID:YEwu7XTV.net(2)
俺も諄いなーと思いつつ黙って見てたけど、ストーレートに解釈してるやつが居るのみてビックリしたのと同時に、こんなに純真な心で2chやってて大丈夫なのかと心配になったわ。
あと、だからこのスレよく荒れてるんだなぁと納得した。
コメント1件

941
デフォルトの名無しさん[sage]   投稿日:2016/11/27 19:49:28  ID:4JtqQJ1X.net(2)
ゲームとかなら、汎用性よりスピード命や小メモリとかで俺会社のSTLを作ってそうなきがするが
ゲーム制作会社とかではしているところはないのかな

>1 はなんでshared_ptrのFILE deleterを張っているんだ
C++ならFILEじゃなくfstreamだろって気がするが
コメント3件

942
デフォルトの名無しさん[]   投稿日:2016/11/27 20:14:35  ID:Hj6igpz/.net(26)
>53
あまりにも ID:Hj6igpz/ が無能すぎて fstream を使いこなせないからだよ。みなまで言わせんな恥ずかしい。
アホな ID:Hj6igpz/ は>1 のラッパークラス FILE_Ptr を使って以下のように稚拙なコードを書く傾向がある。
こんなことやってるからいつまでたっても ostream系を使いこなすスキルが育たない。ID:Hj6igpz/ は C++プログラマに向いてないよ。

 {
  FILE_Ptr fp = fopen("foo.log", "w");
  if (fp != NULL) {
   fprintf(fp, "1hello world\n");
   fputs("2howdy world\n", fp);
   fwrite("3hello world\n", 13, 1, fp);
  }
 }

943
デフォルトの名無しさん[]   投稿日:2016/11/27 20:42:29  ID:pUctI5IC.net(4)
fstreamはfstreamで20余年の付き合いを経てもいまだにイミフなとこあるし
コメント2件

944
デフォルトの名無しさん[sage]   投稿日:2016/11/27 20:47:34  ID:P/uIEXU4.net(8)
>50
お前さんの真意とやらはどうでもいいから、面倒くさいことせずに、初めからもっと直接的に意味のある議論をしてほしい。
ここまでの流れで唯一ためになったのは、>52のレスにあった「諄い」という漢字を知ったということだけだ。

945
デフォルトの名無しさん[sage]   投稿日:2016/11/27 20:49:47  ID:P/uIEXU4.net(8)
>53
ゲーム会社のことはよく知らないけど、そういうのはアロケータの自作でもしてるのかな。

946
デフォルトの名無しさん[]   投稿日:2016/11/27 21:04:15  ID:zEm283RN.net(2)
ゲームエンジン・アーキテクチャによると
コンテナを自作するのは普通らしい

947
デフォルトの名無しさん[sage]   投稿日:2016/11/27 21:13:33  ID:kJvliJ+f.net(2)
>54
それ以前に、FILE"Deleleter"ってわざとしているのか
それともdeleteのスペル知らないのか
deleteはC++のキーワードだよな
operator FILE* () はcons抜けだし

948
デフォルトの名無しさん[]   投稿日:2016/11/27 21:46:20  ID:Hj6igpz/.net(26)
>59
何しろ無能だからこんなもんだろう。生温かく見守ってやれ。

949
デフォルトの名無しさん[sage]   投稿日:2016/11/27 21:54:20  ID:IYfuOepr.net(2)
>53
有名なのだとEASTLでオープンソース化されてる

http://i-saint.hatenablog.com/entry/20101012/1286822888

https://github.com/electronicarts/EASTL

950
デフォルトの名無しさん[]   投稿日:2016/11/27 21:59:03  ID:WW/pNH6a.net(4)
ベンチ取ってみたらどうか。
僕の古典的PCしかもノートでも驚くほど速い。
意外と問題にならない程度の速度を持っているのではないか。
コメント1件

951
デフォルトの名無しさん[]   投稿日:2016/11/27 22:00:05  ID:Hj6igpz/.net(26)
>59
勉強する良い機会になった。ありがとう。
https://ja.wikipedia.org/wiki/Cons

952
デフォルトの名無しさん[sage]   投稿日:2016/11/28 00:27:42  ID:nFYh94sG.net(2)
type erasureのためだけにshared_ptrを持ち出さなければならないクソ言語

953
デフォルトの名無しさん[sage]   投稿日:2016/11/28 13:41:28  ID:VFe8unWC.net(2)
SSEのイントリンシック使うとき16バイト境界にアライン必須なんで
stlに入れるとき用にアロケータだけ自作したことはあるな(コンテナの型自体変わってしまうので不便だけど
EASTLは知らんかった、家帰ったら使ってみよう

954
デフォルトの名無しさん[]   投稿日:2016/11/28 17:31:28  ID:w/GpYaDf.net(10)
>61
docディレクトリの文書でEAの中の人がSTLについて熱く語っているのが好感を持てた。

955
デフォルトの名無しさん[]   投稿日:2016/11/28 21:08:56  ID:w/GpYaDf.net(10)
EASTL にベンチマークプログラム があったのでWindows10(x86)の Visual Studio 2017 RC でビルド&実行してみた。
以下は、そのベンチマークプログラム EASTLBenchmarks.exeの標準出力結果

****************************************************************************************
EASTL Benchmark test results
****************************************************************************************

EASTL version: 3.04.00
Platform: Windows on X86
Compiler: Microsoft Visual C++ compiler, version 1910
Allocator: PPMalloc::GeneralAllocator. Thread safety enabled.
Build: Full optimization. Inlining enabled.

Values are ticks and time to complete tests; smaller values are better.

Test VC++ Dinkumware EASTL Ratio Difference?
---------------------------------------------------------------------------------------------------------------------
algorithm/adj_find/vector<TestObject> | 699814 699.8 us | 913513 913.5 us | 0.77 -
algorithm/copy/vector<LargePOD> | 270367 270.4 us | 269001 269.0 us | 1.01
algorithm/copy/vector<uint32_t> | 8193 8.2 us | 5462 5.5 us | 1.50 +
algorithm/copy_backward/vector<LargePOD> | 280267 280.3 us | 274463 274.5 us | 1.02
algorithm/copy_backward/vector<uint32_t> | 3072 3.1 us | 3414 3.4 us | 0.90
algorithm/count/vector<uint64_t> | 270367 270.4 us | 266271 266.3 us | 1.02
algorithm/equal_range/vector<uint64_t> | 10268141 10.3 ms | 22004184 22.0 ms | 0.47 -

956
デフォルトの名無しさん[]   投稿日:2016/11/28 21:12:50  ID:w/GpYaDf.net(10)
>67 の続き。途中省略で末尾だけ記載する。

vector<AutoRefCount>/erase | 2132212 2.1 ms | 2128798 2.1 ms | 1.00

vector<MovableType>/erase | 124073512 124.1 ms | 121713608 121.7 ms | 1.02
vector<MovableType>/reallocate | 2317236 2.3 ms | 2053355 2.1 ms | 1.13

vector<uint64>/erase | 11193260 11.2 ms | 11209646 11.2 ms | 1.00
vector<uint64>/insert | 9193159 9.2 ms | 9221835 9.2 ms | 1.00
vector<uint64>/iteration | 68957 69.0 us | 68957 69.0 us | 1.00
vector<uint64>/operator[] | 106166 106.2 us | 86368 86.4 us | 1.23
vector<uint64>/push_back | 2452078 2.5 ms | 1394507 1.4 ms | 1.76 +
vector<uint64>/sort | 8286133 8.3 ms | 7735840 7.7 ms | 1.07

sum | 871753892 871.8 ms | 768601049 768.6 ms | 1.13

****************************************************************************************

Time to complete all tests: 3.66 s.
RETURNCODE=0

957
デフォルトの名無しさん[]   投稿日:2016/11/28 21:22:19  ID:w/GpYaDf.net(10)
>68の続き。
188個あったテスト項目のうち、71個がEASTL有利、10個がSTL有利、107個が互角という結果になった。
以下に、参考までにEASTL有利だった項目を良い成績順にベスト10を記す。

algorithm/find_end/string/end | 600816 600.8 us | 25945 25.9 us | 23.16 +
deque<ValuePair>/push_back | 5864095 5.9 ms | 880058 880.1 us | 6.66 +
deque<ValuePair>/push_front | 6016006 6.0 ms | 1031627 1.0 ms | 5.83 +
deque<ValuePair>/operator[] | 4007712 4.0 ms | 693327 693.3 us | 5.78 +
hash_map<uint32_t, TestObject>/count | 264563 264.6 us | 56326 56.3 us | 4.70 +
deque<ValuePair>/find | 1577482 1.6 ms | 381996 382.0 us | 4.13 +
algorithm/find_end/string/middle | 579650 579.6 us | 148497 148.5 us | 3.90 +
string<char8_t>/operator[] | 133476 133.5 us | 34820 34.8 us | 3.83 +
string<char16_t>/operator[] | 133477 133.5 us | 35844 35.8 us | 3.72 +
algorithm/lex_cmp/schar[] | 137914 137.9 us | 39941 39.9 us | 3.45 +

958
デフォルトの名無しさん[]   投稿日:2016/11/28 21:47:38  ID:w/GpYaDf.net(10)
>69の続き。上述のランキングをさらに11位から25位まで追記しておく。

algorithm/search/string<char> | 934678 934.7 us | 285728 285.7 us | 3.27 +
algorithm/rotate/vector<TestObject large> | 161470 161.5 us | 58716 58.7 us | 2.75 +
hash_map<uint32_t, TestObject>/operator[] | 343762 343.8 us | 129722 129.7 us | 2.65 +
hash_map<uint32_t, TestObject>/find | 177172 177.2 us | 67250 67.3 us | 2.63 +
map<TestObject, uint32_t>/clear | 90805 90.8 us | 35162 35.2 us | 2.58 +
string<char16_t>/swap | 78515 78.5 us | 30723 30.7 us | 2.56 +
bitset<1500>/count | 14115750 14.1 ms | 6574833 6.6 ms | 2.15 +
hash_map<string, uint32_t>/count | 946967 947.0 us | 443784 443.8 us | 2.13 +
deque<ValuePair>/insert | 28192924 28.2 ms | 13517665 13.5 ms | 2.09 +
bitset<75>/count | 1468243 1.5 ms | 700838 700.8 us | 2.09 +
string<char16_t>/insert/pos,p | 1060986 1.1 ms | 513424 513.4 us | 2.07 +
hash_map<string, uint32_t>/find_as/char* | 947992 948.0 us | 461194 461.2 us | 2.06 +
string<char16_t>/find/p,pos,n | 66859496 66.9 ms | 33442208 33.4 ms | 2.00 +
bitset<75>/flip | 400772 400.8 us | 200727 200.7 us | 2.00 +
set<uint32_t>/count | 1733147 1.7 ms | 870841 870.8 us | 1.99 +

959
デフォルトの名無しさん[sage]   投稿日:2016/11/28 22:16:01  ID:aUTLhSnb.net(2)
キモッ

960
デフォルトの名無しさん[sage]   投稿日:2016/11/28 22:29:08  ID:nxkexmqL.net(2)
EASTLにコンテナの範囲外アクセスチェックとかのデバッグ機能ってある?
自分でもやってみるけど知ってる人いたら教えて欲しい
コメント1件

961
デフォルトの名無しさん[sage]   投稿日:2016/11/29 03:57:58  ID:JKfAWAo3.net(2)
C++派八策

1.C++で書けばパフォーマンスが良くなる。なぜならパフォーマンスが良くなるまでC++書くからだ。
これを頭に叩き込め。

2.常にC++で書いておればそのうち他の要因でパフォーマンスが良くなるときが来る。
そのときに思い切りC++の手柄を主張しろ。

3.いいことはC++の手柄、悪いことは他の要因のせいにしろ。

4.データは都合のいいところだけ使え。グラフは切貼りしろ。

5.タイムラグを上手く使え。

6.「これがC++だ」と明言するな。定義を問われたら「C++の本を読め」と言っておけ。

7.批判されたら「お前はC++を理解してない」と言え。

8.いざとなったら定義を変えろ。オブジェクト指向に固執するな。
コメント1件

962
デフォルトの名無しさん[]   投稿日:2016/11/29 06:49:46  ID:nF3eDud1.net(6)
boost spiritって
LL(∞)パーサー生成すんの?
PEGパーサー生成するの?
LL法とPEG法wikipedia両方の実装例にこの名前のってあるんだけど
それとも両方とも実装してるの?
コメント5件

963
デフォルトの名無しさん[sage]   投稿日:2016/11/29 10:54:07  ID:FnERKnae.net(2)
菅官房長官「ちょっと何言ってるかわかんない」

964
デフォルトの名無しさん[]   投稿日:2016/11/29 13:08:19  ID:nF3eDud1.net(6)
4行目の「法」と「w」の間に格助詞の「の」が入る予定でした
コメント11件

965
デフォルトの名無しさん[sage]   投稿日:2016/11/29 13:44:34  ID:CM7LOPnj.net(2)
プログラム的にいうと
LLは実装で使うアルゴリズムのひとつ
PEGは仕様を定義する表現(言語)のひとつ
で対立・排他関係にあるわけではない

boost.spiritはPEG形式で与えられたルールから構文解析器を作成するライブラリ
(作成された解析器はLL法で入力を解析する)

966
デフォルトの名無しさん[]   投稿日:2016/11/29 18:41:17  ID:nF3eDud1.net(6)
>77
ど素人の私にわざわざ回答をくださってありがとうございます。
これからも勉強に励みます

967
デフォルトの名無しさん[]   投稿日:2016/11/29 18:46:41  ID:GF2v+9TM.net(2)
boost spiritってEBNFじゃなくてPEGだったんだな
使わんからどうでもいいが

968
デフォルトの名無しさん[]   投稿日:2016/11/29 20:31:51  ID:baTvYruL.net(2)
いま趣味で囲碁ソフト作ってるんだけど
Cなんすよ。
いろいろ面倒なんでC++で
作りなおそうかと思案中です。

作成の労力は何割ぐらい
軽減するでしょうか?

969
デフォルトの名無しさん[sage]   投稿日:2016/11/29 20:47:31  ID:DmRk6e1B.net(2)
増す

970
デフォルトの名無しさん[sage]   投稿日:2016/11/29 20:55:01  ID:1SK7brxW.net(2)
その質問に答えられる人は誰一人としていないが
少なくともCより面倒になることは(熟練したC++プログラマなら)ありえないから
チャレンジしてみる価値はある
ただし、()の中が重要で、熟練したプログラマなら、という話
君がすごく筋がよいならC++はきっと役に立つはず
一方で筋が悪いというのはC++においては余計なことをやろうとすること
余計なことさえしなければ、Cより面倒になることはあり得ないし
逆に心に邪念があれば、Cとは別の意味で面倒な樹海に迷い込む
C++は書く人の心の中を映す鏡

971
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:09:35  ID:glNciwx+.net(2)
Haxe(ヘックス)はOSSで、JSに型チェックを付けたような言語で(altJS)、
JS(ES5), Flash, PHP, C++, Java, C#, Python に書き出せる。
Windows8.1対応。IDEは、FlashDevelop

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

972
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:16:52  ID:bPmZgvzu.net(2)
>83
このコピペ時々見るけどヘイトHaxeの効果抜群だな

973
デフォルトの名無しさん[]   投稿日:2016/11/29 21:19:45  ID:X8I97SOu.net(2)
>80
レートどんくらい?
いちおープラスなんか?

974
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:24:49  ID:Ofu9bBqm.net(2)
>84
せやな。Mindに手を出すわ
コメント2件

975
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:42:26  ID:8ZPVrbbC.net(2)
>80
お前の能力によるとしか言えないんじゃないのか
ソースコードの量が多いと今のCをC++へ作り直す工程はかなりの労力だろな

976
デフォルトの名無しさん[sage]   投稿日:2016/11/29 21:44:01  ID:ua9E/pwR.net(2)
いや、>80は絶対にC++で書き直すべきだ!!

977
デフォルトの名無しさん[sage]   投稿日:2016/11/30 06:56:30  ID:UPCsGfLr.net(2)
C++を「Cにvectorとかstringなんかの便利な型を追加した言語」と
割り切って使うなら手間は増えないんじゃないかな。

でも実際にC++で書き始めると、C++らしい書き方をしないと
恥ずかしいみたいな気持ちになって深みにはまることが多い。

978
デフォルトの名無しさん[sage]   投稿日:2016/11/30 07:12:30  ID:HOaAIIiu.net(2)
>80がgithubにソースを晒せば解決
コメント1件

979
デフォルトの名無しさん[]   投稿日:2016/11/30 07:35:10  ID:60EZvxwk.net(6)
三割くらい減る

980
デフォルトの名無しさん[]   投稿日:2016/11/30 08:50:24  ID:AmbpRVJT.net(6)
Cでいったん書いたんなら、そのときの反省点が色々あるだろ
それを踏まえてより上手くまとめるにはC++はいいツールだぜ

981
デフォルトの名無しさん[]   投稿日:2016/11/30 09:01:18  ID:WcEJDmm/.net(6)
ぼくのかんがえるC++にしかできない超強力3大機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・ラムダ。
コメント2件

982
デフォルトの名無しさん[]   投稿日:2016/11/30 09:03:12  ID:WcEJDmm/.net(6)
下の根の乾かないうちに訂正。

ぼくのかんがえるC++にしかできない超強力3大(5大?)機能。
・自動的なデストラクタ呼び出し。
・moveコンストラクタと右辺値参照。
・templateとlambda。

983
デフォルトの名無しさん[]   投稿日:2016/11/30 09:05:34  ID:WcEJDmm/.net(6)
exceptionとRTTIはよく使うけど次点。

異論反論はもちろん認める。
コメント1件

984
デフォルトの名無しさん[]   投稿日:2016/11/30 09:15:29  ID:60EZvxwk.net(6)
RTTIは使わないな
使うなって偉い人が言ってるし

985
デフォルトの名無しさん[sage]   投稿日:2016/11/30 09:19:23  ID:mG9+BxSG.net(2)
なんで?(殺意)

986
デフォルトの名無しさん[sage]   投稿日:2016/11/30 10:01:29  ID:2V+M5QrA.net(2)
RAIIの間違いじゃね?
RTTIをよく使うって違和感ある。

987
デフォルトの名無しさん[sage]   投稿日:2016/11/30 10:25:44  ID:TMG+JuRV.net(12)
話題になっていた
STLと標準ライブラリと違うもの?

988
デフォルトの名無しさん[]   投稿日:2016/11/30 11:41:28  ID:AmbpRVJT.net(6)
typeidをデバッグや実験でなく実用で使ったことが確かにないなあ
C++例外は嫌々しぶしぶ使ってるけど、クソすぎてため息

989
デフォルトの名無しさん[]   投稿日:2016/11/30 12:37:13  ID:60EZvxwk.net(6)
例外ってなんか悪い部分あるの?

990
デフォルトの名無しさん[sage]   投稿日:2016/11/30 12:51:41  ID:zOzS6ENl.net(2)
???部にどの様な記述でコンパイルできるのですか?

#include <iostream>
#include <vector>

template<class T>
class Point{
public:
    Point(T x,T y):m_x(x),m_y(y){}
private:
    T m_x;
    T m_y;
};

int main( int argc, char *argv[] )
{
 Point<int> p1(0,0);
 Point<double> p2(0.0,0.0);
    
    std::vector<Point<???>> vpoints;
    vpoints.push_back(p1);
    vpoints.push_back(p2);
 return 0;
}

991
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:02:54  ID:7bek9hnS.net(4)
エラーメッセージは?

992
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:08:22  ID:0DxS4g7L.net(2)
親クラス用意しなきゃ無理じゃね?

993
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:16:41  ID:7bek9hnS.net(4)
あ、今意味がわかった
それやるならunion用意するかな
そもそも同じvectorにする意味がわからないけど・・・

994
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:21:49  ID:TMG+JuRV.net(12)
>105
プログラム的に意味があるかどうかなんか問題ではないだろ
それ言い出したら、

push_backした後なにもせずにプログラムが終了しているんだから
push_backする必要ないだろ

995
デフォルトの名無しさん[sage]   投稿日:2016/11/30 13:47:54  ID:kcnEUqeY.net(2)
>102
そこをどの様に記述してもコンパイルはできない

そのPoint<int>とPoint<double>はそれぞれなんの関係もない独立した型であって
相互に変換や代入などはできないから

996
デフォルトの名無しさん[sage]   投稿日:2016/11/30 14:23:43  ID:X0PK+rS4.net(2)
>99
STLは前世紀にどこかのメーカーが作ったライブラリ
便利なので広まって標準ライブラリの礎となった
最新のバージョンは3.3で今でもダウンロードできる
対応する環境はMS C++ Ver.5とかgcc 2.9とかだと思う

997
デフォルトの名無しさん[sage]   投稿日:2016/11/30 14:26:14  ID:TMG+JuRV.net(12)
標準ライブラリっていってもパクリってこと?

998
デフォルトの名無しさん[sage]   投稿日:2016/11/30 15:43:30  ID:tnQQtKaj.net(6)
パクリでもなんでも、便利そうなものは標準に取り入れる意味があるんだよ
さもなくば、コンパイラごとに違ったSTLとか嫌だろ

999
デフォルトの名無しさん[sage]   投稿日:2016/11/30 16:25:16  ID:34Y1lEhk.net(8)
C++例外は、明らかにJavaやC#のそれに比べて親切度において劣る。
どこからジャンプしてきたかの呼び出し履歴をとれないのはあまりに大きい。

1000
デフォルトの名無しさん[]   投稿日:2016/11/30 16:53:47  ID:34Y1lEhk.net(8)
EASTLを Visual Studio 2017 RC で使って感じたこと。
 ・なるほど少し速いかも、なレベル。悪くない。むしろ良い。
 ・仕事ではなく趣味や学習目的で扱う分には、手本としてもオススメできる。
 ・既存のstdとeastlを混在利用することは可能だが要注意。
 ・EASTLに限らずテンプレートの宿命だが、プログラマ側ソースコードのどの箇所がエラー原因なのか場所を特定しずらい。

具体的に困ったこと。いずれも対策を講じて解決済み。
 ・eastlで作ったコンテナをうっかり std::random_shuffle() にいれると、どのライブラリの swap() を呼ぶかコンパイラがわからずエラーになる。
  eastl::shuffle()に置き換えて、第三引数の乱数生成器は stdの<random>の乱数生成器を使って対処した。
 ・eastl::make_shared<>(args...) で Gdiplus::Bitmapの梟雄ポインタのインスタンスを作ろうとすると 引数2つ渡すGdiplus::GdiplusBaseのnew演算子が定義されてないとかで、エラーになる。
  従来通り、new Gdiplus::Bitmap(...) で作ったものを渡して対処した。

1001
デフォルトの名無しさん[]   投稿日:2016/11/30 17:29:43  ID:AmbpRVJT.net(6)
noexceptがデフォじゃないのが許せん

1002
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:00:58  ID:j7/lwSC0.net(2)
>109
標準化ってのは独自性の有る新たなものを産み出すんやなくて
世に存在する既存のものの統一を図るのが本来やで

1003
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:08:39  ID:TMG+JuRV.net(12)
>110
コンパイラごとにSTLの実装は違いますけど?

VC++、gcc、clang、C++builderで実装が同じだと思ってました?w
                   ~~~~~

1004
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:33:15  ID:tnQQtKaj.net(6)
誰が実装が同じだといった?
規格の話しているのに、なんで実装の話が出てくるのか謎なんだが

1005
デフォルトの名無しさん[sage]   投稿日:2016/11/30 19:46:20  ID:TMG+JuRV.net(12)
>116
おまえ頭おかしいのか?
己が書いたものを100回復唱してみろよ

> 誰が実装が同じだといった?
> 規格の話しているのに、なんで実装の話が出てくるのか謎なんだが

1006
デフォルトの名無しさん[]   投稿日:2016/11/30 19:54:56  ID:34Y1lEhk.net(8)
規格がまずあり、開発環境がそれをちゃんと守ってるかどうかは実装を見て確かめる。
規格の話だけするのなら、そもそもコンパイラや実行環境さえ必要なくて、日本の自称・憲法学者(笑)のように紙とペンだけで済む。
規格と実装、両方の話をするのが正しい。

1007
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:16:34  ID:SxJugRcT.net(4)
規格の話しているのに、なんで実装の話が出てくるのか謎なんだが?

1008
デフォルトの名無しさん[]   投稿日:2016/11/30 20:22:51  ID:wWCievJu.net(2)
実装はコンパイラ毎に違うに決まってんだろ

1009
デフォルトの名無しさん[sage]   投稿日:2016/11/30 20:43:04  ID:TMG+JuRV.net(12)
>110
を読んでみろ

1010
デフォルトの名無しさん[]   投稿日:2016/11/30 20:50:12  ID:o1dhiyLy.net(2)
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @copy__writing の管理人は東京都三鷹市の莉里子■■
http://i.imgur.com/5qAgsHG.png
http://i.imgur.com/kldi84l.png
http://i.imgur.com/8vCymiC.jpg


■今までのプライベート垢
@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko


@riricatputi (新アカ)  http://imgur.com/a/X1vQA


100垢以上作ってるキチガイ出会い厨 (粘着やめろ詐欺師!はやく捕まれホラ吹きネットストーカー犯罪者!!)

1011
デフォルトの名無しさん[sage]   投稿日:2016/11/30 21:00:50  ID:SxJugRcT.net(4)
質問とか罵倒とか〜を読めとかじゃなくて自分の主張をすれば一発で終わることを

1012
デフォルトの名無しさん[]   投稿日:2016/11/30 21:13:12  ID:34Y1lEhk.net(8)
実装の定義がマチマチ。
ある人はプロプロセッサ処理前のソースコードという意味で。
ある人はプロプロセッサ処理後のソースコードという意味で。
ある人はコンパイル後のobjバイナリという意味で。
ある人はビルド後の実行バイナリという意味で。

1013
デフォルトの名無しさん[sage]   投稿日:2016/11/30 21:39:54  ID:tnQQtKaj.net(6)
ID:TMG+JuRV がなぜ発狂しているのか謎なんだが

---
パクリでもなんでも、便利そうなものは標準に取り入れる意味があるんだよ
さもなくば、コンパイラごとに違った(規格の)STL(モドキ)とか嫌だろ
---

1014
デフォルトの名無しさん[]   投稿日:2016/11/30 21:56:08  ID:pYpq7m+B.net(2)
一番頭おかしいやつが降臨しました>124

1015
デフォルトの名無しさん[sage]   投稿日:2016/11/30 22:24:40  ID:1zLD/kv4.net(2)
パクリとかw
開発者本人が標準化委員会に提案したんだぞ

1016
デフォルトの名無しさん[sage]   投稿日:2016/11/30 23:42:37  ID:lwghcYzA.net(2)
ID:TMG+JuRV がなぜ発狂しているのか一瞬分からなかったが>108-110を読み直して理解した
>110の説明の日本語がよろしくない

1017
デフォルトの名無しさん[]   投稿日:2016/12/01 00:10:57  ID:SwKXepyG.net(16)
PCRE という正規表現ライブラリが存在する。
これをSTLのregexと同じインターフェースでラップした場合、STLと呼べるだろうか?

1018
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:14:57  ID:rFASmZLg.net(4)
regexはSTLなのか
threadをSTLと言ってる人も見かけたし何でもありだな

1019
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:18:17  ID:O3rxu16z.net(6)
つまり
STLという言葉を使う奴=バカ
ハゲもその一人

1020
デフォルトの名無しさん[]   投稿日:2016/12/01 00:23:12  ID:SwKXepyG.net(16)
>130
指摘ありがとう。
regex はあくまでstdに採用されたのであってSTLではなかった。訂正します。

1021
デフォルトの名無しさん[sage]   投稿日:2016/12/01 00:27:51  ID:9RDsFVMO.net(2)
stdは「スタド」と発音すべき

1022
デフォルトの名無しさん[]   投稿日:2016/12/01 00:37:39  ID:SwKXepyG.net(16)
studio をスタジオと呼ぶ日本語の舌なのに、あろうことか stdio をスタディオと呼んでしまう。

1023
デフォルトの名無しさん[sage]   投稿日:2016/12/01 01:01:51  ID:lTTMQ5z2.net(2)
>113
ある程度のサイズのプログラムで大半を占めるアプリケーション層の操作が noexcept になる
なんてことは考えにくいので、 noexcept がデフォだったらそれはそれで許せない感じになる。
noexcept がデフォでうれしいのなんてライブラリ作者ぐらいでしょ。

1024
デフォルトの名無しさん[sage]   投稿日:2016/12/01 01:37:48  ID:TTb4zObN.net(2)
>130
regexもスタンダードなテンプレートライブラリだろ

1025
デフォルトの名無しさん[]   投稿日:2016/12/01 02:09:31  ID:SwKXepyG.net(16)
たとえ話。
STLを会社とすると、basic_stringはSTLの特別顧客だがSTLの社員ではない。
STLを会社とすると、regex、thread、iostreamは一般客。

regexを会社とすると、basic_stringはregexの特別顧客だが、regexの社員ではない。
stringstreamを会社とすると、basic_stringはstringstreamの契約社員。

basic_stringだけが特別な存在として異彩を放っている。

1026
デフォルトの名無しさん[]   投稿日:2016/12/01 02:52:13  ID:PTAZcCnS.net(6)
下手な例え話はやめろとあれほど言ったじゃないか

1027
デフォルトの名無しさん[sage]   投稿日:2016/12/01 03:20:50  ID:n8BYNyNm.net(2)
>128
確かに>110の内容は誤解する余地のある書き方だけど普通に読めば理解できるし、>115は良く読まずに脊髄反射してるか、分かってて揚げ足取りしてるのか、いずれにせよ建設的な議論ができないタイプなんだろう。

1028
デフォルトの名無しさん[sage]   投稿日:2016/12/01 06:56:46  ID:SwKXepyG.net(16)
>138
いらだつ気持ちはわかるよ。
basic_stringはヴェルタースオリジナルと同じくらい特別な存在だからね。
https://www.youtube.com/watch?v=4Yi9_uCw2NY

1029
デフォルトの名無しさん[sage]   投稿日:2016/12/01 08:11:31  ID:7obV0jvg.net(2)
STLが会社ならstringはハケン
「ボク、正規になれるって頑張ってきたのに…」

1030
デフォルトの名無しさん[]   投稿日:2016/12/01 10:05:27  ID:PTAZcCnS.net(6)
>139
ほう?
この例え話から建設的な議論を広げて貰おうか?

1031
デフォルトの名無しさん[sage]   投稿日:2016/12/01 12:54:22  ID:rYSe/HxL.net(4)
>142
そう言うレスが建設的じゃないって言われてるんだろ

1032
デフォルトの名無しさん[]   投稿日:2016/12/01 13:02:57  ID:PTAZcCnS.net(6)
>143
え?なんで?
出来ないこと要求しちゃったから?

1033
デフォルトの名無しさん[]   投稿日:2016/12/01 14:01:09  ID:vPHgqg3S.net(10)
template<typename T> struct moge
{
struct hage{};
};
template<typename T> void hoge(typename moge<T>::hage)
{}
hoge(moge<int>::hage{});

hogeの呼び出しができません。hogeをどう変えればいいですか。

1034
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:05:36  ID:SwKXepyG.net(16)
>145
hoge<int>(moge<int>::hage());

1035
デフォルトの名無しさん[]   投稿日:2016/12/01 15:17:40  ID:vPHgqg3S.net(10)
呼び出しの方は変えたくないです
Tがどの型でも呼び出せるようにするにはどうすればいいですか

1036
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:38:14  ID:O+yJrb2h.net(8)
俺はテンプレートなんか自分ではめったに書かないし
テンプレートの型推論のメカニズムも何も知らないが
要はhoge()の中でTが得られれば良いんでしょ?

template<typename T> struct moge
{
struct hage{ typedef T type; };
};
template<typename U> void hoge( U arg )
{
typedef U::type T;
}
hoge(moge<int>::hage{});

一応これでコンパイルは通る

1037
デフォルトの名無しさん[sage]   投稿日:2016/12/01 15:39:23  ID:X/1wKSRH.net(2)
>101
拾いきれない例外は外にふっとんでいく

1038
デフォルトの名無しさん[]   投稿日:2016/12/01 15:41:27  ID:SwKXepyG.net(16)
>141
正社員より年収の良い派遣社員だよ、basic_stringさんは。
しかも、boost の文字列操作ライブラリの強力な支援を受けられる最強の八方美人。

1039
デフォルトの名無しさん[]   投稿日:2016/12/01 15:42:30  ID:vPHgqg3S.net(10)
それだとtypeを持った型ならなんでも受け付けてしまいます
mogeのhageしか受け付けないhogeが必要です

1040
デフォルトの名無しさん[sage]   投稿日:2016/12/01 16:29:20  ID:aVqOQbdr.net(4)
コンパイラ無いから試せないけど、呼び出しに{}いるんだっけ?

1041
デフォルトの名無しさん[]   投稿日:2016/12/01 16:59:12  ID:umvXirxE.net(6)
clang: candidate template ignored: couldn't infer template argument 'T'

gcc: candidate: template<class T> void hoge(typename moge<T>::hage)
template argument deduction/substitution failed:
couldn't deduce template parameter 'T'

cl:
'hoge': no matching overloaded function found
'void hoge(moge<T>::hage)': could not deduce template argument for 'T'
see declaration of 'hoge'

みんな口を揃えて「Tが推定できない」と言ってくる
じゃあ、Tを明示的に与えては?
hoge<int>(moge<int>::hage{});
ちょっと腹立つけど、typenameだのtemplateだのの前置と
ウザさはそう変わらんと思う

1042
デフォルトの名無しさん[]   投稿日:2016/12/01 17:04:30  ID:umvXirxE.net(6)
ヘルパー関数を用意するとか
template <typename T>
void hige()
{
hoge<T>(moge<T>::hage{});
}

1043
デフォルトの名無しさん[]   投稿日:2016/12/01 17:06:57  ID:umvXirxE.net(6)
ラムダ式でも似たようなのできるな
auto closure = [](auto arg){ hoge<decltype(arg)>(moge<decltype(arg)>::hage{}); };
closure(1);

1044
デフォルトの名無しさん[]   投稿日:2016/12/01 17:12:07  ID:vPHgqg3S.net(10)
hoge(moge<int>::hage());
呼び出し方はこうでないといけないのです
hogeの定義の方をなんとかしてできませんか

1045
デフォルトの名無しさん[]   投稿日:2016/12/01 17:20:15  ID:EvfhiEON.net(2)
template<typename T> struct moge {
struct hage{ using type = T; };
};

template<typename T>
std::enable_if_t<std::is_same<T, typename moge<typename T::type>::hage>::value>
hoge(T) {};

1046
デフォルトの名無しさん[sage]   投稿日:2016/12/01 18:08:07  ID:rYSe/HxL.net(4)
すでに終わった話を引っ張るのが建設的とはとても思えないんだが...
まあ、なんか悔しいんなら一人でやっててくれ w

1047
デフォルトの名無しさん[sage]   投稿日:2016/12/01 18:49:53  ID:Xkx3qm7U.net(2)
>157
hoge関数をどう変えるかと聞いてるのに
勝手にmogeの定義を変えるお題改変野郎

1048
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:01:40  ID:aVqOQbdr.net(4)
>156でなんか問題あるの?

1049
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:13:39  ID:xNXWtXQs.net(2)
答えられないと「俺のお題改変に文句付けるのか」
「何が気に入らんのやワレ」と圧力

1050
デフォルトの名無しさん[sage]   投稿日:2016/12/01 19:14:31  ID:O+yJrb2h.net(8)
>159
現実問題としては、using type = T は無くても有ってもかまわないんだろうよ
実際のコードのhageの中身がどうなっているかわからないが
Tを使ったメンバがあるならdecltypeでTは取得できるし
Tを使ったメンバがないなら
おそらくはhageの処理をするのにTは要らない公算が高いだろ
hoge()が何をする関数かわからないから何とも言えないが
using type = T はサービスみたいなものじゃないかな

1051
デフォルトの名無しさん[]   投稿日:2016/12/01 19:15:49  ID:vPHgqg3S.net(10)
>160
コンパイル通りません
153のようなエラーが出ます

1052
デフォルトの名無しさん[sage]   投稿日:2016/12/01 20:31:23  ID:O3rxu16z.net(6)
>現実問題としては、using type = T は無くても有ってもかまわないんだろうよ

質問者以外の者がどうして根拠なしに決めつけようとするのか疑問だ
math.hにM_PIを入れただけで因縁をつけられてしまうというのに

1053
デフォルトの名無しさん[sage]   投稿日:2016/12/01 21:42:58  ID:O+yJrb2h.net(8)
だから質問者に良いかどうか決めてもらえばよいだろって話
質問者が納得さえすればそれで終わりなんだからさ
それなのにこの質問者は>157についてはノーコメントなんだよ

1054
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:10:33  ID:O3rxu16z.net(6)
本気で質問しているようにも見えなかったが「できませんか」と訊かれているのだから
まず「出来ません」と回答しないと>156は納得しないのではないだろうか。
可否がはっきりしない状態で質問通りでない代替案に誘導したらお題改変と罵られても致し方ない

1055
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:22:29  ID:O+yJrb2h.net(8)
おまえなー、それなー
いいかげんにしろよな
お前、俺に>164で何て言った?

1056
デフォルトの名無しさん[]   投稿日:2016/12/01 23:42:50  ID:SwKXepyG.net(16)
min(x,y)とmax(x,y)の定義がマクロ版とテンプレート版が混在して悶絶した経験のある人だけが石を投げなさい。

1057
デフォルトの名無しさん[sage]   投稿日:2016/12/01 23:46:56  ID:rFASmZLg.net(4)
マクロ版min,maxは消せるけど

1058
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:39:59  ID:pucVjZc7.net(2)
質問です。
http://ideone.com/R8pyc7
配列と要素数を受け取るクラスにvectorを渡したい時のスマートな方法を教えて下さい。

1059
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:46:20  ID:xqmmn7KF.net(2)
vectorが変更しないならそれでいいだろうけど
そのコードみたいにpush_backするならhogeクラスには渡したくない
素直に考えるならvectorごと渡すクラスにすべきだが・・・

1060
デフォルトの名無しさん[sage]   投稿日:2016/12/02 00:56:10  ID:vQsfzK7a.net(2)
>156
>"hogeの定義の方"をなんとかしてできませんか
はできないからあきらめれよ!ってこと?

1061
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:11:57  ID:EkOvBjK1.net(4)
>170
http://ideone.com/bdR6fU

これでいいじゃん

constの参照だと参照を握ったままになるから常に反映される

1062
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:17:41  ID:BG6OiKaZ.net(2)
既存のライブラリをそのまま使いたいのでクラスの変更はなしの方向でお願いします

ラムダ式でコピーコンストラクタを呼ぶ方法がいいのかな
http://ideone.com/R8pyc7

1063
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:46:59  ID:bQI5jx4o.net(2)
この状況だとvectorを直接からめた時点でスマートじゃなくなるだろ
unique_ptrとか補助に使ってnew[]で確保した領域に値をコピーして渡すのが結局スマート(賢い)

1064
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:50:25  ID:FOrSERG0.net(2)
vector用のオーバーロード作ればいいんじゃないのか

1065
デフォルトの名無しさん[sage]   投稿日:2016/12/02 01:59:15  ID:EkOvBjK1.net(4)
>174
size()を使ってる点でおかしいよ
vectorのインスタンスを無視するつもりか

1066
デフォルトの名無しさん[]   投稿日:2016/12/02 02:33:56  ID:kfHVwGjq.net(10)
>177
君は間違っている。
STLでも begin() と end() で範囲指定するだろ。
イテレータがない型にも対応しようと思えば、先頭ポインタとサイズを渡すのが正しい。

1067
デフォルトの名無しさん[sage]   投稿日:2016/12/02 02:49:25  ID:l8IxU+t8.net(2)
クラス変更無しでvector渡したいなら、ラッパを作って
配列と要素数を更新してからメソッド呼ぶようにするしかないんじゃないかな?

1068
デフォルトの名無しさん[]   投稿日:2016/12/02 05:46:11  ID:na0ypgqO.net(8)
何が問題でどうしたいのか明確にしてないからこんな風にとっちらかった回答になるんだよな

1069
デフォルトの名無しさん[sage]   投稿日:2016/12/02 07:22:37  ID:nGP8T2R9.net(2)
質問者本人はこれ以上無いくらいに明確にしたつもり

1070
デフォルトの名無しさん[]   投稿日:2016/12/02 07:57:25  ID:na0ypgqO.net(8)
>181
本人?
意図不明なラムダ使った未定義動作のコードで明確にしたつもりって言われてもなあ

1071
デフォルトの名無しさん[sage]   投稿日:2016/12/02 08:20:31  ID:4/nN0nxx.net(2)
明確でないならスルーしとけばいい
明確でないから自分の都合で改編するとか迷惑なだけ

1072
デフォルトの名無しさん[sage]   投稿日:2016/12/02 09:56:01  ID:tdlBqAAM.net(2)
>174
連続格納が保証されてるのだから
&a[0]を渡せばいいよ

1073
デフォルトの名無しさん[]   投稿日:2016/12/02 10:09:51  ID:HWcr/nXn.net(4)
そもそもの基本
◎ int* に vector<int> は渡せない
相手が int* でビルトイン[]演算子を使う限り、
vector ではなく生の配列を用意する以外に選択肢はない

1074
デフォルトの名無しさん[]   投稿日:2016/12/02 10:30:03  ID:na0ypgqO.net(8)
明確にしたとしても
>185
みたいに何も解ってない初心者がでしゃばって見当違いな回答する事も多かったな

1075
デフォルトの名無しさん[]   投稿日:2016/12/02 10:53:45  ID:HWcr/nXn.net(4)
そもそもの基本を指摘されて発狂するようなガイキチが暴れてただけだろ

1076
デフォルトの名無しさん[sage]   投稿日:2016/12/02 10:59:49  ID:dQ26sSxp.net(4)
>170
ラッパーかヘルパーを用意して、vectorはそっちで処理する。

1077
デフォルトの名無しさん[]   投稿日:2016/12/02 11:04:51  ID:na0ypgqO.net(8)
>187
お前は何のためにstd::vector<T>::dataがT*を返すと思ってんの?

1078
デフォルトの名無しさん[]   投稿日:2016/12/02 12:06:38  ID:kfHVwGjq.net(10)
vector::data()が追加されたのはC++11 からだから古い入門書には載ってない。
だから安易にdata()を使えと回答する人もまた入門者に近しい。

1079
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:12:12  ID:jbEu1BDa.net(4)
どうも論理が飛躍しているな

1080
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:28:12  ID:7EcjjmS3.net(4)
質問者はラムダ使ってるんだからdata()使えるでしょ

1081
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:29:35  ID:dQ26sSxp.net(4)
>190
古い入門書を想定しろ、はさすがに言いがかりがひどすぎる。

1082
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:36:41  ID:oWLJBZXg.net(4)
AnsiString::data()のパクリか…

1083
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:38:30  ID:oWLJBZXg.net(4)
いや、string::data()か

1084
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:14:03  ID:uzv70fAD.net(8)
data()はいいけど、vectorにemplace_back()したらsize()も変化するんだが
それが渡したクラスでは反映されないってのが問題だと思ってたんだが勘違い?

1085
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:59:13  ID:7EcjjmS3.net(4)
俺もそう思ってた
もっといえば要素増やすとdata()の場所がかわってアクセス違反になるかもしれなくて困ると言うことかと

1086
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:03:09  ID:uzv70fAD.net(8)
>197
あーそれはあるね
どんどん要素を増やして行くと再newしてそこに全部要素コピーされなおして
元のアドレスは無効になるってのがあったな
だからvectorをメンバに持つのを頑なに拒否する理由がわからない

1087
デフォルトの名無しさん[]   投稿日:2016/12/02 15:13:55  ID:kfHVwGjq.net(10)
なんだか急にスレのレベルが落ちたのはなぜ?
他の場所で使うためのvectorをメンバ変数にするとか勝手なこと言いだしているし、精神病っぽいんだが。

1088
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:37:45  ID:uzv70fAD.net(8)
>199
あのさあ・・・
>170見てから発言しようよ
クラスにvectorの中身を受け渡してからその時の要素数で和を求めてるでしょ?
他のところで元のvectorの要素数が変化してもクラスに反映されたいのかと思ったわけですよ
それだったらconst&で参照を握るのが一番いいでしょって話

レベルが落ちてるのは君の頭では?

1089
デフォルトの名無しさん[sage]   投稿日:2016/12/02 15:53:53  ID:jbEu1BDa.net(4)
さすがにそんな今更な

1090
デフォルトの名無しさん[]   投稿日:2016/12/02 16:04:44  ID:kfHVwGjq.net(10)
普通に考えれば、クラスのメンバ変数として配列を持つ必要はなくて、
sum(int* arr, size_t arrsize); のように計算したいときにその配列を渡すだけでいい。
>170の人は、クラス設計の基礎について学んでいる最中なのだろう。

>200
内部でvectorを持てなどど初心者をミスリードするような言説は支持できない。
参照渡ししようがsum()実行時に配列がすでに破棄されている危険は避けられない。

1091
デフォルトの名無しさん[sage]   投稿日:2016/12/02 16:07:07  ID:uzv70fAD.net(8)
>202
それはそうだけど、精神科医でもないのに他人を精神病呼ばわりするのはどうかと思うね

1092
デフォルトの名無しさん[]   投稿日:2016/12/02 20:25:46  ID:CA3LJl/S.net(2)
念のため受診してみるのはどうか。

1093
デフォルトの名無しさん[sage]   投稿日:2016/12/02 20:55:50  ID:u0tVj5kO.net(2)
>167
ん?何か問題でも?

1094
デフォルトの名無しさん[sage]   投稿日:2016/12/02 21:54:40  ID:U8hBv6+y.net(2)
必要もないのに受診するんだからお前金出せ

1095
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:09:36  ID:7p6FlYPM.net(4)
>203
自分およびリアルの周りの連中に精神病の奴が多いから、すぐにそう呼ぶんだよ
プログラマは、基地外・低脳・ド素人でもなれる底辺職業だからしょうがない
あと,2chに来る連中は基地外・低脳が普通でコミュ障害の奴が多い

1096
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:22:54  ID:bT0HhoKK.net(6)
>207
類は友を呼ぶって言うからお前も頭おかしいんだな
だからお前の回りばっかり精神病の奴がたくさん集まるわけだ
俺の周囲にそんなおかしい奴いないぞ

1097
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:35:27  ID:7p6FlYPM.net(4)
>208
お前も、2chに来ている。つまり、お前もおかしい奴で基地外の仲間

1098
デフォルトの名無しさん[sage]   投稿日:2016/12/02 22:42:18  ID:bT0HhoKK.net(6)
>209
無理があり過ぎるよそれ
2chに来ていたら頭おかしいってどうなんだよ
極論過ぎるだろ

1099
デフォルトの名無しさん[]   投稿日:2016/12/02 22:57:40  ID:kfHVwGjq.net(10)
物事をわざと難しい方に倒すような人は精神の変調をきたしやすい。
質問者はvectorをメンバ変数に持つつもりなら最初からやってるよ。
質問者がクラスにやらせるべきこととそうでないことを判断するトレーニング中であることぐらい、察したらどうか。

1100
デフォルトの名無しさん[sage]   投稿日:2016/12/02 23:17:08  ID:bT0HhoKK.net(6)
あーこりゃ完全に頭逝ってるね

1101
デフォルトの名無しさん[sage]   投稿日:2016/12/03 00:40:47  ID:lJ+FIy6l.net(4)
そう言っている奴こそ完全に頭逝っているよな
普通の奴はそんなことは普通は言わないからな

1102
デフォルトの名無しさん[sage]   投稿日:2016/12/03 01:16:45  ID:o5juI1ev.net(2)
>213が既に普通でない件

1103
デフォルトの名無しさん[sage]   投稿日:2016/12/03 01:45:59  ID:lJ+FIy6l.net(4)
昼間は楽しかったんだな。俺も参加したかったよ。
>170
19. hoge huga(&[&]{return a;}()[0],a.size());
20. cout<<huga.sum()<<endl;
21. a.push_back(4);
22. cout<<huga.sum()<<endl;

質問者が聞いているのは、19のところの渡し方のみで
21でpush_backしたことが22のhuga.sum()に反映されなくてもOK
ってことでこのコードなのか。でも、普通は反映されないと駄目だろうってなるが
しかし、そのあたりのことは質問者の方針しだいだからな

1104
デフォルトの名無しさん[]   投稿日:2016/12/03 02:11:45  ID:VaD9CZL6.net(12)
>215
そもそもそのコード未定義だから。コピーされた一時オブジェクトの寿命がfugaのコンストラクタの終了時までしかない。つまりコンストラクタが終わった時点でfugaは無効なポインタを保持している。
俺意外誰も指摘してないこのレベルの低さよ
まともなバッファーオーバーフローチェックツールもないWindows使ってるだろうからずっと気付かないんだろうけどさ。

1105
デフォルトの名無しさん[]   投稿日:2016/12/03 02:17:26  ID:Ub2Qtd0L.net(6)
>216
Visual Studio に静的コード分析するツールがついてるよ。

http://qiita.com/t_takahari/items/8886b84f16c21dcf3169
ツールバーの[ビルド] → [ソリューションでコード分析を実行]

1106
デフォルトの名無しさん[]   投稿日:2016/12/03 02:45:48  ID:VaD9CZL6.net(12)
>217
この流れで紹介するから検出すんのかと思って件のコードに使ったけど検出しねえじゃん。
何で紹介したの?見てください。こんなゴミしかありませんって言いたかったの?

1107
デフォルトの名無しさん[]   投稿日:2016/12/03 03:22:46  ID:Ub2Qtd0L.net(6)
>218
無理だったか。人柱になってくれてありがとう。参考になったわ。

1108
デフォルトの名無しさん[sage]   投稿日:2016/12/03 06:19:52  ID:Dg5vNEL0.net(2)
>何で紹介したの?

文脈を理解できずに単語レベルで脊髄反射したから
以外の理由が思いつかない

1109
デフォルトの名無しさん[sage]   投稿日:2016/12/03 09:55:36  ID:PFahUF7+.net(2)
そもそも fuga なんてどこにもないし、無効なポインタとバッファーオーバーランの区別もついてない >216 が知ったか君の脊髄反射にしか見えん...

1110
デフォルトの名無しさん[]   投稿日:2016/12/03 10:41:31  ID:VaD9CZL6.net(12)
>221
そんなどうでもいい事しか指摘出来ないんかね?
×fuga
○huga
これで満足かね?
あと、勝手に脳内補完したんだろうけどバッファーオーバーフローしているとは言っていない。

1111
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:01:08  ID:ueq5z8BC.net(2)
>222
ビルド不可能な致命的なミスをどうでもいいとかレベルが知れるね

1112
デフォルトの名無しさん[]   投稿日:2016/12/03 11:09:33  ID:VaD9CZL6.net(12)
>223
へえ、お前はあのコメントビルドしなきゃ解釈出来ないんだ?
融通の効かない脳みそ持ってて大変そうだね。
ちょっと気の利いた実在するコンパイラですらfugaじゃなくてhugaじゃない?と提案してくれだろうに

1113
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:35:29  ID:msYNpxCE.net(4)
>222
>170もタイプミスで
hoge huga(&[&]{return a;}()[0],a.size());
としたんだよ
ほんとは、
hoge huga( &[&]()->std::vector<int>&{return a;}()[0], a.size());
(でも、ラムダを使った意図が分からんが)
で、一方、a.size()はラムダじゃないところがなかなか良いな

>216で言っているチェックツールはなんていうもの?

1114
デフォルトの名無しさん[]   投稿日:2016/12/03 11:43:54  ID:VaD9CZL6.net(12)
>225
その質問者であろう次のコメント
>174
を読んでそう言ってる?

1115
デフォルトの名無しさん[sage]   投稿日:2016/12/03 11:55:45  ID:msYNpxCE.net(4)
>226
>215>170ぐらいしか読んでいない
で、チェックツールはなんていうもの?

1116
デフォルトの名無しさん[sage]   投稿日:2016/12/03 13:30:42  ID:NvhxMxG9.net(2)
1.配列と要素数を受け取るクラスにvectorを渡したい(>170)
2.既存のライブラリをそのまま使いたいのでクラスの変更はなし(>174)

だからラッパー作るしかないんじゃ

1117
デフォルトの名無しさん[sage]   投稿日:2016/12/03 13:32:28  ID:yMrCSOQZ.net(2)
>216
そんなの誰でも気づいてるんだが・・・
「誰も気付いてないことに気づいてる、俺偉い!」みたいなガキみたいな発言やめようよ

1118
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:13:03  ID:10B4blEi.net(2)
>誰でも気づいてるんだが

ラムダを使った意図が分からんと言っている人が
無効ポンタの問題に気付いているなんてありえるんか?

1119
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:32:15  ID:ibetNlvy.net(2)
>230
くやしいのうくやしいのうwww

1120
デフォルトの名無しさん[]   投稿日:2016/12/03 14:38:22  ID:VaD9CZL6.net(12)
>229
後からならなんとでも言えるよねw
それに”俺偉い”じゃなくて”お前ら役立たず”だから。

1121
デフォルトの名無しさん[sage]   投稿日:2016/12/03 14:49:46  ID:3jlcDMZy.net(2)
>230
ローソンで使わないとポインタつかないよ

1122
デフォルトの名無しさん[sage]   投稿日:2016/12/03 15:34:57  ID:RB4pAnBd.net(2)
03ぽい話はこういうところで話してもつまらないと思う。てゆーかみんなもう興味ないでしょ。

1123
デフォルトの名無しさん[]   投稿日:2016/12/03 17:47:38  ID:obyPXWW/.net(2)
>174
これでダメならラップだな
http://ideone.com/FdmnJX

1124
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:55:37  ID:nmEGc+VH.net(2)
メモリポインタの話でもしようぜ!

1125
デフォルトの名無しさん[]   投稿日:2016/12/03 21:35:23  ID:Ub2Qtd0L.net(6)
クラスがnew や delete をオーバーライドしている場合は、
make_shared によるshared_ptrインスタンス作成は避けた方がよさげ?

1126
デフォルトの名無しさん[sage]   投稿日:2016/12/03 22:49:36  ID:P2bjLPkk.net(2)
>235 ついでに >228
質問者はLambda覚えてうれしいみたいだから
auto getsum_of_vec_a = [&](){ return hoge(a.data(),a.size()).sum();};
or
auto getsum_of_vec_int = [](std::vector<int>& rveci){return hoge(rveci.data(),rveci.size()).sum();};
の方が好きなんじゃないのか

1127
デフォルトの名無しさん[sage]   投稿日:2016/12/04 01:18:15  ID:NuV6w8ql.net(2)
気のせいかQの匂いがする
QはID入ってから消えたけど老害なのにC++11/14やり始めたのか

1128
デフォルトの名無しさん[sage]   投稿日:2016/12/04 01:21:08  ID:ym269Z+p.net(2)
まあそうかも知れない
見ていて哀れな自演をするのが片山
自演せずにアホなレスを続けるのがQ

1129
80[]   投稿日:2016/12/04 11:02:45  ID:VNQPodhL.net(2)
お礼が遅れましたが、レス沢山いただきまして
ありがとうございます。

毎週土曜日に囲碁ソフトを作ってる仲間で集まって対戦しているのですが、
昨日は、とうとう勝率で最下位に転落してしまいました。

というわけで来週の対戦に備えて、C言語のままでレベルをはかります。
C++への移植は、C++をもうちっと勉強してからにします。

1130
デフォルトの名無しさん[sage]   投稿日:2016/12/04 11:30:28  ID:lLLqnakU.net(2)
>241
> 毎週土曜日に囲碁ソフトを作ってる仲間で集まって対戦しているのですが、
面白そうだな、羨ましい

1131
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:44:55  ID:3hO5sNCQ.net(6)
集まる必要があるのか?

1132
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:52:15  ID:vQKkq8/O.net(2)
ソケットの勉強してネットで対戦出来るようにしてくれ

1133
デフォルトの名無しさん[]   投稿日:2016/12/04 13:15:12  ID:G39rTcwP.net(2)
>244
いくらでもあるじゃん

1134
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:18:43  ID:0x/ZyvVg.net(2)
>241
英断
C++なんて初めたら囲碁ソフトどころじゃなくなるからな

1135
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:22:41  ID:npHUCn5F.net(2)
>243
集まってわいわいやるのが楽しいんだろ

1136
デフォルトの名無しさん[sage]   投稿日:2016/12/04 13:34:54  ID:3bGgXPCq.net(4)
>243
ぼっちか?

1137
デフォルトの名無しさん[sage]   投稿日:2016/12/04 15:02:30  ID:3hO5sNCQ.net(6)
>248
集まるか?
まあ楽しいんだろうけど。
そういう場で言語の話題になったりしないのかな?

1138
デフォルトの名無しさん[]   投稿日:2016/12/04 19:50:57  ID:IGd+W/R5.net(4)
>243みたいに一生ずーっとスマホ越しの
同好の士との交流だけをし続けるやつキモすぎ

1139
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:01:23  ID:3hO5sNCQ.net(6)
>250
C++忘年会には出るけどな

1140
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:22:06  ID:c0yJ+Nvf.net(2)
日本語が通じなさそう

1141
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:31:12  ID:WzPfJn5T.net(4)
雑談している時が平和で良いな
C++のレベルは低くてC++の話はたいしてできないんだから
もう、C++な奴のの雑談スレで良いな

1142
デフォルトの名無しさん[]   投稿日:2016/12/04 21:34:02  ID:IGd+W/R5.net(4)
おまえの中ではな

1143
デフォルトの名無しさん[sage]   投稿日:2016/12/04 21:44:00  ID:3bGgXPCq.net(4)
>251
このスレ基準だとすぐ喧嘩になりそう

1144
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:05:03  ID:ORLi/53U.net(2)
>237
そんな気がする

1145
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:21:04  ID:mxVYcsZL.net(4)
>253
ついったーとかですればいい

1146
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:21:43  ID:mxVYcsZL.net(4)
訂正
>253
れべるの高い話はついったーとかですればいい

1147
デフォルトの名無しさん[sage]   投稿日:2016/12/04 22:53:20  ID:BLPKeA8O.net(2)
「このnewでインスタンスを作成する所が」
「インスタンスはコンパイラが明示的または暗黙的に作成するもの。イミフ」
「会話の流れから常識で理解できない馬鹿はお辛そうですねww」
「論破されて反論出来なくなると人格攻撃ミジメwww」
こんな感じだな

1148
112[]   投稿日:2016/12/04 23:39:04  ID:Auh8Qey4.net(2)
eastl::make_shared<>(args) で new オーバーライドがないエラーが出て調べたんだが、
VS2017RC の std や boost の make_shared<>(args) は、しれっと new/delete オーバーライドを無視して、通常のnew/deleteを使うので要注意。

最初はコンパイルできないeastlの問題かと思ったが、今はむしろ意図しない解釈を許す std や boostの方が問題に思える。

1149
デフォルトの名無しさん[sage]   投稿日:2016/12/04 23:39:11  ID:WzPfJn5T.net(4)
>259
ここには俺も含めてそうなる連中以外いないだろ
いまや,2chは基本的にコミュ障(議論っぽいことはしているが、実はコミュニケーションはできていない)
者が集まるところ。
議論にはコミュニケーション能力必要だが、雑談ならコミュニケーション能力なくていい。
意味不明の独り言でもよいし

>258
れべるの高い話だけじゃなく低い話もついったーとかで
雑談はここで良いが、C++のこと(議論)をここですると(コミュ障全開の)罵倒・喧嘩・基地りあいになるから
雑談以外はついったーとかですればいい

1150
デフォルトの名無しさん[sage]   投稿日:2016/12/05 00:01:16  ID:JXZGoe9z.net(2)
>260
make_shared<T>はTとshared_ptrの管理ブロック用の領域を合わせた大きさで
一回しかメモリ確保を行わないからそういうもの
Tの大きさ分のメモリしか確保しないオーバーロードされたnewはメモリ確保には使わない

1151
デフォルトの名無しさん[]   投稿日:2016/12/05 00:19:06  ID:oh/e0eB5.net(46)
>262
そういうもの、とはどういう意味ですか?
やはりコンパイルエラーが出るEASTLが間違っているということでしょうか。

1152
デフォルトの名無しさん[]   投稿日:2016/12/05 00:23:17  ID:soEx3sdp.net(16)
>263
特定のアロケーター使って欲しい場合のためのstd::allocate_shared

1153
263[]   投稿日:2016/12/05 00:33:53  ID:oh/e0eB5.net(46)
>264
代替的な解決策のご提示、ありがとうございます。
正直、クラスのnew/deleteオーバーライドを警告なしに無視することが make_shared() の仕様であるとは思いたくないです。

1154
デフォルトの名無しさん[]   投稿日:2016/12/05 00:43:42  ID:soEx3sdp.net(16)
>265
std::listなどのコンテナ関係が警告なしに無視するのは許せるの?
逆に言えば標準ライブラリの中でクラスのnew deleteがあればそれを使うなんてもの殆ど無いよ

1155
263[]   投稿日:2016/12/05 02:11:52  ID:oh/e0eB5.net(46)
>266
警告くらいは出してもいい気がしますが。
list<shared_ptr<T>> を使えばクラスのnew/deleteオーバーライドを呼ぶよう対処可能だけど、
そのshared_ptr<T>インスタンスをmake_shared<T>()で作ると要素をshared_ptrでラップした意図も台無しになる。

1156
デフォルトの名無しさん[sage]   投稿日:2016/12/05 03:07:21  ID:PDKg3SYv.net(2)
どいつもこいつもオブジェクトをJava化しようとするんだろうな

1157
デフォルトの名無しさん[sage]   投稿日:2016/12/05 07:38:41  ID:nBxFX+pd.net(6)
>仕様であるとは思いたくないです

だが仕様は確認しない。
そう誓ったに相違ない

1158
デフォルトの名無しさん[]   投稿日:2016/12/05 08:03:39  ID:soEx3sdp.net(16)
>267
何のためにクラスのnew deleteをオーバーロードしてるのか知らんけどスタックに構築するのはいいの?
std::list<T> a;って出来るのはいいの?
それらが良くてmake_shared<T>()がダメな理由が解らないよ。

1159
263[]   投稿日:2016/12/05 09:14:32  ID:oh/e0eB5.net(46)
>270
> 何のためにクラスのnew deleteをオーバーロードしてるのか知らんけどスタックに構築するのはいいの?

ん?オーバーロードじゃなくてオーバーライドの話してるんだけど。

Win32APIのGDI+ のクラスはすべてGdiplusBaseを基底クラスとして持っていて、
GdiplusBaseのnew/deleteオーバーライドがヘッダーファイル GdiPlusBase.h に定義されている。
何のためにオーバーライドしてるのかこっちが聴きたいくらい。

1160
デフォルトの名無しさん[]   投稿日:2016/12/05 10:16:56  ID:soEx3sdp.net(16)
>271
new deleteはオーバーライド出来ません

gdiplusは恐らくそのクラスをgdiplusのdllの中でnewしてポインタ返しユーザーにdeleteさせるような設計になってるからdllの中のnewとアプリケーションのdeleteが不一致になるのを防ぐ為だと思う。
だからアプリケーションコードの中で生成、削除する分には必ずしもオーバーロードされてるnew deleteを使う必要はないんじゃねえかな

1161
263[]   投稿日:2016/12/05 10:33:28  ID:oh/e0eB5.net(46)
>272
ここはC++相談室スレだから、憶測のデタラメな回答はやめましょう。
雑談はよそのスレでどうぞ。

1162
デフォルトの名無しさん[sage]   投稿日:2016/12/05 11:18:49  ID:AODxEeuP.net(6)
お前いったい何がしたいんだよ
反論できなくなったり、気に入らなかったりしたら
「雑談はよそのスレでどうぞ」
かよ
ことの発端はお前だろ
で、new delete の「オーバーライド」の話はどうなったの?

1163
デフォルトの名無しさん[]   投稿日:2016/12/05 11:20:32  ID:soEx3sdp.net(16)
>274
触っちゃダメな人だよ

1164
263[]   投稿日:2016/12/05 11:42:41  ID:oh/e0eB5.net(46)
new 演算子がヘッダーに書かれているのに dllの中で new するなどとデタラメなこと書いてるから門前払いさせてもらった。
このスレは、質問者の想定する前提条件を勝手に変更する読解力のない人がちょくちょく来るんだけど、何なの?
ほかのスレにこんな人いないよ。

1165
デフォルトの名無しさん[]   投稿日:2016/12/05 11:44:07  ID:soEx3sdp.net(16)
公式のexampleでもスタックに構築してる事から構築方法に特に制限は無い、(もし制限があるなら記述するか、factory関数内でのみこう)

1166
デフォルトの名無しさん[]   投稿日:2016/12/05 11:51:24  ID:soEx3sdp.net(16)
途中で書きこんでしまった。
通じる人に向けて書こうと思ったけど面倒くさくなったからいいや。

1167
デフォルトの名無しさん[]   投稿日:2016/12/05 12:02:47  ID:soEx3sdp.net(16)
C++とdllとnew deleteの関係性について理解してる人には説明の余地もないけど、DLLの中でnewっていうのは所謂factoryメソッドのようなもの。gdiplusならBitmap::FromFileとか中で構築した物の生ポインタを返してるね。
それをユーザーコードでdeleteするとnew deleteをオーバーロードしていなけれはnewはDLLの中でリンクされているライブラリのメモリ確保が呼ばれる。
deleteはアプリケーションでリンクされているライブラリのメモリ解放が呼ばれる。

自分の知識の無さを棚に上げてデタラメ呼ばわりしたことを恥じて貰うために詳細に説明してあげたよ。

1168
263[sage]   投稿日:2016/12/05 12:17:58  ID:oh/e0eB5.net(46)
>279
基底クラスが newやdeleteをオーバーロードすることの説明になってない。
あなたの言っていることは根本的にズレているんだが。
あなたが自分で書いた>270の質問に自分で回答してみたらどうか。

1169
デフォルトの名無しさん[sage]   投稿日:2016/12/05 12:22:37  ID:AODxEeuP.net(6)
>gdiplusならBitmap::FromFileとか中で構築した物の生ポインタを返してるね。

>272

>gdiplusのdllの中でnewしてポインタ返しユーザーにdeleteさせるような設計

には該当してないんですか?
頭大丈夫?

そのあとの説明も、お前のはタイプミスしているようだが、ともかく
お前の長々書き上げたその説明も
>272

>dllの中のnewとアプリケーションのdeleteが不一致になるのを防ぐ為だと思う。

を意味もなく長く書いただけにすぎないと思うが
まったくお前の行動は意味不明すぎて訳が分からない
否定しておいて自分で同じことを言いなおすのが趣味の人?

1170
デフォルトの名無しさん[]   投稿日:2016/12/05 12:28:33  ID:IcdzVsWl.net(4)
>281
いや、それ俺(同一人物)だから…
270の回答は良いんだよstd::vector<Bitmap> a;しても。

1171
263[sage]   投稿日:2016/12/05 12:35:24  ID:oh/e0eB5.net(46)
>282
頼むからデタラメ書いてスレを荒らすのをやめてもらえないか。

1172
デフォルトの名無しさん[]   投稿日:2016/12/05 12:42:20  ID:IcdzVsWl.net(4)
直接入れると配置newが無いってコンパイルエラーになるかもしらんけどね。

1173
デフォルトの名無しさん[sage]   投稿日:2016/12/05 12:53:16  ID:AODxEeuP.net(6)
>282
素で間違えたわ・・・・ゴメンゴ
ついでににmake_sharedも問題ないね
DLLの内部でnewされるものにmake_sharedは使えないからね

1174
263[sage]   投稿日:2016/12/05 12:54:28  ID:oh/e0eB5.net(46)
Bitmapはコピーコンストラクタがprivateになってるのでvector<Bitmap>を使えない。結果的にnew/deleteの問題を起こせないようになってた。

Bitmapをコンテナで使うには、生ポでいれるかshared_ptrでくるんで入れるしか選択肢がない。
前にも書いたが、stdやboostの場合、shared_ptrをmake_sharedで作るとnew/deleteの不整合問題が暗黙のうちに発生する。

1175
デフォルトの名無しさん[]   投稿日:2016/12/05 13:19:44  ID:MCpw3CLl.net(2)
>286
それは何が不整合になると言ってんだ?
new deleteのオーバーロードが使われないというだけなら問題ないという話をしてたわけだけど

1176
デフォルトの名無しさん[]   投稿日:2016/12/05 16:56:12  ID:rZWSQmpd.net(6)
>286
横レス失礼
そのBitmapとやらは、内部的にはHBITMAPだったりするのか?
コピコンがprivateってあたりが、そのように聞こえるんだが
だとしたらnew/deleteじゃなくCreateDIBSection/DeleteObjectだろ

1177
デフォルトの名無しさん[]   投稿日:2016/12/05 16:57:36  ID:rZWSQmpd.net(6)
いや、何でもない
忘れてw

1178
デフォルトの名無しさん[sage]   投稿日:2016/12/05 17:39:58  ID:IxGDT3As.net(2)
newのオーバーライドなんてできたっけ??

1179
デフォルトの名無しさん[]   投稿日:2016/12/05 18:23:28  ID:5HZvpDM+.net(2)
【被爆】治療法より原因を報道せよ!【死刑】


増える原因不明死 死因解明が追いつかない
(NHK・クローズアップ現代)

某看護師会の集まりで
「なぜ最近20代の突然死が急に増えたのか」
というテーマが議題にあがったそう。
みんな全く理由がわからなかったらしい。
1990年以降、被曝医学が
カリキュラムから追放された事情も大きい


たくさんの人があっけなく死んでいく
ベンチに座ったまま バスを待ちながら
説明のつかない死が多かった
多くの人が脳卒中や心筋梗塞を起こした
駅やバスの中で (『チェルノブイリの祈り』)


朝本浩文、自転車転倒死。(UAなど作曲、53)
小泉義仁、駅で脳梗塞。(スピリチュアルTV 51)
森岡賢、、心不全。     (元ソフトバレエ 49)
飯野賢治、心不全。    (株式会社ワープ 42)
今井洋介、心筋梗塞。(テラスハウス出演者 31)
杉崎由佳、急死。(『進撃の巨人』作画監督 26)

今井雅之54 盛田幸妃45 松来未祐38 泉政行35
宮田紘次34 黒木奈々32 丸山夏鈴21 椎名もた20

1180
263[]   投稿日:2016/12/05 19:02:40  ID:oh/e0eB5.net(46)
>290
>newのオーバーライドなんてできたっけ??

newはオーバーライドできる。さらに独自にクラス内でオーバーロードもできる。

世間では オーバーロード が使われることが多いが、オーバーライド を使うのが正しい。
オーバーライドは、 異なるクラスの同名メソッド
オーバーロードは、 同じクラスの引数違いの同名メソッド

new /delete を引数違いで複数定義すればオーバーロードになる。
多くの場合、newした場所を特定するデバッグ手段としてオーバーロードしているため、誤用が広まった。

1181
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:06:45  ID:Ij/A1A/c.net(8)
>290
そこは触れないでおきたい、おもしろそうだから。
あー、でも もう263逃げちゃったかな。

> ん?オーバーロードじゃなくてオーバーライドの話してるんだけど。
名言だな

1182
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:12:16  ID:Ij/A1A/c.net(8)
まだいたの?
盛り上がってくるの?

1183
263[]   投稿日:2016/12/05 19:18:05  ID:oh/e0eB5.net(46)
「コンテナに入れるクラスの実装を変えろ」という意見はごもっともだが、他から提供されたクラスなので勝手に書き換えできないケースも想定するべきだろう。

Gduplusは、MFCやと違ってcyginやmingw向けにもクラスライブラリが提供されている。皮肉交じりに言えば、
意のままにならない他社製クラスをC++のコンテナやテンプレートで扱うためのスキルを磨くのに、Gdiplusのクラスが一役買うかもしれない。

>293
何を対象として話しているか曖昧になるので、オーバーロードの誤用は控えるべき。ヘッダーを見ればすぐわかることだが、
そもそもGdiplusBaseはサイズ引数1つだけをとる基本の new, new[], delete, delete[] がオーバーライドされているだけであり、オーバロードはされてない。

1184
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:19:21  ID:HK8B5iWy.net(8)
>260は最初からオーバーライの話をして
そいつの相手をしている人は最初からオーバーロードの話をしているんだろ。
最初から議論がかみ合っていない、やっぱり2chだよな。議論はついったーとかでだな

1185
デフォルトの名無しさん[]   投稿日:2016/12/05 19:23:45  ID:TTRwCBA5.net(4)
まだnew deleteのオーバーライドなんて言ってんのかよ。
お前はoperator+書くときもオーバーライドって言うのか

1186
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:28:52  ID:HK8B5iWy.net(8)
>297
>260はnew deleteのオーバーロード(operator+のオーバーロードじゃなく)の話じゃなく
継承でオーバーライドされたnew deleteの話をしているんだろ

1187
デフォルトの名無しさん[]   投稿日:2016/12/05 19:29:18  ID:TTRwCBA5.net(4)

1188
263[sage]   投稿日:2016/12/05 19:35:38  ID:oh/e0eB5.net(46)
>297
同一クラス内で operator+ がひとつだけならオーバーライド。
同一クラス内で operator+ が複数あればオーバーロード。

オーバーロードという語を誤用しても普通は問題ない。
誤用すると混乱する話題だからあえて指摘した。

1189
デフォルトの名無しさん[]   投稿日:2016/12/05 19:37:03  ID:2NaB5jfD.net(16)
>298
それが誤用だって言ってんだよ
お前は派生クラスで基底クラスのvirtualではない関数と同じ名前付けて隠した場合もoverrideって言うのかよ。
そうだとしたら根本的に話通じない相手だな。

1190
デフォルトの名無しさん[]   投稿日:2016/12/05 19:47:51  ID:HK8B5iWy.net(8)
>301
俺は>298のように>263(>260?)のオーバーロードとオーバーライドの違いと理解したが
でも、>300からするとなんか違ったみたいだが。

1191
デフォルトの名無しさん[]   投稿日:2016/12/05 19:53:49  ID:2NaB5jfD.net(16)
>302
最初に述べたようにnew deleteはオーバーライド出来ない。
クラス内に書くnew deleteもオーバーロード。
グローバルのnew deleteの他にそのクラスだけで使うnew deleteを多重定義できるからオーバーロード。
そのクラスを派生して基底のメンバーを使用したからと言ってオーバーライドされてるなんて言わない

1192
デフォルトの名無しさん[sage]   投稿日:2016/12/05 19:53:59  ID:HK8B5iWy.net(8)
Win32APIのGDI+ のクラスや 、それのGdiPlusBase.h をよく見てみないと
>263(>260?)が言っているnew/deleteことが分からんのかもしれないが。
当然、俺は全く見ていない

1193
デフォルトの名無しさん[]   投稿日:2016/12/05 19:59:25  ID:Ij/A1A/c.net(8)
263 俺がC++標準規格だ

1194
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:07:08  ID:lQvX1MVr.net(12)
>300
なんだよその謎基準w

1195
263[sage]   投稿日:2016/12/05 20:25:56  ID:oh/e0eB5.net(46)
例えると、インターネットとイントラネットの違いみたいな感じ。
override = inter-
overload = intra-

内と外の境界をどこに置くかで定義が変わる。

1196
デフォルトの名無しさん[]   投稿日:2016/12/05 20:31:39  ID:SJelErcp.net(2)
こんばんは。

このスレ見ていますと、
C++は、難しい言語なんですね。

覚えてしまえば便利なんだけど
誰しも完全には覚えていない
言語のように思います。

私は記憶力の悪い馬鹿なので
頭のよくなる薬ができるまで
C++は触らないようにいたします。

1197
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:36:21  ID:q1I0LUvJ.net(2)
まもなくAIで頭の悪いやつは何もしなくて良くなるからな

1198
デフォルトの名無しさん[sage]   投稿日:2016/12/05 20:41:41  ID:lQvX1MVr.net(12)
そもそもstaticじゃなかったっけ?

1199
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:03:57  ID:Xa5pMyWr.net(2)
newもdeleteもoverrideできないというのは間違い
そもそもnewもdeleteも非staticなメンバとして定義できない
だからnewとdeleteはoverloadはできるが、そもそもoverrideどうのこうのという議論自体がおかしい

ID:oh/e0eB5は完全に勘違いしててクラス内に書いてあるメソッドをoverrideできるんじゃなくて仮想メソッドをoverrideできるの
こういう人ってクラスのメンバを全部virtual宣言したり必ず仮想デストラクタをつけるよね
C++の言語仕様を全く理解してないと言っても過言ではないが、Javaとかから流れてきた人なのかな

1200
263[sage]   投稿日:2016/12/05 21:15:20  ID:oh/e0eB5.net(46)
>311
抽象的なoverrideの話は、言語仕様に依存する static や virtual といった属性と何の関係もない。
あなたが、既定のグローバルな new や delete がどのように定義されているかさえ知らないってのはよくわかった。

1201
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:21:35  ID:ddMLk6te.net(2)
>new や delete がどのように定義されているかさえ

C++のreplaceable functionってよく理解してないんだ
アホな俺に教えて

1202
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:25:06  ID:0ETq54/D.net(2)
>312
違う
overrideというのはサブクラスからベースクラスのメソッドを上書きすること
staticメソッドでは非staticメソッドと違って暗黙的にクラスのインスタンスを受け取ることがないためクラスの話ですらない
ADLについて議論するならまだしも、クラス内に書いたら強制的にstaticにされてしまうnewやdeleteをクラスという枠組み前提で話すのは間違いだよ
そもそもクラスのメンバ関数と言うものが何かもわかってないのかな?

1203
263[sage]   投稿日:2016/12/05 21:27:27  ID:oh/e0eB5.net(46)
特定の言語仕様ではなく、厳格なオーバーライドとオーバーロードの定義の話をしている。

<new> をインクルードして グローバルな new や delete を置き換えるのはオーバーロード。
グローバルなnew や deleteを呼ばないようクラスのnew deleteで置き換えるのはオーバーライド。
さらにそのクラスでnew や deleteの引数違いなメソッドを複数提供すればオーバーロード。

1204
263[sage]   投稿日:2016/12/05 21:32:31  ID:oh/e0eB5.net(46)
>314
グローバルの new, delete は暗黙の基底クラスの静的メソッド扱い。名前なしだからそう見えないだけ。

1205
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:33:42  ID:nEyLAjLt.net(8)
俺は頑張った
もうこれ以上にわかりやすい説明は無理
誰か変わってくれ

1206
デフォルトの名無しさん[]   投稿日:2016/12/05 21:38:26  ID:2NaB5jfD.net(16)
>317
無理
無知はバカとは思わないがアレは本当にバカってやつだと思う

1207
263[sage]   投稿日:2016/12/05 21:43:39  ID:oh/e0eB5.net(46)
オーバロードを誤用するのは別に構わないが、「new. deleteはオーバライドできない」というのは明らかな間違いだから訂正した方がいい。
オーバライドすることなくクラスの new delete を規定の名前なしグローバルのnew, deleteから置き換えることなどできないからだ。
オーバロードとオーバライドの定義をちゃんと理解せずに回答するのはもうやめてもらえるか?

1208
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:46:15  ID:kGsjhS/J.net(10)
オーバーロードは同じ名前で引数や型引数の違う関数を定義し、静的な型推論で呼び分けること
operator newは型引数と実引数でオーバーロードされた関数
オーバーライドは派生クラスが親クラスの仮想関数の挙動を上書きする事

1209
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:49:30  ID:kGsjhS/J.net(10)
operator newのやっていることは技術的にはテンプレートの特殊化と同じ

1210
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:50:58  ID:GeoPwQ8R.net(2)
>319
あなたにとって
class Base {
  static void doSomething();
};

class Sub : public Base {
  static void doSomething();
};
はオーバーライド?オーバーロード?

1211
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:54:27  ID:ryWJUcx/.net(2)
オーバーヒート

1212
263[sage]   投稿日:2016/12/05 21:54:33  ID:oh/e0eB5.net(46)
>320
オーバーロードでは、静的な型推論の優先付けできない。
オーバーライドすることにより、はじめて静的な型推論の優先付けが成立する。
まず自分のメソッドを、なければ親のメソッドを辿って探す型推論の優先付け。

1213
デフォルトの名無しさん[sage]   投稿日:2016/12/05 21:56:27  ID:nEyLAjLt.net(8)
オーバーライドは静的でなく動的解決なのですが…

1214
263[sage]   投稿日:2016/12/05 21:58:11  ID:oh/e0eB5.net(46)
>322
少なくともオーバーライドである事は確か。親子関係による優先付けが発生するから。
オーバロードの誤用も可。

1215
デフォルトの名無しさん[]   投稿日:2016/12/05 22:07:57  ID:rZWSQmpd.net(6)
  static void doSomething() override;
できるわけないやろw

1216
263[sage]   投稿日:2016/12/05 22:16:44  ID:oh/e0eB5.net(46)
各言語仕様としての厳格な定義と、オブジェクト指向における定義が混在している。

1217
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:19:29  ID:nEyLAjLt.net(8)
オーバーライドはオブジェクト指向と一切関係内が…

1218
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:23:15  ID:kGsjhS/J.net(10)
直接関係ないのはオーバーロードじゃね

1219
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:27:22  ID:+86vS9TV.net(6)
「演算子のオーバーロード」で丸暗記しとこうかな‥

1220
263[sage]   投稿日:2016/12/05 22:32:43  ID:oh/e0eB5.net(46)
ざっくりいうと、メソッド推論の優先付けを伴わないのがオーバーロード。
親子関係などによるメソッド推論の優先付けを伴うのがオーバーライド。

オーバーライドとオーバーロードは同時に成立しうる。排他的ではない。

1221
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:34:17  ID:x3Qm2Sdl.net(2)
規格書を見ながら書き込みした方がいい

1222
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:36:02  ID:+86vS9TV.net(6)
>332
new から離れていいから,オーバーライドとオーバーロードが同時に成立するコードを見せてくれ

1223
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:37:53  ID:kGsjhS/J.net(10)
オーバーライドはそれ自体では型推論なぞしないだろうに。
究極的には呼び出し先がインスタンス毎に変わるのだから。

1224
デフォルトの名無しさん[]   投稿日:2016/12/05 22:38:15  ID:2NaB5jfD.net(16)
>334
それは普通に成立するぞ

1225
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:41:20  ID:W20d9Bun.net(2)
規格にはオーバーロードともオーバーライドとも書いてない

もともと中途半端な動作な訳だからオブジェクト指向的には~とかの議論でさえする意味ないとおもうが

C++は自身のこの機能についてどっちとも言ってない、だからどっちでもないでいいだろ

1226
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:48:00  ID:lQvX1MVr.net(12)
>315
厳格な話をするなら規格が必要であって、それはすなわち特定の言語に絞って語らないと無理

1227
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:48:07  ID:+86vS9TV.net(6)
>336
オーバーライドは引数の種類が変わらない,オーバーロードは引数の種類が変わる.
だから両立は出来ないはずなんだが

1228
デフォルトの名無しさん[]   投稿日:2016/12/05 22:48:15  ID:2NaB5jfD.net(16)
>337
普通に”Overloaded operators”の中でnew deleteが書かれてるけど

1229
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:50:10  ID:lQvX1MVr.net(12)
>315
厳格で言語によらない定義だというなら根拠を示すべきだ。

1230
デフォルトの名無しさん[]   投稿日:2016/12/05 22:51:57  ID:2NaB5jfD.net(16)
>339
俺とお前で両立の定義が違ったかもな
struct A{
virtual void a()=0;
virtual void a(int)=0;
};
これを構築できるように派生したらaはオーバーロードしてるしオーバーライドもしてる。という意味で俺は両立出来ると言った

1231
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:52:22  ID:lQvX1MVr.net(12)
>339
いや、一度オーバーロードしたものを(引数の種類は変えずに)サブクラスでオーバーライドすることはできる

1232
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:53:46  ID:nEyLAjLt.net(8)
>342
それはオーバーロードであってオーバーライドの例ではない

1233
デフォルトの名無しさん[]   投稿日:2016/12/05 22:54:51  ID:2NaB5jfD.net(16)
>344
構築できるように派生するにはオーバーライドするしかないだろう?

1234
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:58:01  ID:lQvX1MVr.net(12)
どっちにしてもstaticメンバ関数をオーバーライドなんて語義矛盾だよ。
obj.func(); という式においてobj の動的な型に応じて実際の関数が呼ばれることをオーバーライドと言う。

1235
デフォルトの名無しさん[sage]   投稿日:2016/12/05 22:58:36  ID:nBxFX+pd.net(6)
>315
><new> をインクルードして グローバルな new や delete を置き換え

置き換えるのにどうしてインクルードが必要なのか

1236
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:06:27  ID:kGsjhS/J.net(10)
overrideじゃなくhideになるよね
仮想関数でない奴は

1237
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:11:21  ID:nBxFX+pd.net(6)
>337
規格の10.3にはoverridesという単語が出てきてかつ斜字体なので用語なのだが何を言っているんだお前は
因みにC++98の時からある
まさか規格にカタカナは書かれていないとでも言いたいのか

1238
デフォルトの名無しさん[]   投稿日:2016/12/05 23:24:58  ID:Ij/A1A/c.net(8)
つーか、釣りだろ。
日付変わってID変わったらいなくなるよ。

1239
263[sage]   投稿日:2016/12/05 23:31:31  ID:oh/e0eB5.net(46)
>350
釣ってなどいない。
オーバーロードが既存のメソッドを置き換えできるのは、オーバーライドが行われたから。

>347
失礼。<new>は必要ない。nothrowの制御と勘違いしてた。

1240
デフォルトの名無しさん[]   投稿日:2016/12/05 23:41:10  ID:2NaB5jfD.net(16)
C#でも派生先で同じ名前付けるときoverrideとnewが選べるというのに

1241
263[]   投稿日:2016/12/05 23:56:17  ID:oh/e0eB5.net(46)
日付変わる前に勝利宣言しとくわ。

1242
デフォルトの名無しさん[sage]   投稿日:2016/12/05 23:59:54  ID:kX3Q4svv.net(2)
今来たけど、「C++の話」をみんなしてる中に「オブジェクト指向一般の話」をしだしたってこと?
抽象化したオブジェクト指向は人によって考え方に差があるから用語の定義とかについて論ずるだけ無駄

1243
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:06:10  ID:QfNOYQI4.net(2)
人はなぜ
「現象AをBと解釈することもできる。」で満足すべきところで
「AはBだ!」と主張してしまうのか。

1244
デフォルトの名無しさん[]   投稿日:2016/12/06 00:11:44  ID:VyUdPje1.net(2)
良くある誤用だから普通に流してレスしてたのにオーバーライドの話してるんだけどと突っかかってきたのはバカの方だからね

1245
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:20:55  ID:ed0lUfqA.net(2)
オバマが到☆来と聞いてやってきました

1246
デフォルトの名無しさん[sage]   投稿日:2016/12/06 00:27:15  ID:Eq2L1D85.net(2)
>353 日付変わっても続けられる際はコテハンそのままにするなどしてあなた様からのレスであることを特定できるようにおねがいします。

1247
デフォルトの名無しさん[sage]   投稿日:2016/12/06 01:02:27  ID:0b/2xA1k.net(4)
>353
さっぱりわからんが、勝利おめでとう!

1248
デフォルトの名無しさん[sage]   投稿日:2016/12/06 01:14:21  ID:0b/2xA1k.net(4)
>354
オーバーロードやオーバーライドはオブジェクト指向の中で定義されている言葉なのか?
もう、コンピュータサイエンスの言葉としてのオーバーロードやオーバーライドの話
をしているような感じからな
俺、情報系の学科には縁遠いところの出だから、ズバリコンピュータサイエンスの知識
は幼稚園児レベルになるからな。。大学レベルにはほど遠い,orz
(ほんとはコンピュータサイエンスは超重要なんだろうけどな)

1249
デフォルトの名無しさん[sage]   投稿日:2016/12/06 02:23:43  ID:PnhmU0S2.net(4)
大企業なメーカーの工場は規則規則アンド規則で窮屈そうだったわ

1250
デフォルトの名無しさん[sage]   投稿日:2016/12/06 02:24:21  ID:PnhmU0S2.net(4)
誤爆

1251
デフォルトの名無しさん[sage]   投稿日:2016/12/06 03:02:41  ID:Wqo8M9+m.net(2)
昨日は爆釣だったんだな
俺も参加したかったわー

1252
デフォルトの名無しさん[sage]   投稿日:2016/12/06 04:15:23  ID:8D/vbLGJ.net(2)
オーバーロードの総集編が映画化されるらしいな
誰が見に行くんだろうな

1253
デフォルトの名無しさん[sage]   投稿日:2016/12/06 05:01:33  ID:ig7i7qkA.net(2)
cの関数ポインタみたいに関数オブジェクトの配列を実行時に動的に変えて実行するにはどうすれば良いのでしょう
Boost使えばc++11のlambdaが使えなくても出来ますか?

1254
デフォルトの名無しさん[]   投稿日:2016/12/06 07:58:54  ID:qXZeYWw/.net(4)
>365
関数オブジェクトを引数にとる関数はテンプレートであり、関数オブジェクトの型ごとに別々の関数としてコンパイルされるのでファイルサイズも大きくなる。
配列で実行したい場合は、基底クラスのpublicな仮想関数を実装した派生クラスのインスタンスをテンプレートでない関数に参照なりポインタなりで渡すといい。

1255
デフォルトの名無しさん[]   投稿日:2016/12/06 08:04:00  ID:EqtjFn+M.net(2)
>365
std::function

1256
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:32:25  ID:QJVgZbOV.net(6)
>365
その制約はどこからくるの?

1257
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:33:39  ID:S+t491v8.net(4)
なんで質問に質問で返すかね

1258
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:42:09  ID:MylKYtcA.net(2)
>369
要件出し全否定か

1259
デフォルトの名無しさん[sage]   投稿日:2016/12/06 13:43:39  ID:S+t491v8.net(4)
>370
>365の仕様を>368が実装するわけじゃないのでその反駁は無意味

1260
デフォルトの名無しさん[sage]   投稿日:2016/12/06 14:07:32  ID:QJVgZbOV.net(6)
単に「不思議な制約だなあ」と思っただけで他意はないよ

1261
デフォルトの名無しさん[sage]   投稿日:2016/12/06 14:09:34  ID:Y8nBMTUH.net(2)
ちょっと試してみた
std::bindとstd::mem_fnは面倒っちいけどメンバ関数のポインタだから仕方ない

http://ideone.com/91JDrF

この場合std::unique_ptrはコピーコンストラクタがdelete指定になっているので使えない

1262
デフォルトの名無しさん[sage]   投稿日:2016/12/06 16:04:03  ID:EzooQ0Q1.net(2)
結局は関数ポインタなのか
関数オブジェクトの配列は各要素がnaitiveコード列かと思った

1263
デフォルトの名無しさん[sage]   投稿日:2016/12/06 20:10:27  ID:QJVgZbOV.net(6)
Advent

1264
デフォルトの名無しさん[sage]   投稿日:2016/12/06 20:15:35  ID:ndfTDeJn.net(2)
shared_ptrを使う奴は大馬鹿
ということだな

1265
デフォルトの名無しさん[sage]   投稿日:2016/12/06 21:42:11  ID:7XmOARyR.net(2)
>376
お前アスペか?unique_ptrを使ってみたところbindでエラーが出たから
仕方なくshared_ptrを使ったってことだろ
生ポインタでも当然構わない

http://stackoverflow.com/questions/20268482/binding-functions-with-uni...
http://qiita.com/rinse_/items/2873fa75e63153dd6f85

こういう件もあるしいろいろ面倒なんだろ
でも少し考えてみると当然なんだよな
関数にunique_ptrを渡すと所有権が呼び出し先に移ってしまいいろいろ面倒なことになる

1266
366[]   投稿日:2016/12/06 21:52:31  ID:qXZeYWw/.net(4)
私は>366 を書いた者だが、>367 のstd::functionが正解。>366は古い解決方法。
std::bindとstd::mem_fnは必要ない。当然、shared_ptr も必要ない。

http://ideone.com/q8ngfp

1267
デフォルトの名無しさん[sage]   投稿日:2016/12/06 22:10:33  ID:ltofPI3U.net(2)
>生ポインタでも当然構わない

ナマポで構わないところにshared_ptrを持ち出すことが不適切と言われている
という認識には至らなかったようだ

1268
デフォルトの名無しさん[sage]   投稿日:2016/12/07 02:07:23  ID:GZUHYq4p.net(4)
>379
いやだからさ・・・classをnewしなきゃらならないでしょ今回の場合
誰がdeleteするかって話をしてるんだが
deleteが面倒だからスマポ使ったわけでしょ

1269
デフォルトの名無しさん[sage]   投稿日:2016/12/07 02:13:54  ID:GZUHYq4p.net(4)
ごめん本当だ
new不要だなこれ

http://ideone.com/AeaHf4

1270
デフォルトの名無しさん[sage]   投稿日:2016/12/07 03:19:04  ID:ujGMInBH.net(2)
>Boost使えばc++11のlambdaが使えなくても出来ますか?
c++11が使えなくてBoostでって話ならboost::functionあたりで適当に

1271
デフォルトの名無しさん[sage]   投稿日:2016/12/07 10:13:47  ID:aRBhCK1g.net(6)
質問です。
winsock2でTCP IP通信をするプログラムを勉強しているのですが、
クライアントプログラムを立ち上げていないのにも関わらず、listen(serverSock,5);の戻り値が0になります。
なぜでしょうか?listen(serverSock,5)の引数を間違えているのでしょうか?
また、listen関数のタイムアウト時間は何秒程度に設定されているのでしょうか?
開発環境はVS2015,VC++です。必要があれば追記します。

1272
デフォルトの名無しさん[sage]   投稿日:2016/12/07 10:51:22  ID:eOxcQ614.net(2)
接続待ちの開始なんだから、クライアント立ち上げる前に
0(成功)になって正しいんじゃ?

1273
383[sage]   投稿日:2016/12/07 12:50:14  ID:aRBhCK1g.net(6)
acceptが実際に受付待ちをするみたいでした。
勘違いしていました。ありがとうございます

1274
デフォルトの名無しさん[sage]   投稿日:2016/12/07 18:15:44  ID:+0olbaDa.net(2)
受付待ちという表現がいまいちだな
listenしたら受け付けはオペレーティングシステムが行う
アプリが固まっていてもクライアントからの接続要求は処理される
acceptは接続をオペレーティングシステムシステムから受け取るだけ
接続要求がなければ無期限に待つ

1275
デフォルトの名無しさん[]   投稿日:2016/12/07 18:37:28  ID:1BXK2gQc.net(4)
初学者はC++をやるまえにCを触っておいた方が良いのでしょうか?

1276
383[sage]   投稿日:2016/12/07 18:47:21  ID:aRBhCK1g.net(6)
>386
勉強になりました。ありがとうございます

1277
デフォルトの名無しさん[]   投稿日:2016/12/07 19:05:18  ID:iM29S6qT.net(2)
>387
「やるまえ」でなくても、同時でおk
同時でCだけでなくアセンブラも必要

1278
デフォルトの名無しさん[sage]   投稿日:2016/12/07 19:22:50  ID:lJ3XWqgd.net(12)
話蒸し返して悪いけど
>286は間違っているからね
GDIplusのBitmapをmake_sharedしても問題ない

make_sharedはグローバルなアロケーターを使ってBitmapを確保するし
また、グローバルなアロケーターを使ってdeleteするから
整合性は保たれる
Bitmapは基底クラスにGDIplus独自のnew/deleteを持っているけど
make_sharedした場合は、これらは使われない
だから問題は起きない
Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
クラス定義のdeleteを使わなければならないが
Bitmapの生成時にmake_sharedを挟み込む余地はないので
初めっから使えないし、問題は起きない

Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
使い手が自分でdeleteするわけだけど、この時、DLLとアプリの間で
new/deleteが不一致になったらマズいので、自前のdeleteが定義してある
普通に delete bitmap; としても問題が出ないようにね
で、deleteを独自のものにしたのなら、newも独自のものに定義しとかないとマズいよね
ってことで、newも独自なものに定義してある

普通にnew/deleteした場合や、ナマポをshared_ptrに入れた場合は
クラス定義のnew/deleteが使われるので、これはこれで問題がない

常に確保した時と同じ方法で解放されるので問題が起きないって理屈

1279
デフォルトの名無しさん[sage]   投稿日:2016/12/07 19:26:27  ID:lJ3XWqgd.net(12)
ちょっとアレな部分を補足しておく

>Bitmap::FromFileのように、DLL内でBitmapをnewしてナマポを返す場合
>クラス定義のdeleteを使わなければならないが
>( Bitmap::FromFile内部で行われる )
>Bitmapの生成時にmake_sharedを挟み込む余地はないので
>初めっから使えないし、問題は起きない

1280
デフォルトの名無しさん[]   投稿日:2016/12/07 19:39:19  ID:1BXK2gQc.net(4)
>389
ありがとうございます

1281
デフォルトの名無しさん[]   投稿日:2016/12/07 19:52:06  ID:Ao5egMeL.net(2)
C++の仕事してて、
アメリカ人やイギリス人の
作ったプログラムを
よみながら直してるけど
さっぱりわかりません。

とりあえず見るのが20万ステップで
ドキュメントはないです。
ささやかなコメントが頼りです。

勉強しながら見てますけど
どう見てもぐちゃぐちゃです。
もう辞めたいです。
つか辞めます。

1282
デフォルトの名無しさん[]   投稿日:2016/12/07 20:20:42  ID:2yTgyuYL.net(14)
正直なところ、>390,391にある「DLL内でBimapをnewする」という説明が何に基づくのか分からない。
問題あるかどうかはクラスを提供するマイクロソフトが判断すること。
ヘッダーを見る限りvoid* 型別名 GpImage* のポインタが返されてることだけがわかる。
>390,391がマイクロソフト社のソースを実際に見て確認したのなら信頼していいだろう。

1283
デフォルトの名無しさん[sage]   投稿日:2016/12/07 20:35:25  ID:pN2ME9Zl.net(4)
>390
Gdiplusが配置newを使ってるせいでDEBUG_NEWが使えなくて面倒くさいなと思っていたが、
そんな理由だったのか。
いままでnew/deleteの問題があるからDLLのインターフェースはどうしてもC++っぽくない形に
せざるを得なかったんだけど、そんな手も使えるんだな。参考になった。

1284
デフォルトの名無しさん[]   投稿日:2016/12/07 20:37:31  ID:2yTgyuYL.net(14)
クラス独自の new/delete が呼ばれずじまいなことが正しいかどうかって話してたのに、またもやズレた話になってきた印象。
>390,391が情報源を示してくれれば、ある程度の説得力は得られるだろうが、
この人は、delete とデストラクタを混同して語っている気がしてならなない。

1285
デフォルトの名無しさん[]   投稿日:2016/12/07 20:48:59  ID:2yTgyuYL.net(14)
長文ででたらめ書く人って何なの? >395みたいに鵜呑みにする人出てくるし。

1286
デフォルトの名無しさん[]   投稿日:2016/12/07 20:51:11  ID:uSFo19YS.net(10)
お、すぐ出てきたなw

1287
デフォルトの名無しさん[]   投稿日:2016/12/07 20:55:48  ID:uSFo19YS.net(10)
newオーバーライド君、最後の方ネタに見せかけて逃げたと思ってたけど、まだ理解してなかったとは救いようがないな。

1288
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:03:14  ID:pN2ME9Zl.net(4)
でたらめなのか。>390で間違ってるのはどっち?それとも両方?
・Gdiplusはそんなことしていない
・自前のnew/delete定義でもDLL境界の問題を隠蔽することはできない

1289
デフォルトの名無しさん[]   投稿日:2016/12/07 21:17:36  ID:uSFo19YS.net(10)
>400
gdiplusbase.hでググれば

1290
デフォルトの名無しさん[]   投稿日:2016/12/07 21:17:42  ID:2yTgyuYL.net(14)
このスレに書き込んだ人は自身のソースレビュー能力を晒すことになる。
このスレがワッチョイ非対応であることを八百万の神に感謝し、今日という日が終わるのを待て。

1291
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:21:58  ID:KapaWVji.net(2)
学会なら追放ものだよ

1292
デフォルトの名無しさん[]   投稿日:2016/12/07 21:31:26  ID:uSFo19YS.net(10)
>400
あと、newオーバーライド君はnew deleteのDLL境界の問題について一ミリも理解してないし、理解する気もないみたいだから聞いても仕方ないよ

1293
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:36:23  ID:lJ3XWqgd.net(12)
>クラス独自の new/delete が呼ばれずじまいなことが正しいかどうかって話してたのに、
>またもやズレた話になってきた印象。

Bitmap bmp(〜);
とした場合はどうなんだねチミ
この場合はクラス定義のnew/deleteは呼ばれないぞ
スタック上に作ることがOKなら
クラス定義のnew以外の方法で確保した領域にBitmap置くのも自由だろ
メモリ確保/解放の整合性さえあってればな
スタックがOKでmake_sharedがダメな理由がどこにある?

1294
デフォルトの名無しさん[]   投稿日:2016/12/07 21:47:16  ID:5VlRXYq6.net(2)
>402
一対多で勝利を収めた方ですよね?その偉業と名声を語り継ぐべくコテハン付けるべきだと思います!
この人の言葉なら… と周囲からの反応も違った物になると思いますので。

1295
デフォルトの名無しさん[]   投稿日:2016/12/07 21:50:16  ID:2yTgyuYL.net(14)
>405
>スタックがOKでmake_sharedがダメな理由がどこにある?

それを言い出すとクラス独自なnew/deleteの存在意義を否定することになるけど、
それでいいかどうかはクラス利用者ではなくクラス設計者が判断すべきことじゃないかな。
あなたがあえてマイクロソフトに代わってGDI+クラスを保守サポートする覚悟があるなら、ぜひ勝利宣言なさってください。

1296
デフォルトの名無しさん[sage]   投稿日:2016/12/07 21:57:37  ID:lJ3XWqgd.net(12)
ではこうしようか?
new/deleteを独自定義しているhoge_tクラスがあったとしよう

struct piyo_t
{
  int reference_counter;
  hoge_t hoge;
};
auto piyo = new piyo_t;

この場合、hoge_tで独自定義したnew/deleteは呼ばれないが、これはどうするんだ?
C++はこーゆー入れ子の構造体を認めているし
実際make_shared内で起こっていることもコレなわけ
これを一切禁止するときは、コンスラクタ/デストラクタを隠す
逆にコンストラクタ/デストラクタが公開されているということは
こーゆーのを認めているということ

1297
デフォルトの名無しさん[sage]   投稿日:2016/12/07 22:08:01  ID:lJ3XWqgd.net(12)
>それを言い出すとクラス独自なnew/deleteの存在意義を否定することになるけど、

何故そうなる?
存在意義は>390で書いた
new/deleteで不整合が発生しないようにするため

>それでいいかどうかはクラス利用者ではなくクラス設計者が判断すべきことじゃないかな。

コンストラクタが公開されている以上、どこに生成するかはプログラマの自由
スタックがOKなのにmake_sharedがダメな理由など無い
ただし、DLL内で生成されたものに関しては、クラス定義のdeleteを使ってくださいってだけ

1298
デフォルトの名無しさん[]   投稿日:2016/12/07 22:08:12  ID:2yTgyuYL.net(14)
>408
私ではなくhoge_tクラス設計者にご確認のうえ、勝利宣言をどうぞ。

1299
デフォルトの名無しさん[]   投稿日:2016/12/07 22:16:10  ID:uSFo19YS.net(10)
普通に考えてクラスのメンバーに出来ないとかそんな致命的な制限があるならドキュメントに書いてあるから。

1300
デフォルトの名無しさん[]   投稿日:2016/12/07 22:30:57  ID:2yTgyuYL.net(14)
コンパイルが許可されたのだから安全性も担保されたことにしようという、大胆な提案ですね。よくわかります。

1301
デフォルトの名無しさん[sage]   投稿日:2016/12/07 23:37:18  ID:lJ3XWqgd.net(12)
>411も言っているが、もしできないのなら、ドキュメントに書いてあるはず
コンストラクタを公開しているのに
スタックには作れません、構造体で入れ子にできません、make_sharedは使えません
っていうんなら、ドキュメントに書いておかないと最大限マズイ
だからお前はMSDNを漁ってmake_sharedが使えないって文章を探してこい
書かれてない場合は通常の発想、使えるってこと

1302
デフォルトの名無しさん[]   投稿日:2016/12/08 00:28:40  ID:Dl6k+dfy.net(2)
MSDNではスタックに構築してるサンプルだらけだから、少なくともスタックには構築できる。
そしてスタックのアドレスの範囲を決めうちし、それ以外のアドレスに構築されたら故意に不具合が発生するような実装をしない限りスタック以外に構築しても問題ない。
そんなアホみたいな実装をしているという大胆な主張ですね。わかりません。

1303
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:22:15  ID:V15cSFDl.net(4)
気楽な問題
glslのような、スウィズル文法をC++で定義することはできるか?
glslの例
float3 v = float3(1,2,3);
float3 y = v.yyy; // y = (2,2,2)
実用上、float3クラスに余計な成分は持たせたくない
class float3{public : float x,y,z; ...(?)...};
(全てのスウィズルに対応する成分をもたせることで可能だが、消費するメモリ量が組合せ爆発を起こす)
逆に、メモリが増えなければ成分は持たせてもよいから
サイズ0の中間クラスを定義してそこからキャストすればできそうな気がしたがどうだか?

1304
デフォルトの名無しさん[]   投稿日:2016/12/08 09:43:44  ID:f999g3ye.net(2)
>415
struct A{};
sizeof(A)==1
だから。
やるとしたら
struct XXX{float x,y,z;operator vec3(){return vec3(x,x,x);}}
のような型を(3要素だけなら)27通り作ってunionで持たせるとか。

1305
デフォルトの名無しさん[sage]   投稿日:2016/12/08 09:48:16  ID:V15cSFDl.net(4)
>416
ああvec3でしたな
あとunion という手がありましたねえ
考え直してみます

1306
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:31:27  ID:iaOJa8zn.net(4)
その文法だとなんかしらを27通り書く必要が出てくる

C++ならC++らしく書くべきじゃん

https://ideone.com/N697kB

1307
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:38:19  ID:vGsZ5jRR.net(8)
それEffective Modern C++にも載ってたな
templateのインスタンス化を利用してメンバの組み合わせをコンパイル時に決定するのもあった

1308
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:40:05  ID:vGsZ5jRR.net(8)
ついでに

typedef float float3::*member_type;



using member_type = float float3::*;

と書いても同じだね

1309
デフォルトの名無しさん[]   投稿日:2016/12/08 13:53:59  ID:dGX7aDi+.net(4)
>418
その書き方は使う方が流石に面倒すぎて無くない?

1310
デフォルトの名無しさん[sage]   投稿日:2016/12/08 13:57:52  ID:vGsZ5jRR.net(8)
>421
わかってないなあ
もし3^3通りでなくて10^10通りだったらどうなるかって話なのに

1311
デフォルトの名無しさん[]   投稿日:2016/12/08 14:00:52  ID:dGX7aDi+.net(4)
>422
それでも
float3 b(a.x,a.z,a.z);
の方が書くの楽なのは本末転倒だと思うよ

1312
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:11:00  ID:WXYhvZot.net(2)
やりたいことはglslコードの流用なので
最大でも4^4通りです
パターン化できれば書き出しは別にプログラムすればいいと思っています
>416案でできそうな詰まりそうな感じです

1313
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:22:13  ID:vGsZ5jRR.net(8)
>423
この場合はな
メンバ関数を含んでたりしたらまた違うんだよ
そういう場合constexprの威力を感じる
C++11はconstexprの用途が大幅に制限されてたのがC++14で目覚めたしな
unionも目覚めたんだぜ

1314
デフォルトの名無しさん[sage]   投稿日:2016/12/08 14:52:06  ID:iaOJ