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/
684 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 00:54:09 ] auto が一般的になればテンプレートの中で演算し放題なパラダイスが訪れるよ。
685 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 01:19:11 ] >>682 でも右辺値参照も誰も使ってないぞ 4.3からだから入ってから大分経つのに
686 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 02:58:28 ] マクロだとautoは便利。
687 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 08:31:39 ] >>684 D言語のように静的に文字列弄れる訳でもなし、戻り値推論(以下)できる訳でもなし、C++0x程度じゃまだまだ。 auto Square(T)(T t) { return t * t; }
688 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 08:57:44 ] 戻り値推論って有れば便利だけどさ、その程度の関数だったら、これでよくね // 関数の文法は統一されるはずだと信じてる template < typename T > [] Square( T t ) -> decltype(t * t) { return t * t ; } Boost.labmdaみたいな変態的なライブラリを使った変態的な型を返したい場合は、 重複はちょっと面倒だけど。 あと、動的に返す型が変わるような関数はどういう扱いになるの? コンパイルエラー?
689 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 09:48:57 ] >動的に返す型が変わるような関数 ? returnが二つ以上ある関数のこと言っているなら両方の共通の型になる。
690 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 09:55:47 ] いや、 if(乱数%2) return ほげほげ ; else return はげはげ ; みたいな。 共通の型? javaみたいに暗黙のうちに継承する型とかがあるの?
691 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 10:10:41 ] >>690 動的にって言うけど、それってコンパイル時に静的に解決しなきゃいかん問題だよね。
692 名前:デフォルトの名無しさん [2009/04/30(木) 10:11:38 ] >>690 C++で>>687 は出来ないよ。
693 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 11:14:12 ] >>690 intとlongならlongだし、A派生のBとA派生のCならAだし。
694 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 11:27:03 ] auto func = objf_list<>::choice(any); auto x = func(); 返り値の連鎖は無理臭いけど何が出てくるかわからんワクテカ感は0xでも味わえると思う。
695 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 19:41:06 ] >>688 今でも条件演算子でそういう状況になるので、 そのときどうなるかは決まっている。 それは戻り値推論でもそのまま採用すべきかものどうかは分からないけど。
696 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 00:05:47 ] ラムダ式は簡単な戻り値推論できるから、関数構文と統合されれば >>688 ならこう書けるはず template < typename T > [] Square( T t ){ return t * t ; }
697 名前:デフォルトの名無しさん [2009/05/02(土) 03:39:09 ] www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2855.html Move constructor は例外を投げてはいけない・・・という話から、解決策として noexcept という関数への修飾キーワードで例外を投げないことを 明示し静的にチェックできるようにしたうえで Move constructor はデフォルトで noexcept にしよう・・・という話から、ついでにデストラクタもデフォルトで noexcept にしようという話。 今更こんな壮大な変更が取り込まれる可能性があるのか、甚だ疑問ではあるが、 確かにすごく欲しいとは思う。
698 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 06:16:54 ] &&とか、本気なのか? ワザと誤解して間違いそうな文法考えて、「分かるヤツだけが分かる!」 って、選民意識を得るために作ってるとしか思えん。 もうちょっと分かりやすいのを考えてほしい・・・
699 名前:デフォルトの名無しさん [2009/05/02(土) 06:35:56 ] >>697 そこでキーワードをnothrowにしないのは意地?
700 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 08:08:24 ] 何の意地かは分からんがnothrowの方が分かりやすいのは確かだな
701 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 08:40:31 ] exceptの方が明示的でいいかな 「投げません」って言われても「何を?」って思うけど 「例外無し」って言われると「ああ、例外無いんだ」って思う
702 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 09:10:40 ] nothrowはすでに標準ライブラリに存在している名前だから無理っしょ
703 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 09:43:56 ] >>702 何のための名前空間。
704 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 09:50:52 ] 次期標準にしようとしているのに?
705 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 09:54:43 ] みんな使わないのに標準?
706 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 10:01:34 ] >>703 名前空間で対策できるってことは予約語じゃなくて単なる識別子として導入? そんなきもいのマジ勘弁
707 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 10:06:00 ] throw 1;って例外を投げてることになる?
708 名前:デフォルトの名無しさん [2009/05/02(土) 10:55:23 ] なる。
709 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 12:03:47 ] >>706 まさにその通り。 operator new 関数に nothrow_t 型を引数として受け取るオーバーロードがある。 で、 struct nothrow_t {}; extern const nothrow_t nothrow;
710 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 12:07:23 ] >>709 いや、それがあるからキーワードとして nothrow を追加するのは無理ってことだろ。
711 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 13:23:41 ] attributeでいいじゃん…とおもったらattributeじゃダメな理由も書いてるな 型システムに入れるとかアホか
712 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 14:58:33 ] C++0xがマトモに使われるとは思えなくなってきた。 C99と同じ道をたどるんじゃ。
713 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 15:04:38 ] initializer_listとかが一部で使われるくらいだろうなぁ コンセプトとかもう絶対無理
714 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 15:13:24 ] boostの中の人のような変態の為の機能だから普通にC++を使う人が使わないぐらいなら想定内
715 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 15:15:15 ] コンセプトはexport(笑)と同じ道を辿るだろう 誰も実装しない、出来ない
716 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 15:16:31 ] コンセプトは標準ライブラリやBoostの中で使われれば十分だよ。 テンプレートが関わるエラーメッセージの改善という程度のことに役立つと信じて。
717 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 15:17:41 ] いや、exportとは違うさ。 conceptを使うことには利点があるのだから。 exportは、コンパイル時間を多少短くできるってことぐらいしか利点がないから。 conceptなしでは、C++0xは語れないぜ。 C++0xの多くの機能が、conceptを前提にしているんだから。exportとはわけがちがう。
718 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:02:49 ] でも実装が出来ないんじゃなぁ conceptGCCとかいつまでやってんだよ 主な商用コンパイラも軒並みガン無視だし
719 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:04:22 ] conceptの実装は時間がかかるぞ。 だいたい、中途半端な実装をリリースして、互換性の問題を引き起こしてもらっても困る。
720 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:10:02 ] 互換性は諸刃の剣だな
721 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 17:11:48 ] conceptGCCはもう開発してないと思う… 9ヶ月くらい更新止まってるし、その前は1年3ヶ月更新止まってたし www.generic-programming.org/software/ConceptGCC/download.php
722 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 18:19:16 ] >>719 vcの人は1年くらいかかるとか言ってたな vc11には入るんだろうか…?
723 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 19:22:41 ] 本家の concept ブランチでやってるんじゃないの?と思ったら >At present, the concepts branch provides almost no support for concepts. ttp://gcc.gnu.org/projects/cxx0x.html とか書いてあるな、おい。 更新も 10 ヶ月止まってるっぽい。 ttp://gcc.gnu.org/viewcvs/branches/cxx0x-concepts-branch/
724 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 20:24:59 ] GCCが匙を投げたとなると他も追従するかもしれないな コンセプトオワタ
725 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 20:57:43 ] まさに絵に描いた餅ですね
726 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 21:08:03 ] コンパイラ開発者は標準化委員会にいないの?
727 名前:デフォルトの名無しさん [2009/05/02(土) 21:28:52 ] 少数で開発してるD言語にもコンセプト的な何かはあるのに、 GCCが実装できないってのは、C++の言語仕様の複雑さを物語っているようだ。
728 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 17:42:07 ] 規模と実装難易度を考えりゃ、Concept以外が全部実装されてからやっと本腰入れてConceptに取りかかるくらいのもんだろう。 4.5で何が実装されるかってだけでもwktk出来るさ。
729 名前:デフォルトの名無しさん mailto:sage [2009/05/03(日) 17:54:55 ] コンセプトがないと拡張for文もきないしライブラリの作り直しにも本腰入れられないだろ さっさとしてくれ
730 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 00:35:12 ] 言語オタクな連中に規格を作らせるからこんな事になるんだ
731 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:36:56 ] そうだよな。実務的な言語がものすごくキモい化物になって行く様は、おぞましい。
732 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 01:58:18 ] 現状維持派 → 表に出てこない 変えたい派 → 騒ぐ 止める人がいない
733 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 08:44:52 ] HTML5ワークショップの実務に即した仕様策定がうらやましい
734 名前:デフォルトの名無しさん [2009/05/04(月) 13:08:00 ] それが真実なら、とうの昔に標準GCが規定されてるはずだ
735 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 23:47:01 ] しかし、本当にjavaより速いプログラムを作るのが難しい言語になって行くなァ。
736 名前:デフォルトの名無しさん [2009/05/04(月) 23:49:21 ] それはない。
737 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 23:58:25 ] VCが新ライブラリへの対応だけでも迅速に進めてくれればいいや 特に cstdint と regex
738 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:02:29 ] >>735 とりあえず > どんどん〜なっていく っていうのは無いはず。
739 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:24:22 ] i = i++ の結果は未定義なのでしょうか?
740 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:35:11 ] 未定義じゃないと思う。
741 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:36:57 ] a[i++] = i; の動作は未定義だそうだ
742 名前:デフォルトの名無しさん [2009/05/05(火) 00:37:51 ] 根拠
743 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:43:30 ] >>739 codepad.org/JCtHYXzj iは変化しないって思ってたけどそうじゃないんか。 実戦ではつかえないっすねー。
744 名前:デフォルトの名無しさん [2009/05/05(火) 00:49:59 ] 単にその処理系でそうなるだけなのか、C++でそういう定義なのか、分からないだろ。
745 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:51:04 ] (´・ω・`)知らんがな まぁ誰かが調べるまで気長に待てばいいじゃない
746 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:54:58 ] 未定義というよりは不定なのかな? C# では int i = 5; i = i++; System.Console.Write(i); で 5 が出力されるので疑問に思ってちょっと調べてみたんですけど 規格みると副作用とか副作用完了点とかよくわからない
747 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:56:34 ] 「未定義」と「不定」を区別するならそれぞれの定義を。
748 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:02:01 ] とりあえず++演算子は右辺に置くなということで。 「未定義or不定だからヤメロ」って言えれば楽なんすけどねー。 >>746 wktk
749 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:02:10 ] 区別はここみてそういう区別があるんだと思ったから www.st.rim.or.jp/~phinloda/cqa/cqa7.html
750 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:04:54 ] 補足 www.st.rim.or.jp/~phinloda/cqa/cqa7.html#Q8 未定義だそうだ。
751 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:06:29 ] おまえら揃いも揃ってスレタイよめないのか
752 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:12:15 ] 739程度が一目で未定義とわからない奴らが新規格のスレに何の用だ
753 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:19:27 ] >>739-750 何この程度の低い流れ。自演?
754 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 01:44:52 ] >>737 Regexは2008 SP1の時点で登載済み。TR1としてだけど。
755 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 02:10:50 ] TR1との違いってコンセプト対応してるかどうかくらいだっけ?
756 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 06:35:57 ] テンプレくらい読んでから質問しろ
757 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 06:37:42 ] >>752 Sequence pointsすら分からない奴が、 まだ確定してない規格知ろうなんて十年早いよな。
758 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 11:16:01 ] はいはいすごいすごいえらいえらいかしこいかしこい
759 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:34:08 ] フィンローダなつかしいなー あのころはCマガ面白かった
760 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 20:38:35 ] >>736 経験不足のおバカさんだな。
761 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 12:23:26 ] 0xとあんま関係ないけど、UNICODEソースは仕様上なんか規程されてるの? まぁ、サポートされてても日本語でソース書こうなんて思わないけどさぁ。
762 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 15:42:59 ] 日本語で書けるなら書きたい
763 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 15:49:00 ] ソースコードに実装依存の文字が使えるということになっている。 まあ、今までも、C++のコンパイラは、ほぼ例外なく実装依存の文字が、少なくとも文字列リテラルやコメント内で使えたし、 いまさら規定しても何も変わらないと思うが。
764 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 18:58:57 ] 「実装依存の文字」の話はしていない。 UNICODEの話をしている。
765 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 19:40:52 ] 実装依存か・・・。VCでこんなコードも 通るんだが、現場とかで見るよう担ったらヤダなぁ、 変換するのがダリぃ。 int 二乗(int 引数) { return 引数*引数; }
766 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 19:54:44 ] 識別子に漢字が使えるのはC++0xの仕様? コンパイラーの仕様?
767 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:18:28 ] >>764 「ソースコード」の文字列に関しては、何にも規定されてないと思うんだけど。 >>765 知らなかった。プリプロセッサにも使えるんだな。 ということは、ラムダ関数が実装された暁に、λをautoか[]に#defineすれば・・・。 まあ、正直使いたくないな。 >>766 C++0xでは、識別子に、「その他の実装依存の文字」が使えることになってる。 だから漢字が使えても規格上問題ない(ソースコードの移植性はない)
768 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:30:09 ] >>767 二点質問があります。 「その他」ではない文字は何ですか? C++0xに対応したコンパイラーが必ず使えなければいけない(移植性のある)文字セットは何ですか?
769 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 20:58:57 ] その他ではない文字というのは、 識別子の先頭の文字には、 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ 先頭以外ならば、上記に加えて、 0 1 2 3 4 5 6 7 8 9 また、"universal-character-name"というものが使える。 これは、/uもしくは/Uに続く、十六進数で指定する、 /uは4文字、/Uは8文字指定できる。 つまり、/uXXXX もしくは /UXXXXXXXX という形式になる。 その表現する所の文字は、十六進数の値の、ISO/IEC 10646で規定されている値に対応する文字、 つまりはUnicode。 だから、以下のコードは妥当、ということになるはず。この辺は実は詳しくないのだけれど。 //C++0xでは完璧に合法なコード int /u3042/u3044/u3046 = 0 ; もし、コンパイラがその他の実装依存の文字を許可するならば、上のコードは、以下と同じ int あいう = 0 ;
770 名前:デフォルトの名無しさん [2009/05/07(木) 21:12:15 ] フォワードスラッシュなのか…
771 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 21:14:50 ] 間違えたorz バックスラッシュだ。 int \u3042\u3044\u3046 = 0 ;
772 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 21:16:53 ] 自然数 エー 配列 代入 ここからゼロ、ワン、ツー、ここまで。 加速繰り返し 括弧 自然数参照 エヌ、エー 国家 ここから 標準の黒板に 書き出せ エヌ 書き出せ 標準の行末。 ここまで
773 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 22:20:09 ] JIS X 3014:2003を読むと処理系依存にその他の文字とか全然ないですね。 ソースコードの文字はユニコードにコードポイントがなければならないように なっています。 コンパイルの一番最初の段階で基本ソース文字集合(A-Za-z_0-9と基本的な 記号と空白類)か\uxxxx,\Uxxxxxxxxと言うようなユニコードの コードポイントに変換されそのあとに識別子としての解釈があります。 なので\uxxxx,\Uxxxxxxxxだろうとそのままの文字だろうと識別子に使えます。 ただし識別子に使用できる文字はA-Za-z0-9_と規格の付属書(appendix)Eにある 指定されたユニコード文字だけです。 いまこれを書くために読んだ限りですが。。。
774 名前:デフォルトの名無しさん mailto:sage [2009/05/07(木) 23:00:49 ] >>772 #define駆使すればもっと自然な日本語にもできるぞ。 pc12.2ch.net/test/read.cgi/tech/1037458703/942
775 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 13:43:40 ] www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/#mailing2009-05
776 名前:773 mailto:sage [2009/05/08(金) 18:59:34 ] 訂正 > JIS X 3014:2003を読むと処理系依存にその他の文字とか全然ないですね。 は 「JIS X 3014:2003を読むとその他の文字が処理系依存とか全然ないですね。」
777 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 19:11:29 ] >>773 トライグラフの変換は?
778 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 19:45:00 ] おちんちんがトライグラフ!美少女中学生も赤面!
779 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 20:50:27 ] なんだ誰も mailing の話してないのか
780 名前:デフォルトの名無しさん [2009/05/08(金) 21:00:36 ] 何それ
781 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 21:11:47 ] 少ないしあんまり面白いのないんだもん 「for The-C++-After-0x」とかいう気が早すぎる奴くらい
782 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 21:13:52 ] 好きな男子との間に生まれた子の名前を考えるほど気が早い美少女中学生の話で盛り上がっております
783 名前:773 mailto:sage [2009/05/08(金) 21:35:43 ] >>777 トライグラフも同時だよ!
784 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 22:32:40 ] >>781 なにげにあったら便利だね