1 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 21:53:47 ] The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ wiki 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/
445 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:37:44 ] いまさらだけど、0b の話って、 www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf が採用されたらさらに一般化されて解決されるんじゃないの? 誰も上で話に出してなかったけど ...
446 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:42:09 ] ユーザ定義リテラルは誰か途中で書いてなかったっけ つうか0bの話ししてる奴の大半はドラフトなんか読んでないんじゃね
447 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:38:21 ] >>445 キモイ記法になるから組み込みにして欲しいって話だと思ってた。
448 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:21:30 ] >>445 >>259 を忘れないで。 たぶんこれのことだよね?
449 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:49:32 ] >>259 を理解できていたらここまでスレは加速しない。
450 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:23:02 ] あれって入る見込みありそうなの?
451 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 01:23:26 ] たぶん無理
452 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 03:11:10 ] 入ったとしても定義できるのはサフィックスだけだから 0bは無理なので厨はお気に召さないだろう
453 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:23:28 ] 別にサフィックス b でいいよ。
454 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:29:49 ] #define b0 0 #define b00 0 #define b000 0 // ... 一つの数値に128通りの#define // = 2^129個の#define
455 名前:445 mailto:sage [2008/04/15(火) 09:59:34 ] すいません、アホな言い合いが続いていたので 259 を読み飛ばしてました。 でも constexpr って今の定義だとそんなに中にいろいろ書けないんじゃ?
456 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:47:23 ] ループを手動でアンロールすればいいっしょ。
457 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:47:45 ] ああ、配列アクセスしてる時点で無理なのか。
458 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:59:46 ] N2378 と最新のドラフト読む限りでは suffix しか無理ながら,とりあえず constexpr リテラル化はできるような? >>259 みたいに for 文を使用 (して,かつ constexpr 化) することは 現在の提案ではできないみたいですけれど
459 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:27:15 ] ようやくらしくなってきたが、未解決なのは変わらずか。
460 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:32:48 ] constexpr unsigned char operator "b" (unsigned int value) { return (value % 10 != 0) | ((value / 10 % 10 != 0) << 1) | ...; } このくらいならできるのか?
461 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:28:12 ] 5bitしか扱えないけどね
462 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 07:36:04 ] いつの時代の住人だ
463 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 11:24:41 ] N2378 と N2588 に従うと以下のような感じになるとは思うんですが, いかんせん以下をコンパイルして確認できる環境が存在しないので 間違いがある可能性が高いです. template<char C> unsigned long long binaryDigitToNum(); constexpr unsigned long long binaryDigitToNum<'0'>(){ return 0; } constexpr unsigned long long binaryDigitToNum<'1'>(){ return 1; } template<unsigned long long I, char C, char... TAIL> constexpr unsigned long long binaryLiteralImpl() { return binaryLiteralImpl<I << 1 + binaryDigitToNum<C>(), TAIL>(); } template<unsigned long long I, char C> constexpr unsigned long long binaryLiteralImpl() { return I << 1 + binaryDigitToNum<C>(); } template<char C, char... TAIL> constexpr unsigned long long operator "b" () { return binaryLiteralImpl<0, C, TAIL>(); } 普通の raw-form literal operator だと, '0', '1' 以外が来たときに compile-time error を吐かせる方法がいまいちピンと来なかったので variadic template form を使いました.
464 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 12:22:30 ] しかし、この例をみるにつけても C++0x は変態ですね
465 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 19:32:22 ] これはまだ分かりやすい方だろ。
466 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:30:21 ] 美少女中学生は変態さん。なんと制服の下で身体を縄で縛って学校に行っちゃうのです
467 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:31:32 ] マジレスすると疲れるだけで全然えろくも変態でもない。
468 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:03:57 ] >467は人生の勝ち組
469 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 05:34:54 ] 0b狂がいなくなったら誰もいなくなった
470 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 10:36:22 ] mailing2008-03読んでるけど、 0bで馬鹿らしくなって>>257 くらいしか書き込んでないw
471 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 10:53:04 ] 美少女中学生は空を見上げ待ち続けている…
472 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:20:10 ] C++0xで2進リテラルを作成するスレを別に立てたらどうだ?
473 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 12:22:39 ] 糞スレたてんなよ
474 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:15:32 ] >>473 読まなければ良いのでは?
475 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:22:22 ] 糞スレを立てると無駄なCO2を排出することになります
476 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:31:12 ] 俺様のゲップに含まれるメタンガスに比べれば無視できる量だけどな
477 名前:デフォルトの名無しさん [2008/04/23(水) 08:11:49 ] 美少女中学生が排出したメタンを肺いっぱいに吸い込みたい
478 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 08:33:53 ] つ (美少女の)硫化水素
479 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:15:45 ] お前らスレタイ0x100回読め
480 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:33:01 ] スレンダーでタイツの似合う美少女中学生が俺の嫁
481 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:35:18 ] 256回読みましたがわかりませんでした
482 名前:デフォルトの名無しさん [2008/04/26(土) 22:18:03 ] >>481 美少女中学生について語ってはならないとは スレタイにもテンプレにも書いてないんだが # 個人的には平面の方が好きなんだけどな
483 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:25:12 ] C++0xは3次元あるいはそれ以上の次元を持つとはどこにも書いていないぞ。 まあ2次元とも決まっていないがな。 #ん、C++タンの出番だな。
484 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:27:23 ] N2582 新しい関数宣言方法(ラムダ式と同じ形にする案) []foo(int x) -> int { return x; }
485 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:30:30 ] [] は大変キモいので、こういうマクロを標準で提供して欲しい。 lambda とかいうヘッダファイルを用意して。 #define labmda [] foo(lambda foo(int x) -> int { return x; });
486 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 23:33:19 ] typo したがキニシナイ
487 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 00:49:50 ] [] にはもう既に慣れちゃった
488 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:30:50 ] 委員会のキーワード忌避は強迫観念レベルだな
489 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:33:59 ] それほど既存のソースが多すぎるのさ。 そこはしゃーないと思う。 でも、C99 の #define bool _Bool みたいに 互換性を保ちつつキーワードを導入するテクはもっと使ってもいいと思う。
490 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 03:48:53 ] 無名関数のおかげで無名構造体にコンストラクタとデストラクタを搭載できるようになりました! 大勝利ですね!
491 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 04:06:37 ] 一方ロシアはコンストラクタをthisで定義できるようにした。
492 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:12:49 ] なんでlambda expressionのlambda-return-type-clauseって、 ->を使うんだろ。 コロンじゃだめだったのかな。 たとえば、普通の関数も統一しようぜっていうN2582も、 こんな風に書けるのに。 [] func() : int { return 0 ; }
493 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:35:23 ] #define : -> は無理だったっけ ...
494 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:44:20 ] >>492 見た目が違うだけじゃんw
495 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:33:02 ] [] main(int argc, char* argv[]) -> int { //... }
496 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:35:05 ] >>492 コロンはコンストラクタの初期化子と競合しそうだな。
497 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:38:20 ] コンストラクタでは戻り値の型がないから大丈夫じゃね。 文法的な紛らわしさに関してはまああるかもしれないが。
498 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:46:28 ] ECMAScript4ってそんな感じじゃなかったっけ いやだなぁ
499 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:30:15 ] function func() : int { return 0 ; } だったか。ECMAScript4は文法キモすぎて見たくもない。 いつのまにかコンストラクタの初期化子まで採用してるし。
500 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:35:51 ] テンプレートもあるよ! function func.<T>() : T { return new T(); }
501 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:35:43 ] ぐはぁ
502 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 20:42:16 ] しかしなぜ->なんだ Haskellかよ
503 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 21:04:22 ] プログラミング言語 Scala pc11.2ch.net/test/read.cgi/tech/1205156417/ Scala違いだ移動しる・・
504 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:49:10 ] returnでいいじゃんかよ コンフリクトはないはずだ [] func() return int { return 0 ; }
505 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:50:51 ] なんかもうどうやってもキモいんだが。
506 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:52:00 ] ラムダ式くらい 100% 型推論でやってくれ。
507 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:53:18 ] そもそもどうしてラムダと形を合わせたいんだ コピペのためか?
508 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:56:04 ] 関数型言語的には→なんだから、 ->でいいんじゃないの?
509 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:58:39 ] 関数型言語的にどうかは知らんしどうでもいいが C系言語的には->は昔からずっと間接参照演算子だ
510 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:13:55 ] 美少女中学生的には -> と [] はブラのホックの両端だから
511 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:26:17 ] >>504 それ、俺も思っていたんだけど、 C++の文法としては、何か違和感あるよね。 ところで、@と$がC++の規格にないのは、何か理由があるの?
512 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:30:21 ] [] int foo() { ... } で不都合があったから -> になったんだと思うが、 どんな不都合があったの?
513 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:50:13 ] returnsのほうがいい
514 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:53:10 ] >>512 (charからcharへの関数)を引数に取り(intからintへの関数)を返す関数 を引数に取り(charからintへの関数)を返す関数の型を、 C++03(「関数」は「関数へのポインタ」とする)とC++0xで書いてみてくれ。
515 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:58:27 ] int (*(int (*(*)(char (*)(char)))(int)))(char) のことだよね?
516 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:10:24 ] グロい
517 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:11:59 ] まぁ現状十分汚い言語なんだから、 多少醜くなってもいいじゃん
518 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:14:30 ] >>517 いいこと言うなあ。君のそのレスで俺の気持ちは吹っ切れたよ。
519 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 00:19:47 ] []([]([](char)->char)->([](int)->int))->([](char)->int)
520 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:22:09 ] typedef char (*ctoc_t)(char); typedef int (*itoi_t)(int); typedef int (*itoc_t)(char); typedef itoi_t (*ctoc_to_itoi_t)(ctoc_t); typedef itoc_t (*answer_t)(ctoc_to_itoi_t); こんな型何に使うかは知らんが、使うとしたら きっと近くでitoc_t型やctoc_to_itoi_t型の変数も必要になるだろ ならそんなキモい書き方しないで必要なものをtypedefで作るべき
521 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:35:41 ] >>519 の方がわかりやすいが?
522 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:06:50 ] >>519 これは従来のアナルっぽい記法よりは読みやすいな
523 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:15:37 ] >>511 いまさらtrigraphやdigraphの要るような記号追加するのもねえ…ってことじゃないかと予想
524 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 07:38:26 ] >>523 そういう理由なのかなぁ。 しかし、trigraphやdigraphって廃止しても、それほど互換性の問題も無いんじゃないかなとおもったりするんだけど。 西側の、なまじ7bitで全種類の文字を表せちゃったので、悲惨なことになっている連中も、 結局使ってないみたいだし。
525 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 09:39:20 ] >>521 まずそんなものを書く状況自体が無いな。 あっても >>519 も読みづらいから typedef 使うわ。
526 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:51:29 ] C++でtypedefを禁止したらどんなカオスなコードになるか見てみたい
527 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:53:44 ] >>526 template メタプログラミングがかなり出来なくなる気が ...
528 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:58:25 ] >>526 decltype と auto を駆使することになる
529 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 18:05:21 ] あーはやくautoが欲しい
530 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:02:48 ] 正直、auto 以外、いらん。初期化もまぁあればいいね、程度だし
531 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:46:54 ] ここまでいじっちゃうともう新しく言語作った方が早い気がするしな。
532 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 19:51:44 ] Cとの互換性をとりつつ拡張するのに苦労してんのにそんな事言うなよ
533 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 20:12:56 ] 互換性無視できる ネイティブディレクティブとか作ろうよ
534 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 20:36:05 ] もう互換性なんかとっくにボロボロなのに今更何を
535 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 21:37:43 ] >>530 初期化指定子で初期化指定が完了するのは美しいと思わんか
536 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 21:54:12 ] なぁ、これは俺の思い過ごしかもしれんのだが ヒープ領域って誰が管理してくれるんだ? ラムダ返されて、それ引数に関数呼び出して 関数の中でグローバルに束縛されて... ... ... でも, らむだはデストラクションしないとまずいんだろ?
537 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:07:15 ] 関数を動的に生成してるわけじゃないだろ
538 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:17:48 ] 536 に便乗で聞くけど、 例えば C# の場合、ローカル変数を参照するようなラムダ式書くと、 クラスが自動生成されて、ローカル変数参照がメンバ参照に置き換わるんだけど、 そういう状態になった場合、デストラクタはどこで呼ばれるの? ローカルスコープ内でしか使わないラムダ式ならいいけど、 例えば、「ラムダ式を返す関数」みたいなの作っちゃった場合。
539 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:21:56 ] そんなのローカル変数のポインタ返してるのと一緒だろ クラッシュしても自業自得で済まされる話 C++はプログラマを全面的に信頼する言語ですよ
540 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:24:33 ] >>537 あんまマジにシンタックス見てないんであれなんだが こんな感じの関数書くとするやん? f(x, y) { return [copy x]lambda(y){+ x; ...} } この場合, x はスタックじゃなくてヒープに取るしかないと思うんだ で, g(f(1), f(2)...) とかな感じで, 呼び出したら? f が返す関数に束縛されてる x がコピーされた領域は誰が回収するんだろ? と、思った
541 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:01:43 ] ん、よくわからん。 スタックじゃないの?
542 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:04:43 ] alloca() を思い出した
543 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:08:10 ] new [...] (...) {...} はないの?よくわからんけど
544 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:23:24 ] ラムダ式は関数オブジェクトのシンタックスシュガー なので、単なる一時オブジェクトとして生成されると思う
545 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 23:24:34 ] 関数から返せないということか。 何かエセっぽいな。