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/
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 ] はよ初心者スレに帰れよ