1 名前:デフォルトの名無しさん mailto:sage [2011/11/16(水) 23:27:34.48 ] The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ Wikipedia ja.wikipedia.org/wiki/C%2B%2B11 前スレ: C++11/C++0x 14 hibari.2ch.net/test/read.cgi/tech/1316760961/
792 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 04:43:21.59 ] bindが追加されたからいらなくなったんでしょ
793 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 07:23:11.87 ] boostのやつが導入されたんだっけ 別にラムダでいい気もするけど
794 名前:デフォルトの名無しさん [2012/03/20(火) 17:48:44.11 ] テンプレ引数付きtypedefってクラス内のtypedefでも使えたりするんけ? いままでクラス内クラスについてはテンプレに出来なかったよな
795 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:13:04.34 ] あーもうこんな複雑な言語、個人で使うならともかく、それなりのプロジェクトで使うとなると・・・。 これ、もう、オタクの玩具でしょ。
796 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:20:28.61 ] エイリアステンプレートはクラス内でも使える。 ただ、本当にメンバーテンプレートなエイリアステンプレートを使いたいのか? 苦労するだけだぞ。 struct X { template < typename T > using A = T ; } ; template < typename T > void f() { typename T:: template A<int> i ; } int main() { f<X>() ; }
797 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:20:31.35 ] そもそも、システム開発用の言語がこんなに複雑な必要性って、在るのかねぇ。
798 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:22:47.48 ] システム開発用の言語だからこそ 高速化の為なら何でも取り入れるべき
799 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:28:17.17 ] システム開発的には安定性の方が重要だよ。 だから、Cでシコシコやってるのが丁度よい。
800 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:39:36.68 ] >>796 template< typename T > using Vector = Geometory::Vector<T, 2>; ベクトルの次元は絞るが、型は何でもいい場合。一種のカリー化したいとき。
801 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 18:48:19.55 ] C11の_Genericみたいな糞機能はC++に輸入しないで欲しいよな まあこれに限らずC11普及するのかよって話もあるけど
802 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:04:29.71 ] ABIを壊さずにオーバーロードを実現するための _Genericは今更C++には無用だろ
803 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:30:39.42 ] C99すら・・・
804 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 20:54:57.83 ] >>799 安定性と「Cでシコシコ」の関連が不明です。
805 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:00:03.01 ] Cなら10年前どころか20年前のコード見ても古いと感じないが C++の10年前のコードは腐臭を放ってる
806 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:01:20.58 ] それ、個人の慣れの問題じゃないの?
807 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:03:04.20 ] Cってだけで時代を感じるな
808 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 21:40:34.26 ] C++は仕様が固まってから日が浅いからね
809 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 22:40:14.22 ] >>808 まだ固まってない
810 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 23:12:55.33 ] 使い方判らない機能は必要のない機能だから使わない方がいいよ。 いずれ、あー、こんな機能あれば安全なのになぁって必要になるときが来るけどね。 それまでは使わなくてよろしい。
811 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 09:00:55.10 ] >>810 基本はひととおり知っとく必要がある。 そうやって必要な知識を遠まわしにして、 ものすごい面倒で複雑なロジックにする アホがいっぱいいるんだ。
812 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:24:26.71 ] 積極的に使わなくてもいいが、知らなきゃ他人のライブラリは使えなくなるからな
813 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 01:21:11.57 ] 規格そのものとは関係ないが、翻訳単位が関数単位に出来ないかねぇ。 一つの関数なおす度にファイル一本コンパイルしなおすっつうのもウザい。
814 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 08:23:57.47 ] 1ファイル1関数にすればいいのでは
815 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 09:50:16.86 ] てめえで1つのファイルに書いておきながらうざいとか言っちゃう人って
816 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 20:25:44.96 ] そもそも構造違うけどSmalltalkなら関数(Method)単位で処理してくれるんだけどね
817 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 20:28:39.00 ] Common Lisp もな
818 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 22:30:18.91 ] (object.*function); 関数のポインタを逆参照したときの値って 未だ未定義なんだよな。もうクロージャにでもすりゃいいのに。
819 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:03:03.61 ] 関数とメソッドの違いに注意な
820 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:12:19.98 ] メッセージを送るセレクタにより起動されるのがメソッド ディスパッチで呼び出されるのがメンバー関数
821 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:16:29.95 ] 最近はメソッドをまともに実装した言語も少ないな
822 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:32:30.62 ] int (__closure function)(int) = object.Function; int (__closure function)(int) = object.*Function; Borlandのコンパイラじゃこんな感じにクロージャに出来たんだけどな C++本家にゃ取り込まれず今じゃ.net環境でdelegateとして活躍しとるとは なんか皮肉だのう
823 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:40:32.27 ] >>822 だってそれDelphi互換用のためだけの機能だったし。 __closureって名前も紛らわしすぎる。ラムダが入った今となっては特に。
824 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:48:43.06 ] Delphi互換かどうかはどうでもいいし、別に__closureって予約語もいらん。 ただ、std::function<int(int)> function = object.Function;って書けるなら ラムダ書かずに済んでありがたい。そもそも、関数がオブジェクトだってのは Smalltalkの様で自然だ。
825 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:52:30.80 ] C#なみにラムダの記述量が減ってくれるとありがたいのだが
826 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/03/22(木) 23:53:10.27 ] >>819 だよな。 メンバ関数のことをメソッドって言うな!! って思うよな。
827 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:56:46.31 ] それでもまだBlocksさんに比べれば……
828 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 23:59:48.18 ] >>824 変に規格に入って、VC++のABIがBorland(ってか現Embarcadero)のそれと違ってしまったら 肝心のC++Builderが困るじゃないか。
829 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:08:13.52 ] >>824 型が弱すぎ
830 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 00:18:01.36 ] >>829 なんだそれ?
831 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 08:58:04.19 ] >>828 ABIなんて今までも互換性無かったのに今更
832 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 09:12:14.81 ] クロージャっていまだに良くわからん
833 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 09:13:08.84 ] >>831 折角64ビットで統一されたんだから
834 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 12:43:50.05 ] Delphiってオブジェクト毎に関数ポインタを生成するために 動的コード生成やってなかったっけ
835 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:10:43.70 ] >>834 やってない。単なる関数ポインタとthisの組。Dのdelegateなんかも同じだね。
836 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:23:43.28 ] >>824 > std::function<int(int)> function = object.Function; virtualだと単なるポインタじゃ済まないな。 関数内でthis使ってる場合も同様。 staticなメンバー関数以外、型安全にならないんじゃないの?
837 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 17:26:47.91 ] >>836 object.Functionの時点でVMT参照して解決してしまえばいいんでそれは問題ない。 C++のメンバ関数ポインタと違って、後でthisだけ(orメンバだけ)取り替えたりはしないんだから。
838 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 19:33:27.87 ] >>836 要するにstd::bindの構文糖にしろって事だけどわかってる? auto function = object.Function; auto function = std::bind( &Type::Function, &object. std::_1 ); それとも、もしかしてstd::functionの構造知らないの?
839 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 12:07:17.57 ] 最近のC++のディスられようがウザい。 DなんたらとかHasなんたらなんてどうでもいい。
840 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:16:00.33 ] 普通にC++について語ったらDisってるようになってしまう C++がうんこすぎるから
841 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 13:31:57.59 ] 実用言語と実験言語を比べられてもな
842 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:36:27.00 ] そうそう、C++は実験言語なんだからdisってもしょうがない。 その成果は確実に実用言語に受け継がれているよ。
843 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 15:46:29.13 ] Dこそが真の実用言語だよなー
844 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:22:54.00 ] >>842 その実用言語って何
845 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 16:39:47.12 ] 融通が利かないことを実用って言うのはちと無理があるわな ネイティブ吐けてシステム記述できてCの資産が流用できる言語が他にないから 仕方なくC++使ってるってのが実際 いくら流行の機能入れても元が腐ってるからまともな言語設計が出来るはずもない 中の人に呪術染みた技巧コードを量産するテンプレートオナニストが集まりすぎた Dが実用ってのはもっと無理だ 書きやすくていいんだけど今んとこ遊びにしか使えないよ
846 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:39:35.33 ] >Cの資産が流用できる言語が他にない これは大きいね。Cは仕様がコンパクトでコンパイラを簡単に作れるから 「高級言語としてCだけはある」みたいな環境がぼろぼろ存在するからね。 Cの資産は膨大だ。
847 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 18:55:18.22 ] FFI知らんの?
848 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 19:54:59.63 ] 欧陽菲菲ネ
849 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:16:11.58 ] もっとマシなものがあるなら流行っているはず
850 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:38:53.28 ] >Cの資産が流用できる言語が他にない Objective-Cがあるだろ
851 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 03:54:06.49 ] はぁ?
852 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:20:52.18 ] Objective-Cは11より変態だろ…
853 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 04:47:53.01 ] ObjCが変態なのは否定しないけど、なんで変態なのかというと追加された文法がCから見てキモいからだろう。 (機能的には、OOP部分と組み込み型が別体系ってのは珍しくない。JavaやDもそうだし) C++もenum classやunified function syntaxでCとは別物を被せる方向に舵を切ったじゃないか。ObjCのことは言えないと思うぜ。 あと曲がりなりにも実際に大規模に使われてる言語に対して「はぁ?」とか反応しちゃう視野の狭さが、 もっとマシなものが出てこない一番の原因と思うね。
854 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 05:38:10.01 ] 例え嫌々だろうが必要な時に使えて目的に適うならそれでいい。それがC++。
855 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 06:36:45.23 ] C++は落ち目
856 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 06:40:37.27 ] じゃあ上り調子のC#でも使うか
857 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:21:17.05 ] ObjCはCの理念と反するからな 実行コストがかかりすぎる
858 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:47:11.20 ] けっきょくC++しか選択肢がない
859 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:55:12.81 ] そう思ってるのはC++使いだけ C使いはC++も実行コストかかり過ぎだって思ってるよ
860 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:57:07.41 ] けっきょくC/C++しか選択肢がない
861 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:57:08.63 ] あぁ、「思ってる」な。知ってるぜ。
862 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:58:01.60 ] そう思ってるのはC使いだけ アセンブラ使いはCも実行コストかかり過ぎだって思ってるよ
863 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 07:59:52.11 ] でもC++は落ち目で、Cはそうじゃないけどね
864 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:01:02.85 ] CもC++使いもあと数年すればDに駆逐される運命だと言うのに哀れよのぅ
865 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:01:31.65 ] >>849 良いものは自然と普及するという考え方はやめた方がいい
866 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:05:05.06 ] Dってそんなにいいか?
867 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:09:40.92 ] Dは誰にも見向きされずに消えていく…
868 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 08:21:54.93 ] D覚えるくらいならC++と他の高級言語を使い分けるほうがいいからな
869 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 09:11:22.75 ] C++覚えるぐらいならCと適当なスクリプト言語でいいって層の方が多いと思うぜ
870 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 09:36:59.37 ] Dは配列でLinqできるのが面白かったけど、発展途上の時はメインには押し難い。GCはプラス要素だと思うんだけど。
871 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:05:16.29 ] Objective-Cの実行コストってCに比べてどんくらい落ちるもんなの? Effective C++の序文によるとC++は5%以内ってハゲが決めてるそうだけど Objective-Cにもそういう約束事があるのかしら?
872 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 11:26:27.63 ] >>871 Objective-Cのメソッド呼び出しはインタプリタ言語並の遅さ
873 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 12:46:09.18 ] Objective-CはC++でラップしてしまえば 後はC++で作れる
874 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 14:39:25.43 ] な、俺の予想したとおりになったろ
875 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:01:51.25 ] ああ、すごいごい。 で、どんな予想したの?
876 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:37:31.14 ] >>859 そういやCよりC++の方が遅いとはよく聞いたが、 あれの根拠はなんなんだ?実行イメージのロード時間? C++のライブラリ使わない限りCと速度が変わることはないはずだが。 あと、C++のライブラリ使わず単に言語機能だけでコードを組むと 大概Cより速くなるんだがな。仮想関数とか分岐が固定されてると インライン展開されて構造体に突っ込んだ関数のコールバックより速い。
877 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:39:38.88 ] >>872 どんな言語でもメッセージ送信と同等の機能を組めば同じような速度だろうけどな。
878 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:43:00.53 ] >>876 C++にはrestrictが無い(コンパイラの独自拡張を除く)
879 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:48:57.84 ] >>878 なにC++11ならあるだろ。じゃないとインターフェース互換なくなる。
880 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 20:59:19.93 ] Cとインターフェースレベルでの互換性なくしたら標準ライブラリとか阿鼻叫喚になるわな。 何が楽しくて同じ関数をC用とC++用二つもつくらにゃならんのだ。
881 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 21:03:59.88 ] >可変長配列 (VLA) は含まれない (天のお恵みに感謝!) www32.ocn.ne.jp/~ons/text/CPP0xFAQ.html.ja#C99 何がお恵みに感謝だよ。シネバいいのに。
882 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 21:46:47.36 ] C++11にrestrictがあるというソースくれ
883 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 22:15:49.72 ] ねえよ
884 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 22:27:35.98 ] >>882 restrictがあるというと正確ではないかもしれんがC++ 11 FDIS §17.2のあたり
885 名前:デフォルトの名無しさん mailto:sage [2012/03/26(月) 23:07:03.45 ] >>871 んなこたぁない
886 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:56:53.40 ] >>884 C++にはrestrictが無いって書いてあると読めますね
887 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 06:59:42.26 ] より正確には、CのライブラリにrestrictがあってもC++はそれを無視すると書いてある > The descriptions of many library functions rely on the C standard library > for the signatures and semantics of those functions. > In all such cases, any use of the restrict qualifier shall be omitted.
888 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:19:37.77 ] 無視しろっていう意味ではなくて restrict を消したヘッダを別に用意するか マクロで消すかしろってことだと思うな、その箇所。
889 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:22:31.14 ] そうなんか。処理系が頑張るんじゃなくて(ある意味人力で) restrictの記述を落とすのか... 確かにそう読めるな
890 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 07:26:35.37 ] 素直に無視すりゃいいのになんでそんな面倒な事になったんだ?
891 名前:デフォルトの名無しさん mailto:sage [2012/03/27(火) 08:28:56.21 ] 17.2 は 「C標準ライブラリは一部変更を加えて、C++でも提供する」 細かい変更箇所はあとで言うけど restrict についてはいちいち述べているときりがないから 「restrict は一律消去で」ヨロ という意味 restrict 以外にも変更箇所はあるのに、これだけ特別扱いで 言語レベルで無視というのは非合理かと
892 名前:デフォルトの名無しさん mailto:sage [2012/03/28(水) 16:14:01.14 ] C++からCのライブラリを使うという観点では、 restrictはライブラリ書く人が、 利用者に対して利用上の注意を求めるものだから、 無視しても実装が警告の機会を逃すくらいしかデメリットがない。 大域変数の修飾でも最適化の機会を逃すだけ。