- 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/
- 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;
|

|