1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ] The C++ Standards Committee www.open-std.org/JTC1/SC22/WG21/ Wikipedia https://en.wikipedia.org/wiki/C%2B%2B14 C++11/C++1y 18 toro.2ch.net/test/read.cgi/tech/1365073520/
2 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 08:53:28.04 ] 18 ブギ、未来を俺にくれ
3 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 11:29:11.92 ] >>2 残念だ、その未来に君はもういないんだよ...
4 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 19:27:47.38 ] このスレ、通し番号入ってないけど、良いの?
5 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 19:40:29.79 ] 14はどうせすぐ来年だし過去ログが必要になるようなスレでもないからなければないでべつにいいと思うよ
6 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 19:40:53.14 ] C++11のスレは終わった
7 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 20:04:57.00 ] C++学園の人々:飛躍と混沌の14年の巻 ○軽量コンセプトさん あのコンセプトさんが生まれ変わって帰ってきた! しかしかつてのコンセプトさんに比べると大幅に能力が下がっており、 一部ではstatic_assertさんの変装ではないかと噂されている。入学はもう少し先になる予定。 ○attributeさん 久々に任せられたのは「でぷりけーてど」なる呪詛とともにD組送りにする能力。 今日も死んだ魚のような目を輝かせながら生徒達を地獄へ送る。 ○constexprさん いきなり「勝手に『てーすーしき』を名乗るのは許さないからね!」とライブラリ科に向かって言い放ち 学科の多くの生徒達とファンの土器屋を困惑させた。 あと「りかーしぶ」はやっぱりめんどくさいので普通の女の子に戻るらしい。 ○ラムダさん もはや当たり前に受け入れられて引っ張りだこの人気者。かつて服で騒がれてたのは何だったのか。 少し几帳面すぎて融通が利かないのが不評だったので、autoさんに空気の読み方を教えてもらった。 ○関数さん 靴のサイズを気にしなくていいラムダさんが羨ましくなったので、autoさんにサイズの決め方を教えてもらった。 せっかくだからラムダさんと同じ服を着たいと言っているのだが、「君はベテランなんだから我慢しなさい」と 周りの大人が許してくれないようだ。 ○decltypeさん 新たに姉のautoさんとの合体技も覚えて本人はノリノリだが… 服の違いで性格が変わる悪癖も直っておらず、合体技もやや前衛的で、なんだか最近黒いオーラが見えると噂されている。 ○autoさん 型なんかもう全部autoでいいんじゃねえかなと思わせるような八面六臂の大活躍。 不動の学園アイドルの座を射止めた彼女をD組から睨み続けるregisterさんとは目を合わせてはいけない。
8 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 20:05:29.04 ] ○数値リテラル三姉妹(十進さん、八進さん、十六進さん) 一部の教師のゴリ押しで、ケタクギリなるおかしなアクセサリーを付けさせられることになった。 汚い見た目は主にユーザー定義リテラルさんのせいらしく、恨み節が止まらない。 ○二進リテラルさん 数値リテラル姉妹の四女。前の入試では「君は別にいらないから」と入学拒否されたものの じゃあユーザー定義リテラルさんに代わりやってもらおうかとなったとたんに 急遽入学が決まった。本人は困惑している。なおケタクギリは彼女も付けさせられる予定。 ○ユーザー定義リテラルさん 入学してしまったものは仕方ないので、ライブラリ科は受け入れ準備を渋々始めている。 数値リテラル姉妹とのトラブルで陰口を叩かれたり、complexさんのお手伝いのときに if姐さんを危うく怒らせそうになったりしながらもたくましく生き延びているようだ。がんばって! ○文字列リテラルさん ついこの間「ゆーてぃーえふ」を操る髪飾りを手に入れた。髪飾りなしでも使えるのだが、そしたら 英語の先生が急にブチ切れたのでビックリして泣き出してしまった。 ○拡張for文さん 汚い制服を引きずりながら「Rangeちゃん…Rangeちゃんさえ来てくれれば…」とうわごとを繰り返す毎日。 早く彼女を助けてあげて下さい。 ○Traversalさん 元Rangeさん。「お前わかりにくいから」と改名させられ、大変わかりにくくなった。 拡張for文さんが精神を病んでいく様を辛そうに眺めている。
9 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 20:07:00.27 ] ○asyncさん 入学早々D組行きを宣告された悲劇の子。 ときどき当てても反応しないと、ある先生が職員会議でもらしたばっかりに大問題になり とても通学できない重病だと判断されたらしい。かわいそうに。 ○動的配列さん 入学が延期された。C99クラスにはとっくに通ってるんだから早くしろと怒っているらしい。 双子の妹のdynarrayさんも入学延期中。 ○optionalさん 入学が延期された。「どうせ私はoptionalだしー」と本人はあっけらかんとしている。 ○exempt_ptrさん shared_ptrさん達の引き立て役として呼ばれた末妹。アホの子。, 「sharedおねーちゃんはさんしょうカウンターですごいんだぞー」と自慢しているが もちろん本人は何もわかっていない。入学はもう少し先になりそう。 ○禿 校長先生。動的配列さんを自分好みに魔改造すべく企んでいるという噂。
10 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 20:54:50.41 ] 面白いなあ。誰かラノベ書くしかw
11 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 20:59:46.67 ] 俺のC++達の妹は友達が少ないがこんなにかわいいわけがない
12 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 21:08:09.18 ] C++学園キターーーー!!
13 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 21:18:30.11 ] 俺がC++学園に底辺サンプルとして拉致された件
14 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 21:44:22.38 ] 動的配列さんはC99クラスには通ったけどC11でクラスになじめず保健室登校(Optional feature)になってしまった 今では、いない子扱いされてる
15 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:06:46.90 ] >>11 待て、そのfriendは危険すぎる!
16 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:10:47.27 ] 俺のC++コードが修羅場すぎる
17 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:11:38.77 ] やはり俺のコードは間違っている
18 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:20:04.27 ] 俺の脳内選択肢が、C++11を全力で邪険にしている
19 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:23:47.67 ] みんなC++のことが大好きで仕方ないんだね
20 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:25:27.00 ] 私が書けないのはどう考えてもC++の言語仕様が悪い
21 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:32:24.16 ] プログラマーにしようと校長先生そっくりの禿を錬成してみたら、 俺がアスペになっていました
22 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:51:47.32 ] >>20 それな。
23 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 22:58:44.74 ] お前ら俺の同類ばっかかよw
24 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 23:31:49.72 ] 俺の教室にC++はいない
25 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 01:49:56.28 ] Cぷらぷら!
26 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 02:07:44.15 ] とりあえずいままで出番がなかった auto さんが大活躍してくれればおれは他どうでもいいや
27 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 02:27:33.39 ] >>26 なるほどなるほど要するに auto exp = [](){ /* 適当 */ }; auto eq = [](){ /* 適当 */ }; auto ne = [](){ /* 適当 */ }; auto r = exp ? eq : ne; auto p = find_if(range, r); みたいに、if文は三項演算子とラムダ式に、ループ文はアルゴリズム関数とラムダ式にして 書けばいいんだろ?1行で書くのが偉いんだよな?身の回りで最近見掛けるわ。 死ねばいいのに
28 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 02:44:41.64 ] さすがにその場合expとeqはloop型にするだろ……常識的に考えて……
29 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 02:46:32.24 ] bool型のtypoだ。疲れてるんだな
30 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 15:34:51.26 ] >>27 const 付けない奴は死ねばいいのに
31 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 15:55:45.92 ] ラムダ式を書き連ねて合成して伸ばして等間隔に刻んでサッと茹でて丼に盛って複雑な関数を作る って書き方は、その関数の生成が実行時になる現在だと悪い冗談だけど、constexprが一般化して コンパイル時に回るようになったら、思いの他流行りそうな気がしてる。 近い将来、関数言語かぶれ死ね!黙れロートル!というやり取りがされるのかな?とw
32 名前:デフォルトの名無しさん mailto:sage [2013/10/29(火) 21:40:46.16 ] >>31 今でも実行時じゃ無いだろ
33 名前:デフォルトの名無しさん mailto:sage [2013/10/30(水) 17:29:16.93 ] gccのトランポリンコードと勘違いしてんじゃねーの
34 名前:デフォルトの名無しさん mailto:sage [2013/10/31(木) 07:24:44.05 ] bool,int,float A(true,0,0.0); A = true; A = 1; A = 2.0; if( A ) return true; if( A == 1 ) return true; if(A == 1.0) return false; if(A==2.0) return true;
35 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 20:36:07.95 ] vectorにunique_ptrを入れていろいろやってみているんですけど、これ結構不便ですよね? Range-based forを使おうとするとconstがなんたらかんたらでエラーが出るし、 無理に代入しようとするとmoveが起きて、元のスマポの中身が空っぽになる イテレータでunique_ptrのポインタでも何でもいいからうまく回す方法ないですか?
36 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 20:47:46.81 ] お前のコードが悪いんだと思うよ
37 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 20:49:31.55 ] ttp://ideone.com/GlMvnm コードとエラーの内容張れよ
38 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 20:53:17.11 ] ideone.com/OccVCn すみません こんなコードで、要するに一度内容を表示してからソートした後の内容を表示したいんです 中に入れるクラスはintとは限りません(簡単のためにintにしてあります)
39 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 21:18:19.87 ] auto_ptrの破壊的セマンティクスからmoveセマンティクスに変わっただけで、コンテナに入れられたり デリータを指定出来るところは改良されているが、そういう用途には適してないだろ
40 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 21:41:06.77 ] >>39 そうですか・・・ありがとうございます 大人しくshared_ptrでも使う事にします
41 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 23:47:10.45 ] for (auto& i : v) std::cout << *i.get() << ' '; こんな感じでコンパイル通るけど?
42 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:15:07.83 ] 例として出したコードではエラーにならず動いてるのになにを問題にしているのかがわからん
43 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:20:30.67 ] for (auto i : v) にしたいってことか?
44 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:26:44.23 ] constなんたらだの、代入だの、forにauto使わずconst参照じゃない型を書いたんじゃねーの
45 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 00:50:55.31 ] >>41 gcc4.8.1ですがエラーになります >>42 エラーにならないコードを書くと>>38 になりました でも実行結果がおかしいですよね >>44 違います moveコンストラクタがいつ動くのかしっかりと把握しないとunique_ptrは怖いですね 楽をするならshared_ptr一本です
46 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:10:27.94 ] エラーになるコードをideoneに貼れば一発でここの住人が直してくれるって言ってるんだよ。 >でも実行結果がおかしいですよね きちんとソートされているように見えますけれど。 >moveコンストラクタがいつ動くのかしっかりと把握しないとunique_ptrは怖いですね ちょっと言ってる意味が分からないですね。
47 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:27:35.47 ] >>46 低脳はちょっと黙ってて
48 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:37:20.87 ] gcc4.6.4だと動くな
49 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:38:22.51 ] 4.7.3と4.8.2も動くな
50 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 01:39:33.95 ] 必死ww 動かないソースコードも貼ってないのに
51 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 06:34:35.12 ] 意地でもエラーを書かないあたりは釣りなんだろう
52 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 10:47:57.30 ] お前が書いたコードが糞でFA
53 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 10:50:49.09 ] 遅れましたすみません 私の偽物が現れて荒らしているようで申し訳ありません これでちゃんと通り、正常に動きました ありがとうございました for (int i = 0; i < N; i++) v.push_back(std::unique_ptr<int>(new int(distribution(twister)))); for (auto& a : v) std::cout << *a.get() << ' '; std::cout << std::endl; std::sort(std::begin(v), std::end(v), [](const std::unique_ptr<int>& u, const std::unique_ptr<int>& v) { return *u.get() < *v.get(); }); for (auto&a : v) std::cout << *a.get() << ' '; std::cout << std::endl;
54 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 13:54:32.08 ] >v.push_back(std::unique_ptr<int>(new int(distribution(twister)))); 氏ね
55 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 14:42:05.87 ] これはひどい
56 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 14:55:03.47 ] >>54 どこが死ぬに値するのか全然理解できませんが
57 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 18:24:50.74 ] >>54 何がまずいんだっけ?
58 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 18:55:08.12 ] デバッグしづらい
59 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 19:28:11.61 ] 複数の実引数の評価順で問題がでる場合と勘違いしてるか 右辺値をとってムーブするpush_backがあることを知らないかだろ
60 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 19:37:32.08 ] emplace_back使うとか?
61 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 20:16:45.13 ] 敢えて言うならoperator newの後に distributionが例外をスローすると困る?
62 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 21:00:41.95 ] その場合は大丈夫でしょ
63 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 22:32:27.25 ] 正解は?
64 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 22:33:23.35 ] 問題ない
65 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:13:12.62 ] 変更に弱い(変更で問題を起こしやすい)コードではあるよな。
66 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:38:13.41 ] emplace_back()を使うと実行結果がおかしくなるな なんで?
67 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:42:03.50 ] まず66のレスが馬鹿っぽいことから 原因は66のおつむにあるとみていいだろう
68 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:43:36.95 ] >>66 std::cout << std::boolalpha << std::is_sorted(std::begin(v), std::end(v), [](const std::unique_ptr<int>& u, const std::unique_ptr<int>& v) { return *u.get() < *v.get(); }) << std::endl; これでも付けてみろや
69 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:59:18.15 ] そもそもintなんかvectorに直接突っ込めばいいだろ わざわざunique_ptrなんか持ち出すまでもない
70 名前:デフォルトの名無しさん mailto:sage [2013/11/04(月) 23:59:58.20 ] 大丈夫、みんなそう思ったけど敢えて突っ込んでない
71 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 00:35:30.93 ] いやそこは突っ込みどころじゃないから >>38 >中に入れるクラスはintとは限りません(簡単のためにintにしてあります)
72 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 00:54:20.47 ] >>69 >>38 >中に入れるクラスはintとは限りません(簡単のためにintにしてあります)
73 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 01:21:16.39 ] emplace_backの使い方は合ってるのか? 何書いてるのか知らんけど
74 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 08:20:00.66 ] emlace_backはクラスにmoveコンストラクタが書いてないとコンパイル時にエラーになるな
75 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 09:00:38.12 ] 普通のコンストラクタだけで大丈夫だろ
76 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 15:51:03.57 ] stackoverflow.com/questions/4303513/push-back-vs-emplace-back 右辺値参照してるのに通るんかい
77 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 19:50:58.39 ] emplace_backの&&はテンプレートパラメータに対しての指定だから右辺値参照と確定するわけじゃない universal referenceでぐぐれ
78 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:11:06.59 ] 右辺値参照、時々なんとなく分かった気になるけど、暫くしてよく考え直してみると 分かった気がしただけでやっぱりイマイチよく分かってないことに気付く。死にたいorz
79 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:29:50.06 ] 詰まるところpush_back()とemplace_back()の違いは何よ いや d.hatena.ne.jp/faith_and_brave/20080930/1222768173 こういう所に答えは書いてあるけどさ いまいちピンと来ない
80 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:33:10.05 ] 思い切り重いクラスでもvectorに入れて速度比較してメリットを実感するしか方法はなさそうだ universal reference 初めて聞いたわ というかプログラミング言語C++11の日本語訳まだ出ないのか 英語版は持ってるけど目がチカチカする ISO/IECもあるけど
81 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:37:36.95 ] 日本語が欲しいなら江添さん()のオナニー書がオヌヌメ。
82 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:37:39.89 ] 参照の縮約?
83 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:39:16.27 ] >>81 C++11本書くから寄付くれって言ってた人? 有耶無耶にして逃げるのかと思ってたら、無事完成したのかw
84 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:41:17.44 ] >>83 書きかけで公開したようだ
85 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 20:52:53.78 ] >>84 なるほど、事実だけを端的に表現すると「完成はしなかった」ということかw
86 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 22:01:44.75 ] ラストスパート中。まもなく一応の完成となる、と本人は言ってる。
87 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 22:14:37.21 ] 途中まで読んだんだけど、ひたすら規格書の仕様を 呪文のごとく垂れ流ししてるようなつまらなさ。 規格を読んでれば知ってることばかりだし Exceptional C++とか禿本のように 読んでwktkするものではない。
88 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 22:24:20.04 ] >>86 コア言語だけは完成、な ライブラリは執筆の目途すら経ってないらしい
89 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 22:27:01.58 ] そんだけのものでも、これページ数にしたら結構なもんやで
90 名前:デフォルトの名無しさん mailto:sage [2013/11/05(火) 22:51:11.87 ] >>87 いやそれでいいんだ 画面で見るのと本で読むのとではなぜか全然違う
91 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 00:16:50.51 ] もともと日本語で読める標準C++(11)の規格の解説を書くというテーマだからそういうもの
92 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 01:46:49.72 ] JISの事か ゴニョ・・・・
93 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 07:17:36.23 ] universal referenceてスコットメイヤーズの造語だった気がするけど 禿の本にも出てるんだっけ? 規格的にはreference collpasingだとか言ったと思う
94 名前:デフォルトの名無しさん [2013/11/06(水) 10:06:47.95 ] >>93 collapsing
95 名前:デフォルトの名無しさん mailto:sage [2013/11/06(水) 16:20:04.94 ] Varidec Templatesの使い所がいまいち分からないんだけど うまくまとめてあるページない?
96 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 19:03:11.05 ] 型安全なprintfが作れます
97 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 22:00:17.76 ] iostreamと同じで、真似してはいけない悪い見本ですね
98 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 22:07:37.37 ] stream << 4 << "番目の素数は" << prime(4) << "です。" << 3.1415926 << "は円周率の近似値です。";
99 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 22:33:00.72 ] >>95 本質的には引数の数が違うだけのテンプレートを手で書かなくても自動生成してくれるってだけだから template<class T1> void f(T1 t) template<class T1, class T2> void f(T1 t1, T2 t2) template<class T1, class T2, class T3> void f(T1 t1, T2 t2, T3 t3) ... みたいなコードを書いてたり書きたかったりした場面で使うだけ
100 名前:デフォルトの名無しさん mailto:sage [2013/11/07(木) 23:27:04.00 ] そんな説明じゃ わからんだろ 正しい使い方の例はstd::threadのコンストラクター
101 名前:デフォルトの名無しさん mailto:sage [2013/11/08(金) 00:21:50.94 ] 03までで型の数の制限無し・・・は無理だから制限のゆるいtupleをどう実装するか考えれば variadic templateのありがたみと使い所の一つは理解できるでしょ
102 名前:デフォルトの名無しさん mailto:sage [2013/11/08(金) 07:00:33.48 ] >>100 いやemplace_pushの方だろう
103 名前:デフォルトの名無しさん mailto:sage [2013/11/09(土) 04:59:13.42 ] このアニメで久しぶりに萌え豚の感覚が蘇った気がする
104 名前:デフォルトの名無しさん mailto:sage [2013/11/09(土) 05:00:13.92 ] ごめんまちがえた
105 名前:デフォルトの名無しさん mailto:sage [2013/11/09(土) 11:40:28.99 ] >>104 どこ?紅以外にあるのか?
106 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 15:35:37.68 ] >>95 std::functionの仕様とかみてみ
107 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 15:52:03.54 ] 14になってもまだ自動委譲搭載されないのかよ 何とかしろよハゲ、残った両サイドの毛も全部引き抜くぞ
108 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 15:58:11.26 ] >>107 そんな提案あったっけ?
109 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 16:00:02.53 ] Java使いは身の程知らん癖にC++をJava化しようとするから嫌いだ
110 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 16:01:10.48 ] >>108 www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1363.htm
111 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 16:05:06.13 ] >>110 きもいな
112 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 16:14:09.94 ] >>111 C++がきもいのは今に始まった事じゃないだろ ともかく、ポインターに対する委譲のために ひたすら、関数の引数を同じ名前の関数に引き渡すとかやってらんない。 コンセプトマップさんが生きてりゃ似たようなコト出来たんだがな。 惜しい人をなくしたもんだ。
113 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 16:33:28.81 ] C++のスレ…だよね?
114 名前:デフォルトの名無しさん [2013/11/10(日) 17:33:24.95 ] 「まだ C++ ではないもの」のスレだ
115 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 20:12:45.88 ] 助けてびよーねすっぽすっぽ先生
116 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 20:19:08.29 ] びょーんすぽすっぽだろ。
117 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 20:24:40.51 ] 自慢じゃねーが英語は分かんねーぞ! 誰か>>110 を日本語で説明してくれろ
118 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 20:35:00.09 ] プログラマのほとんどが英語を理解できない現状では 日本語の参考書は必要
119 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 21:01:05.25 ] VC++2010のratio_equalとratio_lessがバグってることに気付いた。 2012では直ってる?
120 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 21:01:39.68 ] std::ratio_equalとstd::ratio_less ね。 念のため
121 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 21:31:43.45 ] >>117 英語読まんでも this is new stuff ってとこから後のコード例だけ見れば何となく分かる 委譲する関数一個ずつ書かされるくらいなら今のままでいいよな 最後の方に提案外だけどpublicメンバーを一括委譲する案も出てるけど 個人的にはたぶんそっちしか使わないと思う 書き方は inline m_pimpl; とかの方がいいな、inline namespaceとなんか似てるし
122 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 21:35:07.14 ] usingはきもいよね = もそうだけど
123 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:06:33.22 ] >>121 委譲する関数名を書くのはIDEのコード補完が助けてくれそうな気がする。 ただ、usingだと後に続くのがネームスペースなのが委譲関数なのか特定できない気がする。 using以外の新しいキーワード導入してほしい。
124 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:13:59.05 ] C++は機能が少なすぎる
125 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:14:15.98 ] >>119 関係ないけどratioはここが美しいなw typedef ratio<1, (_LONGLONG)1000000000 * 1000000000> atto; typedef ratio<1, (_LONGLONG)1000000 * 1000000000> femto; typedef ratio<1, (_LONGLONG)1000 * 1000000000> pico; typedef ratio<1, 1000000000> nano; typedef ratio<1, 1000000> micro; typedef ratio<1, 1000> milli; typedef ratio<1, 100> centi; typedef ratio<1, 10> deci; typedef ratio<10, 1> deca; typedef ratio<100, 1> hecto; typedef ratio<1000, 1> kilo; typedef ratio<1000000, 1> mega; typedef ratio<1000000000, 1> giga; typedef ratio<(_LONGLONG)1000 * 1000000000, 1> tera; typedef ratio<(_LONGLONG)1000000 * 1000000000, 1> peta; typedef ratio<(_LONGLONG)1000000000 * 1000000000, 1> exa;
126 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:18:57.79 ] >>125 ソースが巨大AAというのも探せばありそうだなw
127 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:24:55.62 ] ラムダ式の型を取得できないのは知ってたけど以下のコードの2)もダメなんだな。 auto lamda1 = [](int a) { return (a * 2) << 2; }; auto lamda2 = [](int a) { return (a * 2) << 2; }; lamda1 = lamda1; // 1) lamda1 = lamda2; // 2) 1)はOK
128 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:26:43.93 ] 型が違うんだからそりゃそうだろ
129 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:31:09.54 ] >>125 #if で囲まれてるところも余さず引用しなきゃw typedef ratio<1, (_LONGLONG)1000000 * 1000000000 * 1000000000> yocto; typedef ratio<1, (_LONGLONG)1000 * 1000000000 * 1000000000> zepto; typedef ratio<1, (_LONGLONG)1000000000 * 1000000000> atto; typedef ratio<1, (_LONGLONG)1000000 * 1000000000> femto; typedef ratio<1, (_LONGLONG)1000 * 1000000000> pico; typedef ratio<1, 1000000000> nano; typedef ratio<1, 1000000> micro; typedef ratio<1, 1000> milli; typedef ratio<1, 100> centi; typedef ratio<1, 10> deci; typedef ratio<10, 1> deca; typedef ratio<100, 1> hecto; typedef ratio<1000, 1> kilo; typedef ratio<1000000, 1> mega; typedef ratio<1000000000, 1> giga; typedef ratio<(_LONGLONG)1000 * 1000000000, 1> tera; typedef ratio<(_LONGLONG)1000000 * 1000000000, 1> peta; typedef ratio<(_LONGLONG)1000000000 * 1000000000, 1> exa; typedef ratio<(_LONGLONG)1000 * 1000000000 * 1000000000, 1> zetta; typedef ratio<(_LONGLONG)1000000 * 1000000000 * 1000000000, 1> yotta;
130 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:39:01.24 ] >>128 メンバにラムダを持つクラスが作れないってことか
131 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:40:55.44 ] >>130 つ function
132 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:46:06.47 ] EffectiveC++14はよ
133 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:49:47.26 ] >>132 おっと、それはVC++がC++11対応を終えるまで待っていただこう
134 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:51:10.60 ] 一生でないな
135 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 22:58:58.72 ] >>131 重いよー
136 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:25:06.08 ] C++のどこを指して機能が少なすぎると言ってるのか全く理解出来ないが (OSのエントリポイントをコードできないという意味か?) C++は最高の柔軟性を持っている。アセンブラを除けば他の言語に出来て C++に出来ない事は存在しない
137 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:29:29.85 ] 標準ライブラリが少ないというのには同意する
138 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:37:58.19 ] 他の言語がありすぎな気も
139 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:43:02.49 ] boostさんがいれば大概のことはなんとかなる
140 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:56:02.18 ] >>136 >>127
141 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:57:21.87 ] >>140 記述方式と言語の能力をごっちゃにしてる当たり「高級」言語しか使えないの丸見え
142 名前:デフォルトの名無しさん [2013/11/11(月) 00:11:14.72 ] 127 は型が「違う」のではなく「同じである保証がない」 つまりは「同じであることに依存してはならない」ということだ C++ の元来のポリシーからして複数の typedef や typename が たまたま同じなら通るわけで、127 が NG なのは唐突な印象だが
143 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:12:16.57 ] 委譲の話、データメンバーのinline指定で委譲になって usingで選択、とかならいいな んでusing指定はdecrarator-idだけ指定すればOKで 必要ならdeclarator全体書けば特定のoverloadが指定できるとか class A { void f(); void f(int); void g(); void g() const; }; class B { inline A impl using { f(int), g }; }; とか まあ、そんな大きくコア言語いじるほど欲しい機能じゃないけど… >>123 IDEに任せるなら今でもやろうと思えば可能なような あとn1363のはusing identifier { }だけど、名前空間でそんなのあるっけ? >>122 n1363の別名定義は=の左右の向きが受け入れがたいよね
144 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:16:18.11 ] VLAISとかgccが独自拡張してるのを追ってったらなんぼでもあるだろ 古い言語でもPascalの関数内関数と同じ機械語パターンはC++のラムダじゃ吐けないが
145 名前:デフォルトの名無しさん [2013/11/11(月) 00:17:40.35 ] gccはデファクトスタンダードなのでgccの拡張を取り込んでいない 標準規格のほうが規格違反。
146 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:18:55.74 ] >>142 結局記述方式の問題だろ?
147 名前:デフォルトの名無しさん [2013/11/11(月) 00:28:12.95 ] >>146 一致を狙ってくる意図のほうだと思うが
148 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:33:43.08 ] Cにウンコな記述方式を追加したのがC++なんだから 記述方式を否定したら何も残らん
149 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:41:27.94 ] って事は今の言語はみんなウンコ
150 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:55:07.19 ] >>123 C++03の時点でusingをclass内に書くとメンバー関数の アクセス権昇格と降格に使えるようになってるから問題ない。 C++03の知識すら無いのにこのスレくんな
151 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 01:08:34.24 ] >>143 戻り値で得たオブジェクトに機能追加する際大活躍するぞ std::unique_ptr< Base > base = Function(); Extention extention = std::move( base ); extension.BaseFunction();//Base型に自動委譲された関数 extension.ExtendFunction();//Extensionで追加した関数 IDEで自動生成すればいいという話も出てるが、 委譲先の型に関数追加するたびに自動生成とかやっとられん。 特に既にライブラリー化されたものだと自動生成は使えない。
152 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 02:08:13.18 ] なるほど、確かにそういうのはアリかも そういえばスマートポインタが絡むとどう宣言するか難しいな
153 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 07:06:35.91 ] ポインターに限定せず、指定した変数の->が 自動で呼ばれる仕様にしとけばいいんじゃね。 委譲用の関数がコンパイル時に自動生成される実装に なってりゃそれ程難しくもない。
154 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 13:16:54.80 ] 多重継承恐怖症患者の憂鬱
155 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 14:03:59.01 ] C++がやっぱり覇権言語のような気がする
156 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 14:31:55.45 ] >>154 多重継承じゃポインターは継承できないぞ
157 名前:デフォルトの名無しさん [2013/11/11(月) 15:33:24.45 ] イミフ
158 名前:デフォルトの名無しさん [2013/11/11(月) 23:00:37.29 ] 関数の戻り値から単純な図形と2次Bezierぐらいしか対応して無いPainter拾って来て、 3次BezierとSplineを追加したいなんて時に委譲すんだが かったるいんだよな。特に委譲先のメンバーが20個以上あるような場合。
159 名前:デフォルトの名無しさん mailto:sage [2013/11/12(火) 00:22:39.31 ] gccのfloat最適化が期待したほどじゃなかった人?
160 名前:デフォルトの名無しさん [2013/11/12(火) 08:45:52.81 ] >>159 誤爆か?
161 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 12:03:51.85 ] 質問です ideone.com/LDs6Av 2つのクラスの間でoperatorを定義したいのですが、先行宣言した方のクラスではdecltypeが書けません。 これをdecltypeを使えるようにするにはどのように書けば良いのでしょうか? この例ではdoubleと書いてありますが、templateで他の型も使えるようにしたいと思っています。
162 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 12:57:06.26 ] テンプレにすりゃいいんじゃねーの
163 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 14:05:23.08 ] >>162 ありがとうございます ideone.com/WPhg2Q これで行けそうです classの中でoperator*を定義しようとすると、もう一つのclassのdがprivateで 型を取得出来ないので、アクセサを付けるとカプセル化を破る事になるし、 だったらfriendでoperator*を外部に関数で定義した方が良さそうでした
164 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 07:58:38.52 ] んな現行規格の話はC++初心者スレで聞けよ
165 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 10:45:50.90 ] decltypeが現行規格か?C++11ならそうだけど 初心者スレは03までじゃないとスレチな気が
166 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 12:34:18.94 ] >>165 スレタイ見て物を言え
167 名前:デフォルトの名無しさん [2013/11/22(金) 13:24:27.31 ] 現行規格は C++11 異論をはさむ余地はない ただし >>163 は decltype なくても typedef で解決できることだね template <class T> class A { public: typedef T D; private: D d; public: A(D a) : d(a) {} };
168 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 13:34:32.78 ] >>167 typeを外に晒してもoperatorの戻すtypeは結局decltypeが必要になるんじゃね? どんなtypeとどんなtypeを演算するのかわからないんだから
169 名前:デフォルトの名無しさん [2013/11/22(金) 14:16:20.77 ] >>168 それは確かに C++11 で改良された点だが cout<< に流せる型なら特殊化でもしておけば? class T は理屈の上ではあらゆる型だが class A で達成しようとしている目的から外れすぎた 馬鹿げた T はシカトってのもよく使う手だね C++11 なら、これも type_traits や static_assert でもうちっと善処できるけど
170 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:17:40.69 ] 特殊化したんじゃtemplateにする意味がない どんな型でも受けたいんだから
171 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:28:49.50 ] 結局>>167 でdecltypeを使わずに具体的にどう書くかは示されてないのか
172 名前:デフォルトの名無しさん [2013/11/22(金) 14:29:55.90 ] あるいは何型の戻りを期待するのか陽に指定とかね operator * では無理だけど、そんなら普通の関数だし
173 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:42:23.80 ] どんな型でもって、特定のメソッド要求してる時点で型が限定されてんじゃん?
174 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 17:46:59.67 ] >>173 特殊化されてない同名メソッドと 型に付随する特定のメソッドとは別概念じゃん?
175 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 17:51:22.08 ] はよ初心者スレに帰れよ
176 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:03:43.31 ] ガタガタ抜かさんと>>167 書いた奴はideone.comに何かプログラム例上げてみ
177 名前:デフォルトの名無しさん [2013/11/22(金) 18:18:17.64 ] >>176 やだね、べろべろばー
178 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:50:08.40 ] 書けない癖に偉そうな口を聞くからそうなるんだよアホ
179 名前:デフォルトの名無しさん [2013/11/22(金) 20:29:56.47 ] >>178 煽れば何か見せてもらえると思ってんだろバーカ
180 名前:デフォルトの名無しさん [2013/11/22(金) 23:43:06.64 ] お前のは見たくないからいいよ。
181 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 02:17:07.60 ] 勿体付けてるんじゃなくて、本当に書けないのは誰が見ても分かる
182 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 07:24:06.67 ] 退屈だからoperator ** (ベキ乗)でも定義するか class num { double a; struct num2 { double a; num2(double src) : a(src) { } }; public: num(double src) : a(src) { } const num2 operator *() const { return num2(a); } double operator *(const num2& b) const { return pow(a, b.a); } double operator *(const num& b) const { return a * b.a; } }; int main() { num a(3.0), b(4.0); double c = a * b; //12 double d = a ** b; //81 return 0; }
183 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 07:59:59.46 ] class num2 { friend num; double a; num2(double src) : a(src) { } }; としてもっと完全に隠蔽すべきだったな
184 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 11:22:58.52 ] >>182-183 スレ違いだボケ
185 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 12:36:41.30 ] threadとかasync周りについて詳しく解説したページない? 何かよくわからん
186 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:07:54.38 ] >>185 このスレで聞くな
187 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:22:08.54 ] threadはともかくasyncは出来損ないなので勉強するだけ無駄
188 名前:デフォルトの名無しさん [2013/11/23(土) 13:23:37.41 ] >>182-183 num2 無しにしたらどうよ class num { double a; public: num(double src) : a(src) { } operator double() const { return a; } const num *operator *() const { return this; } const num operator *(const num *p) const { return pow(a, *p); } const num operator *(const num &amp;b) const { return a * b; } }; int main() { num a(3.0), b(4.0), x(0), y(0); double c = a * b; //12 double d = a ** b; //81 x = a * b; //12 y = a ** b; //81 return 0; }
189 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:28:58.41 ] >>188 荒らしかよおめーは
190 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:47:35.56 ] 相手されないと死ぬ幼児です
191 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 17:19:44.89 ] threadはどうなの C++14で何か変更あるの
192 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 18:18:35.60 ] shared_(mutex|lock)
193 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 18:34:32.77 ] async 件、誰か kwsk!
194 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 20:30:20.81 ] >>9
195 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 01:04:48.21 ] >>193 www.amazon.co.jp/C-Concurrency-Action-Practical-Multithreading/dp/1933988770
196 名前:193 mailto:sage [2013/11/24(日) 02:46:41.05 ] ごめん少し言葉足らずだった asyncができそこないって件kwsk!
197 名前:デフォルトの名無しさん [2013/11/24(日) 04:47:47.62 ] getせずにfutureが破棄されたらどうすんのか決まってなかったけど、そのままデタッチしたら危ないから終了までブロックするようにした。 そしたら、 「それasync違うじゃん、止まってほしくない時まで止まっちゃうの問題じゃね?非同期処理を行いたい時はUIスレッド止めずにバックグラウンドで何かしたいときとかなのに!」 とか、 「非同期ならそのスレッド止めずに結果はコールバックで受け取るようにすべきで、そのライブラリ無いのおかしくない?でもそれ作ったらいまのasyncいらんよね。」 とか、 「Windowsだとこんな使い方してもスレッド起動のコストでかすぎて大抵遅くなるだけだわー」 とか、色々なネガティブ要素でもういっそdeprecateにしたほうがいいんじゃないか?って話しになってるんだと思ってる。 個人的にはできそこないって言うほどダメなもんでもないと思うけど・・・。 違ったら詳しいひとツッコミよろ
198 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 08:28:19.73 ] The C++ Standard Library 2nd ed - A Tutorial and Reference - Nicolai M. Josuttis www.amazon.co.jp/The-Standard-Library-Tutorial-Reference/dp/0321623215 これいいな C++11わからんとか言ってるやつはここのサンプルプログラムを手で打ち込んで全部試してみれ 英語版しかないのが玉に瑕だがそんなに難しい英語じゃない
199 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 10:01:08.30 ] 時代はC++14
200 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:33:31.84 ] コンパイラがない
201 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:38:02.86 ] 僕達にはclangがある
202 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:55:58.66 ] vc++のことも忘れないであげてください
203 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 12:57:42.87 ] パターンマッチは入らないのかな
204 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:05:48.12 ] スマポが配列を指す時に苦労した これデフォルトのデリータがdeleteなんだな だからカスタムデリータでdelete[]をラムダ式か何かで指定するか、 std::default_delete()を使わないといけないのか
205 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:42:02.32 ] デフォで配列版が用意されてるのはunique_ptrだけなんだな。 なぜだろ?
206 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:10:40.65 ] >>205 オブジェクトを複数のオブジェクトで共有するならまだしも、 生配列を複数のオブジェクトで共有して何に使うんだよ。 要は生配列共有すんなって事だ。
207 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:20:29.44 ] vectorかarrayを使っておけというところじゃね。 C++の動的配列って中途半端だよね。 delete[]で各要素のデストラクタ呼べるように サイズとか内部的に持っているのに普通には使えないとか。 deleteとdelete[]使い分けろとか。
208 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:38:04.69 ] >>207 new T;で生成したオブジェクトdeleteする時にnew T[];とどうやって区別するんだ。 常にnew T[]した時余計な情報載せるのか?
209 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:59:52.30 ] >>207 デストラクターが無い場合に要素数を持たないようメモリをケチること許す言語仕様ゆえ
210 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:07:57.10 ] >>209 Cの配列と互換性持たせるためでもあるな。
211 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:13:06.24 ] それは関係ないんじゃ 使う側が見たnew式の結果は区別が付かないだから
212 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:19:54.68 ] >>206 配列の時だけってか?
213 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 21:23:17.89 ] >>205 unique_ptrには他のスマポと違ってコピーコンストラクタがないから 配列版=>単一版への誤ったコピーが起きにくい。
214 名前:デフォルトの名無しさん [2013/11/24(日) 22:22:47.31 ] >>207 ぶぁか
215 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:26:15.38 ] >>211 単体のnewに要素数情報乗っけられるのも困るな 1000回newしたら8000バイト近くdeleteの為だけに主記憶領域食われるんだからな
216 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:41:30.04 ] >>213 テンプレートコンストラクタだから正しく言うとコピーコンストラクタじゃない
217 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:49:40.23 ] コピコンじゃないの!?
218 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 00:09:23.90 ] コピコンが無いってのは確かだが、配列=>単一のコピーの話をするんであれば問題なのはそこじゃない
219 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 01:00:10.11 ] 配列=>単一のコピーってどういう話?
220 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 06:19:02.67 ] >>219 unique_ptr<T[]> a(new T[8]>; unique_ptr<T> b(a>; ってのが通ったらまずいが、unique_ptrには下のコンストラクタがないから大丈夫。 shared_ptr<T[]> c(new T[16]>; shared_ptr<T> d(c); ってのが通ったらまずいが、shared_ptr<T[]>なんてものはないから大丈夫。
221 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 09:59:08.91 ] shared_from_this()というのがいまいち理解できない これどうなってんの?
222 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:53:44.84 ] やってることはトリッキーだけど単純なことなんだがシンプルで具体的な使用例がだせないな shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得るというイディオムで使うんだけどな
223 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:26:31.25 ] www.ogis-ri.co.jp/otc/hiroba/technical/boost/index.html のコラム2
224 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:40:55.34 ] なるほどかなり特殊なケースみたいだな
225 名前:デフォルトの名無しさん [2013/11/25(月) 22:42:55.82 ] >>222 「shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得る」というイディオム 長えよ
226 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 00:02:08.16 ] イディオム名はそのまま『shared from this イディオム』でそれはどういうもの?って説明が>>222 だろ
227 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 21:33:57.58 ] boost::shared_ptrに記憶領域の番地を入れた際、 要約値を鍵にした連想配列(hash map)に 記憶領域の番地を格納。 boost::shared_from_thisを実行した際、 この連想配列からthisの持つ番地で、 boost::shared_ptrをとってくるって仕組みじゃないか?
228 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:00:12.84 ] 内部にthisを指すweak_ptr持ってるだけだよ 後はshared_ptrのコンストラクタがenable_shared_thisを継承したクラスを特別扱いしている
229 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:40:40.37 ] 参照カウンターの整合性はどうなるんだ?
230 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 09:48:18.32 ] >>229 どんなケースで問題が起こると思ってるの?
231 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:38:48.13 ] newして返したboost::shared_ptrと、 boost::shared_ptrで確保した、boost::shared_ptrを返した時。 特に片方が共同所有権としてつかわれ、 片方がEventの委譲用とかよくありがちじゃん。
232 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:42:03.66 ] それで何か問題になるのか
233 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 19:47:52.61 ] >>232 二重delete
234 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:00:11.72 ] 長文失礼 shared_ptrのオブジェクトの管理領域は次のようになっている 管理領域の参照カウンタ、オブジェクトの参照カウンタ、オブジェクトへのポインタ、デリータへのポインタ ここで、shared_ptrは管理領域、オブジェクト両方のカウンタを増減させる。 weak_ptrは管理領域のカウンタのみを変更する。 shared_ptrの破棄によってオブジェクトのカウンタが0になったとき、オブジェクトは解放される。 しかし、管理領域は全てのweak_ptrが破棄されるまで生存する そして、weak_ptrからshared_ptrを構築する際には、shared_ptrの管理領域へのポインタをweak_ptrが指す管理領域へのポインタへと設定している
235 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:02:36.06 ] 長すぎと言われた、連レスすまん enable_shared_from_thisは内部にweak_ptrを持っていて、shared_ptrのコンストラクタはenable_shared_from_thisを継承したクラスに対しては特殊な動作、すなわち内部のweak_ptrに管理領域へのポインタを設定する動作をする shared_from_this関数は内部のweak_ptrからshared_ptrを構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される 全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
236 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 01:04:05.46 ] >>231 > newして返したboost::shared_ptr わからん。何を new ?返すってどこからどこに? > boost::shared_ptrで確保 わからん。 shared_ptr に何かを「確保」する機能なんて無いよね? さっぱりわからん。
237 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 10:41:28.04 ] >>231 >>233 こいつはたぶんshared_ptrそのものを理解してない
238 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 19:18:57.03 ] 普通に使えば普通に使えるライブラリを 浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す C++ではよくあること
239 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 22:25:36.50 ] そういや shared_ptr を使っているインスタンスに対してVisitorパターンだったかやってみようとしたら 途中で生ポインタに変わっちゃうんであきらめたことがあった class Hage : public Element { virtual void accept(Visitor &v){ v.visit(this); } // <- このとき }; enable_shared_from_this ってのを知っていたらうまいことできたんだろうか
240 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 01:14:30.49 ] うん