1 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:10:49 ] The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ wikipedia ja.wikipedia.org/wiki/C%2B%2B0x C++0x pc11.2ch.net/test/read.cgi/tech/1149440647/ C++0x 2 pc11.2ch.net/test/read.cgi/tech/1191842951/ C++0x 3 pc11.2ch.net/test/read.cgi/tech/1204808027/ C++0x 4 pc11.2ch.net/test/read.cgi/tech/1214407525/
357 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:13:33 ] なんか演算子余ってないの? p->>func() を func(p) の糖衣構文として扱うとかそんなんでいいんだが
358 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 10:17:34 ] >>356 特殊化はシグネチャを変えているわけじゃない。
359 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 15:44:17 ] >>357 ->* とか? でも (p->*func)() みたいに括弧が必須なのが面倒。
360 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:49:01 ] >>359 肛門を指してるように見えた俺は逝ったほうがいいんだろうな orz
361 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 19:02:12 ] )*(
362 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 22:53:49 ] >>352 拡張メソッドのメリットって何?
363 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:13:23 ] >>361 むしろ梅干し食べてる感じ
364 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 03:35:03 ] >>356 難しく考えすぎ 普通に第一引数がthisでそれ以外が普通の関数の定義と同じようになるようにすれば良い。 たとえば class foo {}; // 定義 class foo { int bar(int baz) { return baz; } }; // 拡張メソッド(C#風) って書いたら int foo_extended_method_bar(foo* this, int baz) { return baz;} って書くのと同じようになるようにすればいい。 でも継承したらどうなるかとかは知らん >>362 使ったこと無いからわかんないなぁ rubyのサンプルコードで良く見るけど
365 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:00:55 ] >>364 なにその生産性の低い記述は。
366 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 09:13:32 ] あくまで後から擬似的にメンバメソッドを追加できるようにするシンタックスシュガーでしょ。 あんまりいい例じゃないけど、なんでこの行列クラス、固有値求められないんだよ…ってときに: #include "matrix" // class Matrix; #include "eigenvalues" // vector<double> eigenvalues(const Matrix& this); Matrix m; auto es = m.eigenvalues(); // eigenvalues(m); と同等 Matrix* pm; pm->eigenvalues(); // eigenvalues(*pm);
367 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 11:11:44 ] 比較的簡単な処理の流れはメソッドチェイン出来ると楽ってだけかと ただC++だと例外を軽く使えないからエラー処理をどうしようってことでMaybeモナドが欲しくなる
368 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:10:37 ] >>366 例が悪すぎます
369 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:45:38 ] >>366 Matrixをテンプレートの型パラメータで渡したときなんか拡張メソッドの定義includeの読み込み順で拡張メソッドが適用されたりされなかったりするのかな
370 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:11:17 ] oven(egg)のpipableは拡張メソッドっぽい
371 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 19:56:06 ] ソースが短くなるだけで、生産性の低い、動きがトロい、そんなバイナリーができそうだな。 現状のSTLも遅いし。
372 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 20:06:19 ] 拡張メソッドの解決は動的ポリモルしなければコンパイル時に行うことができるんでそうとも言いきれない
373 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 22:40:52 ] 第一引数を前に出す、単なる糖衣構文だから、バイナリが遅くなるなんてことはないわ
374 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:12:40 ] C++だとただの糖衣じゃ済まないから注意しないとオーバーヘッドはかかるな
375 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:15:33 ] operator.ぐらいの糖衣
376 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 23:47:58 ] generic functionがあるのに必要ですかね。
377 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 01:09:52 ] >>372 それが問題なんでねぇかい テンプレートメンバ関数はその辺上手く逃げたよなぁ
378 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 05:05:59 ] 普通のオーバーロード解決でなんか問題あるんか。
379 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 11:52:07 ] >>378 kwsk
380 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:18:24 ] objがfuncメソッドを持ってなくて、スコープにfunc拡張関数がある場合、 obj.func(args) を func(obj, args) と字面上同義みなすってことでは?
381 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:20:17 ] generic functionがあるのに必要ですかね。
382 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:35:21 ] 必要です。目的が違います。
383 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 13:39:08 ] ほとんど変らないんじゃない? virtualにならないんだし。
384 名前:デフォルトの名無しさん [2009/02/26(木) 13:44:28 ] generic functionて何。
385 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 18:48:11 ] あるオブジェクトに対して行う処理を まずオブジェクト名から入力できるとインテリセンスとかで楽できるんだよね 候補が狭まるから
386 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 20:08:43 ] あほくさ
387 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:52:27 ] 今時インテリセンスも使いこなせない奴がいるのか・・・
388 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 22:56:03 ] 0xの次で多重ディスパッチが入れば一緒に入るんじゃないかい>拡張メソッド
389 名前:デフォルトの名無しさん mailto:sage [2009/02/26(木) 23:18:24 ] 汎関数の多重ディスパッチは既にある。
390 名前:デフォルトの名無しさん [2009/03/15(日) 11:12:39 ] おっぱいを大きく見せたくて多重ブラジャーする美少女中学生
391 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 12:53:17 ] 久々に上がってるんで見に来てみたら… この前、時間が作れたんでようやくmailing2009-02を少し読めた。 久々の単独署名のDouglas Gregorの"Concepts and Ref-qualifiers"、 いやーやはりRvalue Referencesは難しいですね。 それからDouglas GregorってAppleに就職したんだな。(2008/10) 古くはIOKit、今はWebKitとC++結構使ってるからな。
392 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:36:14 ] 0xって本当に0xに出せるの?
393 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:46:12 ] 残念ながら1xがほぼ決定
394 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:47:12 ] でも未完成のまま強引に0xに出しそうな気もする やめてほしいけど
395 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 15:50:09 ] ISOの手続きのスケジュールの都合で無理なのでは? それがなかったとしても十分09に間に合いそうもないが。
396 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:03:26 ] もう出しても意味ネーよ。
397 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 16:24:56 ] >>391 auto concept HasAssign<typename T, typename U> { typename result_type; result_type T::operator=(U) &; // ←Rvalue reference! } ワロス
398 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 18:27:34 ] >>395 そうきいている
399 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:34:43 ] autoっぽいものを現行のC++で実現するマクロってあったような気がするんですがマクロ名を知りませんか
400 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 21:56:24 ] BOOST_AUTOのこと?
401 名前:デフォルトの名無しさん mailto:sage [2009/03/15(日) 22:44:53 ] gccのtypeofかなぁ?
402 名前:デフォルトの名無しさん [2009/03/21(土) 14:58:40 ] 僕は言語仕様の問題のほか、現実的な理解者とコンパイラがいつ現れるかも 気になる。現行のSTLやBoostですらコンパイルエラー、ワーニングが長すぎて 解読困難なのに、これ以上になるのかと思うと気が重くなる。
403 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:59:11 ] しまった・・・sage忘れた・・・
404 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:03:06 ] C++0xのconceptにはエラーメッセージを簡易にする目的もあります。
405 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:03:38 ] 俺を含む凡人以下からすれば 「まずはまともな処理系を出してくれ、話はそれからだ」 だからな WGにいる仕様書だけでコードを書いてあーだこーだ議論してる奴等は化け物に思えてくる
406 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:06:55 ] >>404 一般的な開発者がその恩恵を受けられるのは、 どんなに早くても2012年頃かと思われますw
407 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:12:33 ] concept については厳しいだろうけど他の機能についてはちょこちょこ実装されつつあるじゃん。
408 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:13:32 ] 可変長テンプレートとか右辺値参照とかばっかり先行してて 可読性を良くする機能はことごとく後回しにされてるけどな
409 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:16:56 ] 可変長テンプレートはありがたいだろ。 TEMPL1(X) TEMPL2(X1, X2) TEMPL3(X2, X2, X3) : TEMPL20(X1, X2, X3 .. X20) とかもうイヤだよ。
410 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:24:11 ] そりゃそうだけど、ソースが読みやすくなる訳じゃないじゃん エラーメッセージは多分もっとわかりにくくなるだろうし
411 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 17:27:25 ] 可変長テンプレートが「可読性を良くする機能」ではないとすると、 後回しにされてる機能って何のこと言ってるの?
412 名前:409 mailto:sage [2009/03/21(土) 17:29:11 ] >>410 そりゃまあ一般論としてはそうかな。 ただ俺は馬鹿だからか、機械生成しなかったのが悪いのか、 5引数のやつだけ書き間違えて大填まりしたことあるわ。 気づくわけないっての
413 名前:デフォルトの名無しさん [2009/03/25(水) 03:24:35 ] www.open-std.org/jtc1/sc22/wg21/ News 2009-03-24: The 2009-03 post-Summit mailing is available News 2009-03-24: The C++ Standard Core Language Issues List (Revision 62) is available News 2009-03-24: The C++ Standard Library Issues List (Revision 63) is available
414 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 12:21:54 ] というわけで最新のWorking DraftはN2857ですか。
415 名前:デフォルトの名無しさん mailto:sage [2009/03/25(水) 18:44:11 ] あんまり面白くねーな ラムダ関係がボロボロで全面書き直しって事くらいか あと日本からのコメントrejectされまくり
416 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 21:07:56 ] 結局ラムダ式って Monomorphic なやつだけしか入らんの? 型名書くのだりーよ… 結局 Boost.Lambda のほうが便利じゃんってオチ?
417 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 05:20:03 ] >>416 何言ってるのかわからん。 Boost.Lambda のどんな用法のことを言ってるの? C++0x のラムダ式で置きかえらない用法があるってことなんだよね?
418 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 08:58:21 ] >417 単に引数の型書くのが面倒という話では? _1 + 1 [] (int n) { return n + 1; } もともともラムダ式の提案では引数の型を指定しないでよいものも込みだったんだけど、 分割して型を指定するものだけ先に持ってきたのが Monomorphic なラムダ式のはず。
419 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 09:13:54 ] [] (auto x) { (ry }とか[] (x) { (ry }とかでできないのかな?
420 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:06:48 ] >>417 Boost.Lambda は多相じゃん。 (_1 + _2)(1, 1) // -> int 2 (_1 + _2)(1.0, 1.0) // -> double 2.0 単相にして保持したければ function<double(double, double)> f = (_1 + _2); f(1, 1) // double 2.0 とかもできるし。 ちょっと調べてみたら n2529 で、 (n2329 にあるように higher implementation cost なんで) "We do not propose generic lambda functions for C++0x." って書いてあるな… これはダメっぽい。
421 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 12:35:25 ] range based algorithmの採用も却下されたことだし まだまだboostの役目は終わらないということだな
422 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 17:45:45 ] boostの肝心な機能を骨抜きにしたのが標準だな 結局みんなboostを使い続け、std名前空間を汚染するゴミが残るだけという
423 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 14:18:37 ] という意見をぜひ comp.std.c++ あたりに投稿してくれ 日本の総意ってことで
424 名前:デフォルトの名無しさん mailto:sage [2009/03/29(日) 10:22:55 ] > range based algorithmの採用も却下されたことだし ( ゚д゚)
425 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 13:50:22 ] 配列初期化の記述だけはサッサと実現してほしい。
426 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:48:55 ] 関数型言語とC/C++の関数ってどういう関係?
427 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:54:20 ] 特に関係はない
428 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 19:55:43 ] ちょっと確認。 cout<<boolalpha<<uppercase<<true; ってした場合でも、TRUE(大文字)とは出力されないんだっけ? それで規格どおり?
429 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:14:51 ] >>427 そんなこともないだろ。両方関数だし。
430 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:16:11 ] じゃあC/C++の関数が関数型言語とどう関係あるのか教えてよ
431 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 20:22:42 ] 関数型言語の関数は、数学的な関数ほぼそのもののことを指している。 Cとかの関数は、それから来ている名前ではあるけど、(サブ)ルーチンのことを そう呼んでるだけ。たまに数学的な関数のような性質を持ってることもある。
432 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 21:42:56 ] >>431 いや>>426 は「関数型言語における関数と、C/C++における関数」の性質の違いを 知りたがっているのではなくて、「関数型言語」と「C/C++の関数」の関係を知りたがってる。 葉巻型UFOと日本たばこ産業の関係を質問するくらい、わけのわからない質問ではあるが。
433 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:04:53 ] >関数型言語の関数は、数学的な関数ほぼそのもののことを指している。 >たまに数学的な関数のような性質を持ってることもある。 ん?どう違うの?
434 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:20:25 ] つ ja.wikipedia.org/wiki/%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3
435 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:25:30 ] さすがwikipedia
436 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:27:55 ] つまり状態の使用や副作用をおこさなければ関数型言語と等価ということですね。
437 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 22:41:34 ] >>436 基本的には Yes. ただし、状態も副作用もない関数を書くとしても、 手続き的な考え方だとローカル変数を値を変えながらループして計算したりするのに対し、 関数型言語的な考え方だとローカル変数に一度束縛したら値を変えず、ループのかわりに再帰とか集合演算とかを使う。 そこらへんの美学の違いは理解すべきかな。
438 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 23:44:29 ] >>428 真偽値を表す文字列をnumpunctから取得して、 ストリームへ「インサートする」って書いてあるから、 uppercaseは適用されないね。 取得した文字列を再度operator<<するわけじゃないから。
439 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 23:46:01 ] それで自分流のnumpunctを定義する方法は、 22.2.8.13に例が挙げてある。
440 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 09:00:20 ] その筋の用語では「参照透明性」な
441 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 10:01:21 ] ぷ
442 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 16:41:02 ] 美少女中学生のおなら?
443 名前:428 mailto:sage [2009/03/31(火) 19:51:14 ] >>438-439 ありがと。 規格の該当パラグラフも確認しました。 locale関連になっちゃうのね。。。 そのあたりの深入りは避けたいので、簡単に文字列として 出力しようと思いますた。
444 名前:デフォルトの名無しさん mailto:sage [2009/03/31(火) 20:30:21 ] そうそう。 結局、os << b ? "TRUE" : "FALSE";を関数にまとめればいいやというとこに落ち着いちゃうんだよね。
445 名前:438 mailto:sage [2009/04/02(木) 17:10:08 ] 本来の主旨とちょっと違ってくるけど、 マイ書式には引数付きマニュピュレーター使って その中で出力しちゃってる。 けどこれC++0xの話題じゃないじゃんw
446 名前:デフォルトの名無しさん mailto:sage [2009/04/02(木) 18:39:32 ] 美少女中学生の話題をしようぜ!
447 名前:デフォルトの名無しさん [2009/04/02(木) 23:27:37 ] 女子中学生をいじったら汁が出てきたよ(^−^)
448 名前:428 mailto:sage [2009/04/03(金) 21:06:55 ] >>445 あー、たしかにマニピュレータはよさそう。 また機会があったらオレもそうしよ。 >けどこれC++0xの話題じゃないじゃんw そうだった。w でも、C++で規格ガチの話ってこのスレが一番じゃね?
449 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 00:34:14 ] >>448 C++相談室でいいよ。だいたい規格ガチで文句言われるスレなんてないだろ。
450 名前:デフォルトの名無しさん mailto:sage [2009/04/04(土) 15:20:15 ] ここは標準化委員会の迷走を横目で生暖かく見守るスレです
451 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 01:16:11 ] そんなんだから日本からのコメントがrejectされまくるんだよ。
452 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 01:21:45 ] あれは結構な割合で、rejectされるだろうけど一応送っておくか、的な雰囲気のものが入っていた気がする。
453 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 02:50:54 ] どーせ仕事じゃ誰も使わないよ。
454 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 03:45:10 ] >>452 Unicode関係とか結構気合い入れて議論してたんじゃないの? サックリrejectされてて笑ったが
455 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 16:09:19 ] あんなコメント読まされる方もたまったもんじゃない。 かなり基本的な部分でUTF-8前提にしろとかもうアホかと。
456 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 17:24:29 ] ttp://ja.wikipedia.org/wiki/ビャーネ・ストロヴストルップ ビャーネ・ストロヴストルップ(Bjarne Stroustrup, 1950年6月11日 - )は、 デンマークのオーフス生まれのコンピュータ科学者。 本人による自身の名前の発音は「びよーねすっぽすっぽ」に近い。
457 名前:デフォルトの名無しさん mailto:sage [2009/04/05(日) 20:12:24 ] ttp://www.research.att.com/~bs/bs_faq.html#pronounce ttp://www.research.att.com/~bs/pronounciation.wav どのへんが近いんだ?