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/
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の拡張を取り込んでいない 標準規格のほうが規格違反。