C++0x 13
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/07/21(木) 18:26:01.14http://www.open-std.org/jtc1/sc22/wg21/
Wikipedia
http://ja.wikipedia.org/wiki/C%2B%2B0x
前スレ: C++0x 12
http://hibari.2ch.net/test/read.cgi/tech/1298470844/
0002デフォルトの名無しさん
2011/07/21(木) 18:26:42.58http://pc11.2ch.net/test/read.cgi/tech/1149440647/
C++0x 2
http://pc11.2ch.net/test/read.cgi/tech/1191842951/
C++0x 3
http://pc11.2ch.net/test/read.cgi/tech/1204808027/
C++0x 4
http://pc11.2ch.net/test/read.cgi/tech/1214407525/
C++0x 5
http://pc12.2ch.net/test/read.cgi/tech/1232460649/
C++0x 6
http://pc12.2ch.net/test/read.cgi/tech/1245092251/
C++0x 7
http://pc12.2ch.net/test/read.cgi/tech/1253280377/
C++0x 8
http://pc12.2ch.net/test/read.cgi/tech/1262874195/
C++0x 9
http://pc12.2ch.net/test/read.cgi/tech/1269623636/
C++0x 10
http://hibari.2ch.net/test/read.cgi/tech/1275375522/
C++0x 11
http://hibari.2ch.net/test/read.cgi/tech/1285884294/
0003デフォルトの名無しさん
2011/07/21(木) 18:27:32.83C1x
http://hibari.2ch.net/test/read.cgi/tech/1296642667/
0004デフォルトの名無しさん
2011/07/21(木) 19:41:04.13201x中に出せるかどうかは怪しいけど
0005デフォルトの名無しさん
2011/07/21(木) 19:42:18.660006デフォルトの名無しさん
2011/07/21(木) 23:56:28.58最後なので事情通の人、C++学園のまとめを書いていただけたら
0007デフォルトの名無しさん
2011/07/22(金) 00:18:26.620008デフォルトの名無しさん
2011/07/22(金) 01:42:57.190009デフォルトの名無しさん
2011/07/22(金) 05:06:20.460010デフォルトの名無しさん
2011/07/22(金) 05:37:11.99コンパウンドリテラルとかコンストラクタあったら要らないし
0011デフォルトの名無しさん
2011/07/22(金) 07:58:47.87これは何で?
例外のせい?
0012デフォルトの名無しさん
2011/07/22(金) 08:24:25.040013デフォルトの名無しさん
2011/07/22(金) 10:58:58.300014デフォルトの名無しさん
2011/07/22(金) 14:47:46.630015デフォルトの名無しさん
2011/07/22(金) 19:06:15.380016デフォルトの名無しさん
2011/07/22(金) 20:47:52.66dataだとconst付きのchar*が返っちゃうし
0017デフォルトの名無しさん
2011/07/22(金) 22:39:48.15てか、禿はほぼ100% C99と互換性もたせるんじゃなかったのかよ。
0018デフォルトの名無しさん
2011/07/23(土) 00:13:43.640019デフォルトの名無しさん
2011/07/23(土) 00:15:51.95つかなんでみんなこれ無視すんだ。
0020デフォルトの名無しさん
2011/07/23(土) 00:18:06.780021デフォルトの名無しさん
2011/07/23(土) 00:23:17.800022デフォルトの名無しさん
2011/07/23(土) 00:38:10.76メモリ中を捜査して空き容量捜し回ってんだから1回の加算だけでメモリ確保する
alloca方式には敵わんわなぁ。
0023デフォルトの名無しさん
2011/07/23(土) 00:48:39.63#define MKVARRAY(a,b,c,d) c*const b=alloca(sizeof(c)*d);vArray<c>a(d,b);
MKVARRAY(varray,ptmp,char,size);
varray[0]="";
インラインを展開期待のallocaバージョン書いてみた
0024デフォルトの名無しさん
2011/07/23(土) 04:30:44.77> C++ programmers use arrays less than C programmers do.
Instead, vectors, std::tr1:array, std::string and smart pointer classes are used.
Furthermore, supporting VLAs would entail the changing of sizeof’s semantics,
just as in C99. This is against the design philosophy of C++ which forced the
separation between operator dynamic_cast and the remaining compile-time
typecast operators. However, VLAs are still a problem if you try to compile
a C source file using a C++ compiler.
sizeofのセマンティクスに変更を強いる(sizeofがコンパイル時に確定できない)から駄目ってことですかね?
0025デフォルトの名無しさん
2011/07/23(土) 08:41:21.520026デフォルトの名無しさん
2011/07/23(土) 09:51:52.52だとしてC++で問題あるの?
0027デフォルトの名無しさん
2011/07/23(土) 09:59:39.100028デフォルトの名無しさん
2011/07/23(土) 10:03:57.10うん
0029デフォルトの名無しさん
2011/07/23(土) 10:31:41.81実装方法? コンパイラが頑張れ
0030デフォルトの名無しさん
2011/07/23(土) 10:39:26.050031デフォルトの名無しさん
2011/07/23(土) 10:45:10.78関数内で利用が完結している場合はallocaして
グローバル変数の時は静的に確保する万能クラスを!
……どーかんがえても組み込みの配列拡張したほうが早い→そしてVLAへ……
0032デフォルトの名無しさん
2011/07/23(土) 10:51:24.13ローカル変数のアドレスの扱いは自己責任が基本
0033デフォルトの名無しさん
2011/07/23(土) 10:53:13.35arrayで十分
0034デフォルトの名無しさん
2011/07/23(土) 10:55:02.70sizeofは頻繁に出てくる分、動的sizeofになったときの影響のほうがでかいのだろうか…
一応TR2にdynarrayという動的配列のようなテンプレートクラスが提案されていたりする
0035デフォルトの名無しさん
2011/07/23(土) 11:06:34.65size()でサイズ取得するなら
sizeofはクラス自体のサイズでいいからな
0036デフォルトの名無しさん
2011/07/23(土) 11:13:26.01VLAくらいしかやることないだろ。
0037デフォルトの名無しさん
2011/07/23(土) 12:32:16.91配列の長さはsize()で取得
メモリ確保やメンバ関数の動作は組み込みで
0038デフォルトの名無しさん
2011/07/23(土) 12:42:04.120039デフォルトの名無しさん
2011/07/23(土) 12:46:07.370040デフォルトの名無しさん
2011/07/23(土) 12:47:32.360041デフォルトの名無しさん
2011/07/23(土) 13:06:55.53共存なんて夢のまた夢だよ
0042デフォルトの名無しさん
2011/07/23(土) 13:11:46.61C99との共存とか要らない
0043デフォルトの名無しさん
2011/07/23(土) 14:23:35.570044デフォルトの名無しさん
2011/07/23(土) 15:09:57.730045デフォルトの名無しさん
2011/07/23(土) 15:13:34.60……いやフルにあるかというと微妙かもしれないが
0046デフォルトの名無しさん
2011/07/23(土) 15:39:31.68現実的に今さら問題になるような事は無いと思うけど。
0047デフォルトの名無しさん
2011/07/23(土) 15:57:07.380048デフォルトの名無しさん
2011/07/23(土) 16:41:37.910049デフォルトの名無しさん
2011/07/23(土) 19:10:23.28これ以上きもい文法はなるべく要らないと
ラムダくらいメリットが無い限り
0050デフォルトの名無しさん
2011/07/23(土) 19:33:18.450051デフォルトの名無しさん
2011/07/23(土) 21:39:41.16過去の資産なんてコンバータ通せば十分だろ
0052デフォルトの名無しさん
2011/07/23(土) 21:45:31.260053デフォルトの名無しさん
2011/07/23(土) 21:46:15.15C++からコンバート可能ということは、例え文法が違うとしても
キモい部分含めてC++の全機能を持ってないといけないということだぞ。
0054デフォルトの名無しさん
2011/07/23(土) 22:04:58.23ソースはD言語
0055デフォルトの名無しさん
2011/07/23(土) 22:17:04.810056デフォルトの名無しさん
2011/07/23(土) 22:47:16.61そんなアナタに D と Go
0057デフォルトの名無しさん
2011/07/23(土) 23:03:20.901パスでコンパイルするためにめんどくさくなってる部分はあるけど
それに、AppleのBlockの酷さを見たら、ラムダさんはもうあれでいいと思うよ
0058デフォルトの名無しさん
2011/07/23(土) 23:29:31.94前にラムダなんかやめてBlocksを標準にしろって林檎信者が暴れてたけど
0059デフォルトの名無しさん
2011/07/23(土) 23:40:22.96http://en.wikipedia.org/wiki/Blocks_(C_language_extension)
こんなものをClangに実装させられるGregor先生が可哀想。
0060デフォルトの名無しさん
2011/07/23(土) 23:40:54.20Rubyのブロックの改行がイラっとするし、メッセージやブロック関連が一貫されてないのが
意味が解からん。あとVBはなんで戻り値返すか、返さないかだけでサブルーチンの書き方変わるんだよ。
めんどくせぇだけじゃん。
0061デフォルトの名無しさん
2011/07/23(土) 23:43:19.980062デフォルトの名無しさん
2011/07/23(土) 23:48:18.36Blocksさん作った奴の言語設計センスはPHPの設計センスに匹敵するわ
0063デフォルトの名無しさん
2011/07/23(土) 23:56:12.03RubyはEiffel系統だ。VBは色々混じってるがFortran系統だ。
endってキーワードが同じだけでPascal/Modula系統と一緒にするんじゃねえ。ぜんぜん違う。
0064デフォルトの名無しさん
2011/07/24(日) 00:58:06.390065デフォルトの名無しさん
2011/07/24(日) 01:18:08.41逆にModula以降は全部procedureだぜ。そんな事も知らないのはWirth先生に失礼だろ。
0066デフォルトの名無しさん
2011/07/24(日) 02:55:22.51C#でyield return見たときキモかったけど、理屈抜きで使えば便利だw
0067デフォルトの名無しさん
2011/07/24(日) 03:15:14.910068デフォルトの名無しさん
2011/07/24(日) 05:29:57.56明示的にBlock_release()する必要があるか、スコープ抜けたら勝手に処理されるかは
かなり決定的な違いだと思うんだが
0069デフォルトの名無しさん
2011/07/24(日) 05:40:57.21クロージャ云々よりもそれこそまず動的配列だしなあw
暗黙に生成されるコードがほとんど無い利点を潰すほどじゃないでしょ
0070デフォルトの名無しさん
2011/07/24(日) 05:54:58.30スコープ抜けたらスタックから消えるってのは普通にC言語の文化を踏襲してるだけだから
そもそもなんでBlock_releaseなんてものが必要な仕様にしたのかが分からん
0071デフォルトの名無しさん
2011/07/24(日) 05:57:29.65ブロックだってBlock_copyしなきゃreleaseもいらんのでは?
0072デフォルトの名無しさん
2011/07/24(日) 05:59:53.21Blocksは変数キャプチャしたラムダを返値にする時はBlock_copyが必要
スタックからスタックにラムダをコピーできない
0073デフォルトの名無しさん
2011/07/24(日) 06:23:55.75C++のようにラムダごとに別の型ってわけにもいかないし。
0074デフォルトの名無しさん
2011/07/24(日) 06:38:41.34デストラクタ機構がないとスコープ脱出で自動処理とか出来ないもんなぁ
そもそもキャプチャ情報なんて動的オブジェクトになるんだから本質的にCと相性悪いので
Cに無理矢理ねじ込んだ時点でどう転んでもセンスの悪い設計にしかならない罠
0075デフォルトの名無しさん
2011/07/24(日) 06:43:41.72要はallocaモドキの動作で無理やり呼び出し元のスタックに領域を作って返す、ってことだけど。
コンパイラに大改造が必要になる上に最近のCPUとも相性悪いけど。
0076デフォルトの名無しさん
2011/07/24(日) 06:50:04.16そりゃ返値を返すだけなら方法はいくらでもあるが、
それを構造体メンバに代入したいとか言ったら結局詰むから何も解決してないよ。
0077デフォルトの名無しさん
2011/07/24(日) 06:54:01.09親関数がスタック上にある場合のみ有効なdownward限定モードもあるといいなあとは思う。C++も含めて。
これなら関数ポインタとフレームポインタの組だけで済むしコピーとか後始末とか全く要らないんで非常に軽量。
初期のD言語のdelegateってことだけど。
0078デフォルトの名無しさん
2011/07/24(日) 06:57:16.44C++的にはそれは「ムーブでやれ」じゃないかな
0079デフォルトの名無しさん
2011/07/24(日) 10:41:16.65ああいうダサい感じになるのも仕方が無いよ
デストラクタのあるC++とは違う
0080デフォルトの名無しさん
2011/07/24(日) 11:02:29.12Boehm GCみたいなGC前提にしてくれた方が良いわ
0081デフォルトの名無しさん
2011/07/24(日) 11:13:23.640082デフォルトの名無しさん
2011/07/24(日) 11:14:33.54下手にGC前提とかgccのようなスタックに実行属性付けるの前提とかやられたほうが
C/C++両対応コンパイラにとっては痛すぎるぞ。
0083デフォルトの名無しさん
2011/07/24(日) 11:17:40.340084デフォルトの名無しさん
2011/07/24(日) 11:18:32.01なるほど
0085デフォルトの名無しさん
2011/07/24(日) 11:23:47.40もうC1Xに入る可能性は殆ど無いと思う
0086デフォルトの名無しさん
2011/07/24(日) 11:29:31.24てかあんなのがC1Xに入ったらC++系にC1Xは入れないでくれと言いたくなるぞ
>>82
Appleが出したBlocks提案にはGCの仕様も入ってるんだよ……(ゴクリ
あいつらに言語設計させないで欲しい
0087デフォルトの名無しさん
2011/07/24(日) 11:37:39.89ABI的にはキャストすればそのまま渡せるぐらいだろ?
それにGCつったってC++だってGCの想定はしてるじゃないか。
0088デフォルトの名無しさん
2011/07/24(日) 11:57:14.380089デフォルトの名無しさん
2011/07/24(日) 12:00:10.07Cにデストラクタやコピーコンストラクタなんて入れられるはずもないんだから。
あれか?C99の複素数もゴミと思ってるタイプ?
0090デフォルトの名無しさん
2011/07/24(日) 13:08:26.76C層への実装が適切かどうか設計時点で疑問を覚えるべき由々しき違いだと思うぞ。
0091デフォルトの名無しさん
2011/07/24(日) 14:11:56.93だとしたらすごい傲慢な意見と思うが。
CにはC++の事なんか気にする理由は全くない。
ブロックが没になるとしても純粋にC言語としてどうかって観点でのみ語られるべきで
上位言語でもっと上手い実装方法があるからなんてのは考慮されるべきではないだろ
0092デフォルトの名無しさん
2011/07/24(日) 14:50:41.12どうせObj-C決め打ち環境での独自拡張なんだからObj-Cのメッセージ機構として実装すればよかったのにとは思うぞ
0093デフォルトの名無しさん
2011/07/24(日) 14:53:22.7264ビット幅の型とか、曖昧な部分の明確化とかのメンテナンス的な地味な改定だけでいいよ…
今更新しい機能を入れるとかやめてー
0094デフォルトの名無しさん
2011/07/24(日) 15:05:11.58K&R時代の気分で
0095デフォルトの名無しさん
2011/07/24(日) 15:17:44.50今のブロックやC++0xのラムダは所詮struct+関数ポインタのシンタックスシュガーだからどうでもいいけど
gccのスタックを実行するタイプのラムダなら規格に欲しい。
あと可変長返値なんて欲しいと思わないか?strdupa(strdup+alloca)なんかをアセンブラじゃなくてCで書けるようになるぜ?
0096デフォルトの名無しさん
2011/07/24(日) 16:00:15.680097デフォルトの名無しさん
2011/07/24(日) 17:59:24.70えー
0098デフォルトの名無しさん
2011/07/24(日) 18:04:26.99単なるシンタックスシュガーではないのだろうけど、
0xのラムダは単にキャプチャ対象変数をメンバに持つ
関数オブジェクトを作ってるに過ぎない
0099デフォルトの名無しさん
2011/07/24(日) 20:09:39.110100デフォルトの名無しさん
2011/07/24(日) 20:23:12.18だからメモリをだろ。
Lisp だと lambda 使いまくりだけど、 GC が無かったらかなり使い難い言語だっただろうなーとは思うので >>98 に同意。
0101デフォルトの名無しさん
2011/07/24(日) 20:28:36.780102デフォルトの名無しさん
2011/07/24(日) 20:43:49.16管理して欲しいっていうか、管理していないからただのシンタックスシュガーだって >>98 は書いてるだけだろ。
シンタックスシュガーが悪いってわけじゃないが、結局は何のシンタックスシュガーなのかをわかってないと
メモリ管理で躓くことになる。 lambda は C++ 的には無理のある構文だと思うんだよなー。
0103デフォルトの名無しさん
2011/07/24(日) 23:24:07.70なんでラムダがメモリの管理なんかしなきゃならないの?
0104デフォルトの名無しさん
2011/07/24(日) 23:29:40.41>>73
std::functionだってメモリ管理はしてるだろ。
>>96
gccそのままじゃなくてもいくらでもやりようはある。
通常スタックから分離された実行可能属性付きのふたつめのスタックを用意するとか、
親関数の呼び出し時点でスタックフレーム自体をヒープに取ってしまうとか。
細部はどうでも良くて、コンパイラが直接サポートするならいくらでも効率の良い方法が
取り放題だし、そうでなくてはコンパイラが直接サポートする意味が無い。
0105デフォルトの名無しさん
2011/07/25(月) 00:13:46.46ラムダの基底クラスとかあって、さらに動的に管理されていれば、
ラムダを返す関数を作って、
ラムダの基底クラスのポインタで受けれたりする
GCないから無理だろうけどねー
0106デフォルトの名無しさん
2011/07/25(月) 00:38:48.63std::functionで受ければいいじゃん
0107デフォルトの名無しさん
2011/07/25(月) 00:42:57.49シグネチャの異なるラムダを同じ変数に格納出来たら呼び出しが静的に解決できないから論外だし
同じシグネチャで異なるキャプチャのラムダは当然同じstd::functionで受け取れるようになってて
つまるところ一種のスマポとして働いてるわけでメモリは管理されてるしむしろこれ以上何を管理して欲しいのか分からん
おまいさんが言うところの「メモリ管理」ってのは何を指してるんだ
0108デフォルトの名無しさん
2011/07/25(月) 01:23:52.12GCなりスタックなりを上手く使えば「std::functionにローカル変数への参照をひとつひとつ持った関数オブジェクトを格納する」よりもっと効率のいいやり方があるって話だろ
0109デフォルトの名無しさん
2011/07/25(月) 01:27:02.190110デフォルトの名無しさん
2011/07/25(月) 01:27:57.850111デフォルトの名無しさん
2011/07/25(月) 01:34:54.810112デフォルトの名無しさん
2011/07/25(月) 01:52:31.43いやそれは流石に無理やり相手が勘違いしてることにしたいとしか思えん
GCは、もしGC環境下ならの仮定の話だろ
0113デフォルトの名無しさん
2011/07/25(月) 01:52:53.50参照キャプチャする場合の話をしてるのか、コピーキャプチャする場合の話をしてるのか
そこからして最早分からなくなってきた。
俺は後者の話をしているものだとばかり思っていたのだが。
0114デフォルトの名無しさん
2011/07/25(月) 01:56:59.33「ローカル変数への参照をひとつひとつ」とか言ってるのでそのレベルから勘違いしている可能性は高いと思うぞ
0115デフォルトの名無しさん
2011/07/25(月) 01:57:31.14俺はどっちかと言えばスタック操作派のほう。
0116デフォルトの名無しさん
2011/07/25(月) 02:04:34.34C++の関数オブジェクトはネストされたスタックポインタをメンバに記録しておけるからわざわざトランポリンとかする必要もない。
コピーキャプチャの場合なら、
どのみちコピーは必要なんだからメモリ確保してそこにコピーしてstd::function自体がスマポとして振る舞えばいい。
GCの出番は無いと思うんだが。
0117デフォルトの名無しさん
2011/07/25(月) 02:31:26.750118デフォルトの名無しさん
2011/07/25(月) 02:36:13.550119デフォルトの名無しさん
2011/07/25(月) 02:42:00.620120デフォルトの名無しさん
2011/07/25(月) 03:02:45.98それが許されない状況があるからC++を使ってるわけなんだけど。
0121デフォルトの名無しさん
2011/07/25(月) 06:17:14.120122デフォルトの名無しさん
2011/07/25(月) 11:27:48.23そしてそう思わない人たちがObjective-C(++)を改築してる。
方向が違いすぎて相容れない。
Blocksは@Appleだけで幸せにやっていくと思われ
0123デフォルトの名無しさん
2011/07/25(月) 20:50:00.82時々無性に欲しくなる。
Holder<InterfaceA,MethodA> objectA;
Holder<InterfaceB,MethodB> objectB;
object.MethodA();
object.MethodB();
//MethodA,MethodBは引数で渡された名前が付いてるだけで同じ物。
0124デフォルトの名無しさん
2011/07/25(月) 20:54:53.710125デフォルトの名無しさん
2011/07/25(月) 21:03:59.39AとB書き忘れた。
0126デフォルトの名無しさん
2011/07/25(月) 21:07:19.660127デフォルトの名無しさん
2011/07/25(月) 21:09:08.950128デフォルトの名無しさん
2011/07/25(月) 21:27:07.32template<typename T, funcname F> struct Holder { void F(){} };
0129デフォルトの名無しさん
2011/07/25(月) 21:36:11.73そんな感じ。要するにメンバー変数とかメンバー関数の名前をテンプレート引数で指定するって事。
0130デフォルトの名無しさん
2011/07/25(月) 22:40:38.070131デフォルトの名無しさん
2011/07/25(月) 23:43:11.63なんであるかはよく分からないが。
template<typename T, typename U, funcname F> U func { return T.F(); }
こんな感じなのだろうか…
staticに決まらなくていいならいろいろやり方あるのがC++だが。
0132デフォルトの名無しさん
2011/07/26(火) 00:14:20.62それで嬉しくなる使い方ってのがいまいち想像できんなぁ
0133デフォルトの名無しさん
2011/07/26(火) 01:47:23.60C++でも必要ならマクロを使ってもいいんだぞ。
#include <iostream>
#define CreateHolder(name, interface, method)\
class Holder##name {\
int method_impl() { return 1; }\
public:\
int method() { return method_impl(); }\
}
int main() {
CreateHolder( A, InterfaceA, MethodA );
HolderA objectA;
CreateHolder( B, InterfaceB, MethodB );
HolderB objectB;
std::cout << objectA.MethodA() << " " << objectB.MethodB() << std::endl;
return 0;
}
0134デフォルトの名無しさん
2011/07/26(火) 14:59:14.280135デフォルトの名無しさん
2011/07/26(火) 15:07:35.980136デフォルトの名無しさん
2011/07/26(火) 16:49:00.57lambdaだけ。
0137デフォルトの名無しさん
2011/07/26(火) 17:41:31.220138デフォルトの名無しさん
2011/07/26(火) 17:42:31.42特殊化の恩恵が受けられないけどね。
0139デフォルトの名無しさん
2011/07/26(火) 20:03:25.000140デフォルトの名無しさん
2011/07/26(火) 20:33:06.730141デフォルトの名無しさん
2011/07/26(火) 20:37:52.30templateと組み合わせればいいよね。
俺もdecltypeがない時代にはよく作ってた。
0142デフォルトの名無しさん
2011/07/26(火) 23:37:40.100143デフォルトの名無しさん
2011/07/26(火) 23:58:24.60予約語は広域名前空間の所属って事にしとけば、コンテキスト依存とか
作らずに済んで今後のキーワード追加が楽になっただろうに。
0144デフォルトの名無しさん
2011/07/27(水) 00:04:04.940145デフォルトの名無しさん
2011/07/27(水) 00:05:56.19そのやり方だと、広域でない名前空間に予約語を名前として登録できてしまうが?
0146デフォルトの名無しさん
2011/07/27(水) 00:09:07.260147デフォルトの名無しさん
2011/07/27(水) 00:16:07.700148デフォルトの名無しさん
2011/07/27(水) 00:17:48.75使いもしないexportとかに延々と予約語として居座られてるよりましだろ。
import(),export()メンバーとか素敵やん。
0149デフォルトの名無しさん
2011/07/27(水) 00:45:56.40名前の意味が変わってしまうほうがましか…
さすが思い付き君w
0150デフォルトの名無しさん
2011/07/27(水) 02:04:45.590151デフォルトの名無しさん
2011/07/27(水) 02:37:15.170152デフォルトの名無しさん
2011/07/27(水) 06:04:59.540153デフォルトの名無しさん
2011/07/27(水) 11:25:20.82自分は本を沢山読むことを誇りにしているからなのかもね。
0154デフォルトの名無しさん
2011/07/27(水) 12:06:44.07そんな話はマ板でやれば?
0155デフォルトの名無しさん
2011/07/27(水) 12:56:50.210156デフォルトの名無しさん
2011/07/27(水) 13:26:51.26autoぐらい?
0157デフォルトの名無しさん
2011/07/27(水) 13:32:26.39GCCか?ここ見ろ。
ttp://gcc.gnu.org/gcc-4.6/cxx0x_status.html
0158デフォルトの名無しさん
2011/07/27(水) 13:43:00.870159デフォルトの名無しさん
2011/07/28(木) 11:33:12.80stdに入れた意味が分からない
0160デフォルトの名無しさん
2011/07/28(木) 12:01:35.24shared_ptr使うくらいなら作るよね
0161デフォルトの名無しさん
2011/07/28(木) 13:03:29.860162デフォルトの名無しさん
2011/07/28(木) 13:15:12.630163デフォルトの名無しさん
2011/07/28(木) 14:47:15.73要らんときにまで無駄なコストが掛かる
0164デフォルトの名無しさん
2011/07/28(木) 15:56:50.780165デフォルトの名無しさん
2011/07/28(木) 16:42:30.780166デフォルトの名無しさん
2011/07/28(木) 17:58:21.650167デフォルトの名無しさん
2011/07/28(木) 18:54:44.40コンパイラがその使用を強制する訳ではないし
必要で可能ならBoehm GCとかを使う自由は常に残されてる訳で
0168デフォルトの名無しさん
2011/07/28(木) 19:40:46.33shared_ptr はライブラリでOK
0169デフォルトの名無しさん
2011/07/28(木) 23:27:13.790170デフォルトの名無しさん
2011/07/29(金) 03:33:44.560171デフォルトの名無しさん
2011/07/29(金) 04:45:31.460172デフォルトの名無しさん
2011/07/29(金) 07:48:15.820173デフォルトの名無しさん
2011/07/29(金) 07:48:40.86ライブラリのままでもいいような……
いまのライブラリ形式と比べてなにかいいことあるか?
0174デフォルトの名無しさん
2011/07/29(金) 08:03:14.35コンパイラでインライン展開された時に最適化できる余地が増えるかも
0175デフォルトの名無しさん
2011/07/29(金) 11:28:03.550176デフォルトの名無しさん
2011/07/29(金) 21:57:50.470177デフォルトの名無しさん
2011/07/29(金) 22:09:14.590178デフォルトの名無しさん
2011/07/30(土) 00:06:48.85それならshared_ptrで十分じゃん
0179デフォルトの名無しさん
2011/07/30(土) 07:05:31.15実体や生ポでこさえたオブジェクトにはカウンタ付けない、カウンタは見えない触れない、生ポ→intrusiveは不可、循環参照は「知らんshared_ptr使え」で
A*intrusive a;
0180デフォルトの名無しさん
2011/07/30(土) 07:49:46.440181デフォルトの名無しさん
2011/07/30(土) 07:50:29.010182デフォルトの名無しさん
2011/07/30(土) 15:27:33.64intrusive をつけると自動的に参照カウンタを添加してくれる機能か
それってshared_ptrなんじゃ……
0183デフォルトの名無しさん
2011/07/30(土) 15:45:52.26組み込みは効率的に以下同文ってことを言いたいんだろう
0184デフォルトの名無しさん
2011/07/30(土) 16:30:24.980185デフォルトの名無しさん
2011/07/30(土) 16:33:49.320186デフォルトの名無しさん
2011/07/30(土) 16:40:48.330187デフォルトの名無しさん
2011/07/30(土) 16:49:03.890188デフォルトの名無しさん
2011/07/30(土) 16:56:11.70使ってない時でもコスト払うのはばからしい
0189デフォルトの名無しさん
2011/07/30(土) 17:07:26.24>>185じゃないけどマルチスレッドとデリータだろうな
影響の大きさはともかく、
前者はカウンタの増減の実行速度に
後者はshared_ptrのサイズに影響する
これらをポリシー化すればもうちょいマシになると思うんだけどどうだろう
カウンタとデリータの確保は確かプ−ルから取ってるからこれ以上効率化するのは難しいだろうし
0190デフォルトの名無しさん
2011/07/30(土) 19:09:48.450191デフォルトの名無しさん
2011/07/30(土) 19:15:01.310192デフォルトの名無しさん
2011/07/30(土) 21:43:06.28ソース中で使わなきゃ無駄に動かないだろ。
例外と同じ。
0193デフォルトの名無しさん
2011/07/30(土) 21:47:11.54コピーやら代入やらもマルチタスク対応してんのにコレ使わなかったら共有ポインタの意義ゼロじゃねーか
なんか書き込みたい時はちゃんと少しは考えてからにしてくれ
0194デフォルトの名無しさん
2011/07/30(土) 23:10:18.820195デフォルトの名無しさん
2011/07/31(日) 16:28:37.77auto_ptrの破壊コピも解消されて可用範囲広がるし
0196デフォルトの名無しさん
2011/07/31(日) 16:42:27.330197デフォルトの名無しさん
2011/07/31(日) 17:22:20.44条件の無い代入やconstポインタ等コンパイル時で有る程度決定できるだろうし
0198デフォルトの名無しさん
2011/07/31(日) 17:42:59.90パフォーマンスを気にしてもしゃーないところを適当に済ませる分にはシェアポは優秀
0199デフォルトの名無しさん
2011/07/31(日) 18:12:37.280200デフォルトの名無しさん
2011/07/31(日) 18:24:24.030201デフォルトの名無しさん
2011/07/31(日) 19:32:36.20継承すると一時オブジェクトのみ作れなくなるようなクラスって作れませんか?
0202デフォルトの名無しさん
2011/07/31(日) 20:07:37.99ポインタ返すようにすれば0x関係ないな
0203デフォルトの名無しさん
2011/07/31(日) 23:02:32.74ならどうやっても無理
0204デフォルトの名無しさん
2011/08/01(月) 03:27:13.500205デフォルトの名無しさん
2011/08/01(月) 03:28:16.260206デフォルトの名無しさん
2011/08/06(土) 00:05:26.32ちょっとだけだけど
0207デフォルトの名無しさん
2011/08/06(土) 00:11:13.61Sun ONE StdioのClamageさん、Oracleに留まっているのか。
0208デフォルトの名無しさん
2011/08/06(土) 16:26:32.470209デフォルトの名無しさん
2011/08/06(土) 16:28:50.230210デフォルトの名無しさん
2011/08/06(土) 18:17:18.910211デフォルトの名無しさん
2011/08/06(土) 20:16:21.410212デフォルトの名無しさん
2011/08/07(日) 00:42:42.12カウンタはvtblじゃなくてヒープのメモリ管理領域を拡張するかなんかして埋め込む形になると思うわ
「生ポの代入を認めず」になれば判別はコンパイルタイムに行えるから
一般的じゃないメモリモデルマシンの場合はどうなるか知らんけど
0213デフォルトの名無しさん
2011/08/07(日) 03:01:47.97> 「生ポの代入を認めず」になれば判別はコンパイルタイムに行えるから
研究レベルでも行える時がたまにあるレベルです。
0214デフォルトの名無しさん
2011/08/07(日) 04:06:46.780215デフォルトの名無しさん
2011/08/08(月) 13:46:33.79lambdaとか
llvmって素人がコードの投稿できるものなの?
0216デフォルトの名無しさん
2011/08/08(月) 14:09:03.040217デフォルトの名無しさん
2011/08/08(月) 14:14:21.160218デフォルトの名無しさん
2011/08/08(月) 18:00:07.14Clangの間違いか?
とりあえず開発者メーリングリスト読めよ。
0219デフォルトの名無しさん
2011/08/08(月) 18:36:28.73おっとApple社の悪口はそこまでだ
0220デフォルトの名無しさん
2011/08/08(月) 18:59:29.060221デフォルトの名無しさん
2011/08/08(月) 19:24:18.900222デフォルトの名無しさん
2011/08/08(月) 20:12:18.78いやむしろBlocksがそれじゃねという……
0223デフォルトの名無しさん
2011/08/08(月) 20:35:56.57最適化が期待できるし、カスタムフェーズ挟んで関数型言語のコンパイラみたく
スタックをヒープに取るような荒業もいれられるかもしれない。
まあスレチ。
0224デフォルトの名無しさん
2011/08/10(水) 17:39:59.360225デフォルトの名無しさん
2011/08/10(水) 17:41:00.730226デフォルトの名無しさん
2011/08/10(水) 17:56:14.39自分で実装するとどうしたってthisへの(無駄な)ポインタを持たせないといけないし。
0227デフォルトの名無しさん
2011/08/10(水) 19:21:54.850228デフォルトの名無しさん
2011/08/10(水) 19:36:17.78ttp://codepad.org/vYUHccGr
0229デフォルトの名無しさん
2011/08/10(水) 19:41:49.90できれば規格でサポートしてもらえると嬉しいのですが…
0230デフォルトの名無しさん
2011/08/10(水) 19:46:24.20ノーマルな関数形式はそろそろ何とかならんのかね。シンタックスシュガーでいいから。
>>228
バインド系ってこう書くのか。へぇー。
0231デフォルトの名無しさん
2011/08/10(水) 20:24:07.02どこも真似してないよね。なんでだろう?
0232デフォルトの名無しさん
2011/08/10(水) 20:33:57.470233デフォルトの名無しさん
2011/08/10(水) 20:35:51.320234デフォルトの名無しさん
2011/08/10(水) 20:40:14.770235デフォルトの名無しさん
2011/08/10(水) 21:06:35.97intとかならそれでいいけど、ユーザー定義のoperator +=があるクラスはどうする?
0236デフォルトの名無しさん
2011/08/10(水) 22:54:41.350237デフォルトの名無しさん
2011/08/11(木) 00:16:11.070238デフォルトの名無しさん
2011/08/11(木) 02:19:32.97定義がループしてるじゃねーかw
0239デフォルトの名無しさん
2011/08/11(木) 02:46:18.38え、どこが?
0240デフォルトの名無しさん
2011/08/11(木) 03:18:43.75ttp://ideone.com/boEdA
0241デフォルトの名無しさん
2011/08/11(木) 07:26:50.62みたいなマクロが欲しくなるな
0242デフォルトの名無しさん
2011/08/11(木) 07:32:28.870243デフォルトの名無しさん
2011/08/11(木) 11:42:28.55演算子オーバーロードは全列挙したらいけそうだね。
一般メンバ関数は方法ないかな?
0244デフォルトの名無しさん
2011/08/11(木) 13:48:14.01->をオーバーロードして実体のポインタを返すようにすればなんとか(shared_ptrとかの真似)。
ttp://ideone.com/4vi4m ... 前回のをそのまま改造したもの。一時アドレスの警告が出る。
ttp://ideone.com/24R9e ... getterでポインタを返すようにしたもの。
0245デフォルトの名無しさん
2011/08/11(木) 14:36:50.50プロパティなんだから、ポインタ返せるならそれこそ参照でもメンバに持ってればいいし。
->は、C++のセマンティクスとして微妙じゃね?
shared_ptrはポインタを踏襲しているから->だけど、プロパティはメンバ変数もどきだから.じゃないと整合性が
0246デフォルトの名無しさん
2011/08/11(木) 14:45:21.32プロパティを狭く捉え過ぎでは? > さも持っているかのように
0247デフォルトの名無しさん
2011/08/11(木) 15:08:48.29↓とかやりたいじゃん。
struct rect {
int left, top, right, bottom;
__property int width { read = get_width };
private:
int get_width(){ return right - left; }
}
0248デフォルトの名無しさん
2011/08/11(木) 15:24:52.580249デフォルトの名無しさん
2011/08/11(木) 17:47:18.96private: int _left;
public:
__property int left {
get(){return _left;}
set(int n){_left=n;}
};
0250デフォルトの名無しさん
2011/08/11(木) 19:53:18.31->だったらそのまま関数の呼び出しが自然に書けるかなと思ったんですが。
あとは()とか。http://ideone.com/cSQ3e
かなりC++0xから離れた話題が続いてしまったので、私からは以上です。
勉強になりました。ありがとうございました。
0251デフォルトの名無しさん
2011/08/12(金) 01:00:00.45struct A {
int get() const;
void set(int);
property int read_write(&A::get, &A::set);
property int readonly = &A::get;
property int writeonly(0, &A::set);
property int dynamic;
A(): dynamic(&A::get) {}
};
0252デフォルトの名無しさん
2011/08/12(金) 06:08:58.930253デフォルトの名無しさん
2011/08/12(金) 22:50:26.19int _value;
public:
PropertyMacro(int, Value)
{
int get() const { return self->_value; }
void set(int value) { self->_value = value; }
};
C++03でこんな感じに書けるようにしたことあったけど、作るだけ作って結局使ってないな
thisポインタ持たなくてもいいようになればなぁ
0254デフォルトの名無しさん
2011/08/12(金) 23:57:51.850255デフォルトの名無しさん
2011/08/13(土) 02:41:47.270256デフォルトの名無しさん
2011/08/13(土) 03:02:50.01単純にするために漏れ漏れpublic制約があるけど
#define CLOSE_GSTTER };
#define GSETTER(a,b)struct a{b a##_value;operator const b&()const{return a##_value;}const b&operator=(const b&x){return a##_value=x;} };
#define GSETTERFACTS(a,b)struct a{b a##_value;operator const b&()const{return a##_value;}
#define GSETTERFACTGS(a,b)struct a{b a##_value;
struct A{
GSTTER(MYINT,int)
GETTERFACTS(MYINT2,int)
  int operator=(const int x){return MYINT2_value=x/2;}
CLOSE_GSTTER };
0257デフォルトの名無しさん
2011/08/13(土) 04:12:03.330258デフォルトの名無しさん
2011/08/13(土) 04:27:44.30struct { int value; operator... } puropati; の形は
struct 内部で変数を宣言しなければならないのと
内部で宣言した変数にしかアクセスできない制限がありまする
0259デフォルトの名無しさん
2011/08/13(土) 12:45:56.590260デフォルトの名無しさん
2011/08/13(土) 14:06:36.49そうか……
0261デフォルトの名無しさん
2011/08/13(土) 16:31:39.140262デフォルトの名無しさん
2011/08/13(土) 16:50:28.54データーメンバーはprivateだから考えるまでもないし。
0263デフォルトの名無しさん
2011/08/13(土) 18:06:22.93C++11となったようだがC++0xの「0」とは何だったのか
0264デフォルトの名無しさん
2011/08/13(土) 18:14:55.400265デフォルトの名無しさん
2011/08/13(土) 19:42:36.340266デフォルトの名無しさん
2011/08/13(土) 20:27:37.37ttp://herbsutter.com/2011/08/12/we-have-an-international-standard-c0x-is-unanimously-approved/
The final ISO ballot on C++0x closed on Wednesday, and we just received the results: Unanimous approval.
The next revision of C++ that we’ve been calling “C++0x” is now an International Standard!
Geneva will take several months to publish it, but we hope it will be published well within the year,
and then we’ll be able to call it “C++11.”
I want to extend my thanks again to Bjarne Stroustrup for sharing his work with the world
and continuing to help move it forward,
and to all of the participants whose hard work went into achieving this important milestone in the history of a great language.
Thanks!
0267デフォルトの名無しさん
2011/08/13(土) 21:48:54.590bないし0cの0と、全会で一致しております。
0268デフォルトの名無しさん
2011/08/13(土) 22:06:35.98今FDIS読んでるといくつが誤植あるけど、直されてんのかね
113p2行目 ) が足りない
201p sometype と some_type が混在
あとどうでもいいけど、180pの [[ no return ]] はスペース空けてんのに
[[carries_dependency]] は空けてないのが気になる
71pの3行目も気になるんだけど、これは何が言いたいのだろうか?
pb の指す先に関わらず、&pb は OK だと思うんだけど
0269デフォルトの名無しさん
2011/08/13(土) 22:13:26.640270hiding
2011/08/13(土) 23:10:35.760271デフォルトの名無しさん
2011/08/13(土) 23:30:42.690272デフォルトの名無しさん
2011/08/13(土) 23:42:32.860273デフォルトの名無しさん
2011/08/14(日) 06:02:04.190274デフォルトの名無しさん
2011/08/14(日) 07:00:29.76原則としてFDISは修正不可、賛否表明のみだから多分残る。
さあ今すぐDefect Reportを!
0275デフォルトの名無しさん
2011/08/14(日) 08:04:28.510276デフォルトの名無しさん
2011/08/14(日) 09:55:19.85ということは実際はC++20あたりだな
0277デフォルトの名無しさん
2011/08/14(日) 10:57:15.33Stage: 50.60→投票終了
60.00→刊行作業中
60.20→発行
0278デフォルトの名無しさん
2011/08/14(日) 11:59:55.470279デフォルトの名無しさん
2011/08/14(日) 12:21:01.300280デフォルトの名無しさん
2011/08/14(日) 13:01:05.540281デフォルトの名無しさん
2011/08/14(日) 17:40:46.510282デフォルトの名無しさん
2011/08/15(月) 18:22:09.67次はC++xxで
0283デフォルトの名無しさん
2011/08/15(月) 18:41:28.66それ、C#の名前の由来で見掛けたようなw
0284デフォルトの名無しさん
2011/08/15(月) 18:58:28.960285hiding
2011/08/15(月) 19:24:36.070286デフォルトの名無しさん
2011/08/15(月) 21:53:09.020287デフォルトの名無しさん
2011/08/15(月) 22:01:50.860288hiding
2011/08/15(月) 23:05:52.37ともかく簡単に説明すると、
「空のconcept mapに意味はあるのか。concept mapは常に自動で生成されるべきだ」
という主張と
「いや、conceptは常に明示的であるべきだ。たとえシグネチャが同じでも、意味まで同じとは限らない。明示的に書かせるべきだ」
という主張がぶつかり合って、収集がつかなくなった。
0289デフォルトの名無しさん
2011/08/15(月) 23:27:21.04なるほど。ありがと。とりあえず明示的にして、あとで省略できるようにすればよかったのにね。
0290デフォルトの名無しさん
2011/08/16(火) 12:47:41.250291デフォルトの名無しさん
2011/08/16(火) 13:01:45.72事前の外部conceptsでなくテンプレート内で定義の必要を明示する方が良いわ
template<typename T>struct A{
bool operator(T a,T b){return CONCEPT<a,b>(a>b);} };
0292デフォルトの名無しさん
2011/08/16(火) 14:12:04.29sort(Iter b, Iter e) の区別がシグネチャからは付けられなくない?
0293デフォルトの名無しさん
2011/08/16(火) 16:19:56.690294デフォルトの名無しさん
2011/08/16(火) 17:26:54.94禿様のありがたいお言葉を聞きなさい
ttp://cpplover.blogspot.com/2009/08/bjarne-stroustrupconcept_14.html
0295デフォルトの名無しさん
2011/08/16(火) 22:43:12.87template<typename T,typename U>void sort(T a,U b){〜x=CONCEPT<a>(a.ite++);if(CONCEPT<a,b>(b.cmp(x,a.ite)))swap(〜}
template<typename T>void sort(T a,T b){〜x=CONCEPT<a>(a++);if(CONCEPT<a>(x<a))swap(〜}
0296hiding
2011/08/16(火) 23:37:28.13T型のオブジェクト通しに適用できるoperator <があり、さらにその戻り値がboolに変換可能か?
ぐらいしか判定できない。
しかしそれは、すでに現行のテンプレートで行っているじゃないか。
そういうことができなければ、正しくコンパイルエラーになる。
それは単なるシグネチの一致であって、そのoperator <が、実際には何を意味するのか保証できない。
コンセプトというのは、単なるシグネチャの一致ではなく、
たとえば、LessThanComparableとかの具体的な「意味」を表す名前をつけて、
たとえ同じoperator <であっても、単なるシグネチャの一致とは区別化できるところにあるんだよ。
0297デフォルトの名無しさん
2011/08/16(火) 23:47:26.44エラーメッセージをわかりやすくするシンタックスシュガーが必要であると
俺的に通訳すると継承を使わないインターフェイスが必要だったな、てなとこ
意味的に operator < と operator >= の対称性が保たれているかどうかなんて
「テスト工程すべて」をコンパイラの機能だなんて幻想は考えてないだろ
0298デフォルトの名無しさん
2011/08/17(水) 00:00:30.83あんなんコメントでいい
0299デフォルトの名無しさん
2011/08/17(水) 00:08:50.99たとえばoperator <が大小比較を意味して、a < b かつ b < c ならば a < cであるとか、
その他様々の保証としてのaxiomを書いたとしても、
それを検証してくれるようなツールは、まず近い将来に登場しないと思うんだよ。
禿は、ソースコード中に仕様書を書くための機能だって言ってるけど、
提案されていたaxiomの極端に制限された文法で書くよりは
自然言語による表現力の高い文法で書いたほうがいいにきまってるだろ。
0300デフォルトの名無しさん
2011/08/17(水) 01:24:41.10doxygen使えば良いじゃない、という感じ
0301デフォルトの名無しさん
2011/08/17(水) 12:57:12.100302デフォルトの名無しさん
2011/08/17(水) 13:17:03.93C++最大の革新でしょ? この温度は何?
0303デフォルトの名無しさん
2011/08/17(水) 13:19:24.710304デフォルトの名無しさん
2011/08/17(水) 13:28:37.5999.9%準拠のコンパイラが出るまでは特に今何か語ることもない
0305デフォルトの名無しさん
2011/08/17(水) 13:30:43.22そこでアフィってぼろ儲けしようという人はいないの
0306デフォルトの名無しさん
2011/08/17(水) 13:32:38.640307デフォルトの名無しさん
2011/08/17(水) 13:46:18.05すごい数になるでしょ
0308デフォルトの名無しさん
2011/08/17(水) 13:56:49.620309デフォルトの名無しさん
2011/08/17(水) 14:21:44.81企業では技術力低い人に合わせてコーディングルール作るから、知らなくても
問題ない
0310デフォルトの名無しさん
2011/08/17(水) 14:24:42.010311デフォルトの名無しさん
2011/08/17(水) 14:27:43.490312デフォルトの名無しさん
2011/08/17(水) 14:35:02.390313デフォルトの名無しさん
2011/08/17(水) 14:53:10.60C++0xはソースは簡潔になるけど、人の書いたコードを読む時0xのほうが嬉しいってのがあまり思いつかない
せいぜい=defaultぐらい?
0314デフォルトの名無しさん
2011/08/17(水) 15:45:04.57ディープなライブラリ作成者を除けばほとんどが「何も考えなくても恩恵受けられる機能」ばかりだよ
0315デフォルトの名無しさん
2011/08/17(水) 16:00:44.07多分一番難しいのはムーブだろ。
0316デフォルトの名無しさん
2011/08/17(水) 16:00:56.39ラムダはむしろ読みやすい方。
今までは初期化式の{}を見たらコンストラクタは呼ばれないと切って捨てれたのに、そっちも探さないといけなくなったし
range-based forだって深追いしようと思えば実際呼ばれてるbeginとend探しまわるハメになると思う
0317デフォルトの名無しさん
2011/08/17(水) 16:02:14.220318デフォルトの名無しさん
2011/08/17(水) 16:08:09.510319デフォルトの名無しさん
2011/08/17(水) 16:09:52.970320hiding
2011/08/17(水) 16:13:04.47それまでは、単にrvalueリファレンスを用いるライブラリ側の取り決めでしかなかった。
でもそれじゃまずいってことで、コピーと同じく、コア言語側でも規定されるようになったんだよ。
0321デフォルトの名無しさん
2011/08/17(水) 16:13:10.92ばかにしないでくれる
0322デフォルトの名無しさん
2011/08/17(水) 16:19:22.270323デフォルトの名無しさん
2011/08/17(水) 16:31:18.670324デフォルトの名無しさん
2011/08/17(水) 17:14:21.39> 技術力低い人に合わせて
これだけは避けたかった受け入れがたい事態だな
丁稚や女中が組織全体の律速段階でいいんだと開き直ったら何ができるんだ
>>319
やめれ、耳が腐る
0325デフォルトの名無しさん
2011/08/17(水) 17:35:53.730326デフォルトの名無しさん
2011/08/17(水) 17:49:39.440327デフォルトの名無しさん
2011/08/17(水) 17:55:29.550328デフォルトの名無しさん
2011/08/17(水) 18:30:10.43逆だろ、今までのプログラム言語が歴史の浅い原始的で学問未満なものだった
世のため人のために役立つ知見とは元々そんなに甘くないというだけ
0329デフォルトの名無しさん
2011/08/17(水) 18:34:17.71CとCommon LispとSmalltalkとHaskellを教育できる
0330デフォルトの名無しさん
2011/08/17(水) 18:35:26.60通ったばかり規格のスレだから。教育とか他所行け。ドアホ。
0331デフォルトの名無しさん
2011/08/17(水) 18:42:05.880332デフォルトの名無しさん
2011/08/17(水) 18:45:14.03自分は平均以下でないと行間で言ってるのがすげー滑稽
0333デフォルトの名無しさん
2011/08/17(水) 19:22:08.86教育コストは生産性の大きなポイント。
0334デフォルトの名無しさん
2011/08/17(水) 20:14:43.61大きなポイントはコストではなく効果だ
最大のポイントはそいつの生涯の稼ぎで
次いで教育コストとの比
それから負担割合
不戦敗する奴に金かけるのは確かに無駄だ
0335デフォルトの名無しさん
2011/08/17(水) 20:16:06.09フルスクラッチで開発できるようになる方が時間がかかると思うが。
0336デフォルトの名無しさん
2011/08/17(水) 20:33:06.140337デフォルトの名無しさん
2011/08/17(水) 20:35:48.360338デフォルトの名無しさん
2011/08/17(水) 20:36:51.92static_assert系の仕組みの引数にprintfのformatみたいな方式でoperator有無のチェックを記述出来る様にしたらどうかな
static_assert(A,"++\(int)++\*()\*(A)","unimplemented");
0339デフォルトの名無しさん
2011/08/17(水) 20:37:07.830340デフォルトの名無しさん
2011/08/17(水) 21:39:58.60http://www.mono-project.com/Main_Page
0341デフォルトの名無しさん
2011/08/17(水) 22:24:46.43そんなのやだ
演算子の有無はconceptでチェックしたい
0342デフォルトの名無しさん
2011/08/17(水) 22:25:44.19これじゃあかんの
sizeof((A()+1,A()-1,A()*1,A()/1))
0343デフォルトの名無しさん
2011/08/17(水) 22:29:13.340344デフォルトの名無しさん
2011/08/18(木) 00:18:48.07インクリ/デクリメントのチェックに副作用が
0345デフォルトの名無しさん
2011/08/18(木) 00:47:33.74低レベルシステムソフトウェアはC++が全盛です。
底辺プログラマには縁のない世界。
0346デフォルトの名無しさん
2011/08/18(木) 00:56:47.190347デフォルトの名無しさん
2011/08/18(木) 01:02:34.630348デフォルトの名無しさん
2011/08/18(木) 01:15:58.010349デフォルトの名無しさん
2011/08/18(木) 10:38:03.76decltype使った末尾戻り値型もそんな感じだな
lambdaみたいに戻り値の型をreturnに書いたやつから類推して欲しかった
0350デフォルトの名無しさん
2011/08/18(木) 16:55:39.20returnから型推定すごい欲しいなあ
OCamel使えば自動型推定はやってくれるけど
0351デフォルトの名無しさん
2011/08/18(木) 18:28:03.78そうなると宣言だけあれば関数を呼び出せるのができなくなるだろ
0352デフォルトの名無しさん
2011/08/18(木) 18:46:06.020353デフォルトの名無しさん
2011/08/18(木) 19:32:48.040354デフォルトの名無しさん
2011/08/18(木) 23:13:16.42書くのが面倒ならマクロ使えばいいじゃない。
0355デフォルトの名無しさん
2011/08/18(木) 23:29:48.590356デフォルトの名無しさん
2011/08/19(金) 02:18:34.50template <typename A, typename B> auto add(A a, B b) -> decltype(a+b) { return a+b; }
を
template <typename A, typename B> auto add(A a, B b) { return a+b; }
にできるだけでも価値はあると思うけど
まあ、構文解析難しいとか他に何か問題があれば別だが
0357デフォルトの名無しさん
2011/08/19(金) 04:31:46.87とかどうする気なの
0358デフォルトの名無しさん
2011/08/19(金) 07:53:19.72C++11 14?
0359デフォルトの名無しさん
2011/08/19(金) 08:13:42.72出版が来年にずれ込んだら C++12 になるのだし
0360デフォルトの名無しさん
2011/08/19(金) 09:13:11.150361デフォルトの名無しさん
2011/08/19(金) 10:02:23.47template <typename T> void f(T a, T b);
f(a+b, NULL);
のTと同じ型が類推される、と定義すればいい。
型が合わなければエラー。
0362デフォルトの名無しさん
2011/08/19(金) 10:10:27.54template <typename A, typename B> auto add(A a, B b) { return decltype(a+b); }
って書ければいいんじゃない?
returnが複数あればそれぞれdecltypeって書く。
template <typename A, typename B> auto add(A a, B b) { if(pred)return decltype(a+b);else return decltype(NULL); }
複数にdecltypeに矛盾がなければ戻り値の型が決まり、矛盾があればエラー、とか。
0363デフォルトの名無しさん
2011/08/19(金) 10:14:52.94ワケワカラン
0364デフォルトの名無しさん
2011/08/19(金) 10:24:01.49定義がないと使えないというのはあるけど、別にそこは重要ではないと思う。
なぜなら、ほとんどの場合テンプレートでしか必要ないから。
(テンプレートじゃなくても、一応inlineや内部リンケージでも可能だが)
プロトタイプも、定義が出てこないと使えないものの、書く事自体は出来てもいい。
例えば
template <typename A, typename B>
struct BinaryOperation
{
auto add(A a, B b);
};
template <typename A, typename B>
auto BinaryOperation<A, B>::add(A a, B b) { return a+b; }
とか。
0365デフォルトの名無しさん
2011/08/19(金) 18:53:11.110366デフォルトの名無しさん
2011/08/19(金) 18:58:16.530367デフォルトの名無しさん
2011/08/19(金) 19:20:37.730368デフォルトの名無しさん
2011/08/19(金) 19:40:07.41ないない。
0369デフォルトの名無しさん
2011/08/19(金) 23:15:12.74その次はしらんけど。
0370デフォルトの名無しさん
2011/08/19(金) 23:36:24.160371デフォルトの名無しさん
2011/08/21(日) 02:00:21.61concept = constraint + axiom
って感じらしいが。
0372デフォルトの名無しさん
2011/08/21(日) 09:07:20.290373デフォルトの名無しさん
2011/08/21(日) 10:46:54.110374デフォルトの名無しさん
2011/08/21(日) 12:09:26.37英語でいいからコメント書いてくれてる方が分かりやすい
0375デフォルトの名無しさん
2011/08/21(日) 12:47:19.850376デフォルトの名無しさん
2011/08/21(日) 13:00:28.25axiom って最適化に使ってもいいみたいだし
それなら意味があるのでは?
「axiom に違反するときはコンパイルエラー」とか「例外をなげる」とか
変なことを言い出したら、
exception specification の二の舞になる気もするけど
「axiom に従って勝手に最適化しますよ。
あなたのクラスが axiom に違反してても気にしませんよ」
という感じでやってくれるなら歓迎。
0377デフォルトの名無しさん
2011/08/21(日) 13:13:55.530378376
2011/08/21(日) 13:48:22.98「axiom は、最適化に役立てることは動機ではない」といきなり否定されてるな…。
なら確かにゴミだな。
0379デフォルトの名無しさん
2011/08/21(日) 14:54:42.82コンストラクターを呼び出させる事ってC++0xじゃないと無理なんかね?
0380デフォルトの名無しさん
2011/08/21(日) 15:42:18.63Base(){}
};
struct Derived{
Derived()=delete;
};
struct Grandderived{
Grandderived(): Base::Base(){}
};
こういうこと?
0xでも無理だろ
0381デフォルトの名無しさん
2011/08/21(日) 16:30:34.91親クラスのコンストラクターを子に引き継がせることができる。
0382hiding
2011/08/21(日) 16:44:22.09継承コンストラクターは、コンストラクターが無いわけじゃない。
継承コンストラクターは、基本クラスのコンストラクターと同じシグネチャで、
実引数をそのまま渡すコンストラクターを、自動的に宣言するだけだぞ。
「コンストラクターを作らず」といったら、>>380だ。
0383デフォルトの名無しさん
2011/08/21(日) 16:54:40.00早くc++1x来い
0384デフォルトの名無しさん
2011/08/21(日) 17:28:26.01理屈がどうであれ実質変わらんがな。
暗黙で作られるつったってコンパイラはどうせvtableだけ置き換えて
親クラスのコンストラクターそのまま使うんだから。
>>382がもし理屈上だけでなく明確な実装まで影響する話だとしたら、
0xの継承コンストラクターって、オブジェクトの値渡しをしたら
子のコンストラクターで1回、親のコンストラクターで2回目の
コピーないしムーブコンストラクターが呼ばれるのか?
0385デフォルトの名無しさん
2011/08/21(日) 17:34:48.290386デフォルトの名無しさん
2011/08/21(日) 17:40:50.32隙間です。。。
ヒロシです。。。
0387デフォルトの名無しさん
2011/08/21(日) 18:29:33.4712.9 の第8段落
暗黙に定義される inheriting constructor の例:
ThisClass(T t): BaseClass(static_cast<T&&>(t)) {}
ここでわざわざT&& にキャストしているのは、
親クラスのコンストラクタで T が && のときに対処するため。
で、わざわざそんな配慮をもって記述されているということは
T が値渡しならもちろん二回コピーされるってこと。
0388デフォルトの名無しさん
2011/08/21(日) 18:35:52.55例と書いてあるけどそれは一例じゃなく実装義務なのか?
RVOのように省いちゃいかんのか?
0389デフォルトの名無しさん
2011/08/21(日) 20:28:50.49自分で FIDS 読みなよ……と思ったけどもう非公開になってるんだったね。
省略していいなんて書いてないよ。
Inheriting constructor の概略はこう。
12.9-1. using-declaration でコンストラクタを指名すると、
inheriting constructor を暗黙に宣言したことになる。
3. 暗黙に宣言された inheriting constructor は、
ベースクラスと同じ引数リスト(など)をもつ。
8. inheriting constructor は、odr-used されたときに暗黙に定義される。
暗黙に定義されたコンストラクタは、>>387 のようなユーザー定義の
コンストラクタと同様の動作をする。
0390hiding
2011/08/22(月) 04:17:37.21実装の話がしたいならスレ違いだ。
「この関数呼び出しは実装ではインライン展開されるから、規格上でも関数呼び出しなんて発生しない( ー`дー´)キリッ」
0391デフォルトの名無しさん
2011/08/22(月) 12:45:22.76進化の方向同じなんだから
そうすればOCamelのライブラリも使いまわせて最高
0392デフォルトの名無しさん
2011/08/22(月) 15:38:14.94進化の方向が同じなんて判断がよくできるね。
0393デフォルトの名無しさん
2011/08/22(月) 20:30:54.88規格が許すか許さないかの話なんだからべつにいいんじゃね。
0394デフォルトの名無しさん
2011/08/22(月) 21:32:42.21実装に言及するのも必要だと思う
0395デフォルトの名無しさん
2011/08/23(火) 00:33:53.30同じ方向に見えるなら全然勉強足りないから初心者スレで修行を。
0396デフォルトの名無しさん
2011/08/23(火) 11:38:51.330397デフォルトの名無しさん
2011/08/23(火) 12:15:17.830398デフォルトの名無しさん
2011/08/25(木) 17:01:28.8320.6.8 Allocator traits に、typedef ●●& (const_)reference; が欠けてるのはどうして?
20.12.1 scoped_allocator にもない。
20.6.9 default allocator だけは持ってるけど、これは互換性のためだろうか。
0399デフォルトの名無しさん
2011/08/25(木) 19:01:59.72たぶんこのへんに書いてある
0400デフォルトの名無しさん
2011/08/25(木) 22:54:36.16「pointer とか reference とかの typedef を要求してたけど
それが必ず value_type*, value_type& でなければならないなら
意味ないじゃん、カスタマイズする人に面倒かけるだけで」
という状態だったところ、改変によって
- pointer はスマートポインタでもなんでもいいように生まれ変わった。
- reference は更生できず退学になった
というわけね。
0401デフォルトの名無しさん
2011/08/26(金) 13:42:06.910402デフォルトの名無しさん
2011/08/26(金) 20:00:40.51ますますreference必要じゃね?
0403デフォルトの名無しさん
2011/08/26(金) 20:30:35.230404デフォルトの名無しさん
2011/08/26(金) 20:45:20.70子スレッドから孫スレッド作って子スレッド消滅くらいしか思いつかんわ
0405デフォルトの名無しさん
2011/08/26(金) 21:49:54.23pointer側は関係ないんだよ
referenceがvalue_type&しかないのが問題
0406デフォルトの名無しさん
2011/08/27(土) 03:13:03.15そりゃそうだな
まあreferenceなんざ、value_type&のみでいいんじゃね?
0407デフォルトの名無しさん
2011/08/27(土) 09:06:13.47ttp://d.hatena.ne.jp/melpon/20110826/1314343549
0408デフォルトの名無しさん
2011/08/28(日) 23:46:50.31昔のx86みたいに、farポインタnearポインタの区別のある世界なら、
referenceにもfarとnearの区別が欲しくなるのではないかと思う。
そんなところにC++11がやってくるかどうかは別として。
0409デフォルトの名無しさん
2011/08/29(月) 08:16:57.84allocator はたとえば vector<T, allocator<T>>::push_back(val) の val を
far の参照で受けるべきか near かなんて責任を負わないと思うよ。
0410デフォルトの名無しさん
2011/08/29(月) 22:14:36.37そのまま Boost のイテレータコンセプトを採用するって聞いたけど。。
経緯を知っている方、もしいれば教えて下さい
0411デフォルトの名無しさん
2011/08/30(火) 12:47:12.82iphone開発で使いたいんじゃ
0412デフォルトの名無しさん
2011/08/30(火) 17:37:03.790413デフォルトの名無しさん
2011/08/30(火) 18:22:12.500414デフォルトの名無しさん
2011/08/30(火) 21:53:23.550415デフォルトの名無しさん
2011/08/31(水) 20:58:42.9003の機能は完全なんだからいいだろ。
11での開発を今から始めるのはバカすぎる。
あと4年は待て。
0416デフォルトの名無しさん
2011/09/01(木) 18:57:37.590417デフォルトの名無しさん
2011/09/01(木) 20:28:20.923,4年たったら規格準拠になって今書いたコードが
腐るかもしれん。
0418デフォルトの名無しさん
2011/09/01(木) 22:30:59.730419デフォルトの名無しさん
2011/09/01(木) 23:24:29.560420デフォルトの名無しさん
2011/09/01(木) 23:31:49.76うちの会社のライブラリなんて未だVC6.0で書かれたものが生き残ってんだぞ。
0421デフォルトの名無しさん
2011/09/01(木) 23:53:09.130422デフォルトの名無しさん
2011/09/02(金) 00:01:43.900423デフォルトの名無しさん
2011/09/02(金) 00:08:24.490424デフォルトの名無しさん
2011/09/02(金) 00:17:32.56そもそも、VCの処理系依存は、スコープすら違うんだぞ。
しかもそれが、50万行以上。
0425デフォルトの名無しさん
2011/09/02(金) 00:50:48.810426デフォルトの名無しさん
2011/09/02(金) 00:59:23.070427デフォルトの名無しさん
2011/09/02(金) 11:13:20.080428デフォルトの名無しさん
2011/09/02(金) 12:25:40.96あの人たちはCLang行ってしまったから、
g++は影響受けないと思われます。
0429デフォルトの名無しさん
2011/09/02(金) 18:24:42.24ラムダまでいかないにしても、関数内関数が使えるとすごい嬉しいな
0430デフォルトの名無しさん
2011/09/02(金) 19:48:07.36auto foo=[&](args)->ret{body};と見做すようにすればいいだけなのになんで0xでも関数内関数出来ないの?
0431デフォルトの名無しさん
2011/09/02(金) 19:52:31.77関数内でラムダ宣言してautoでキャプチャすればことたりるからじゃね?
0432デフォルトの名無しさん
2011/09/02(金) 19:57:45.41#include <iostream>
int F(int v){
auto F2 = [](int va){ return va+1;};
return F2(v);
}
int main(){
int N = F(100);
std::cout<<N<<std::endl;
return 0;
}
0433デフォルトの名無しさん
2011/09/02(金) 21:37:28.440434デフォルトの名無しさん
2011/09/02(金) 21:39:28.830435デフォルトの名無しさん
2011/09/02(金) 22:26:22.32括弧は別に何とも思わんしどちらかというと綺麗な部類だと思うが。
0436デフォルトの名無しさん
2011/09/02(金) 22:51:21.90関数内関数を導入するよりも、関数の書き方自体を [] f() -> ret { ,,, } にシフトしていく
方針のつもりでいたんだと予想。
そうすればラムダの記法がそのまま関数内関数になる。
0437デフォルトの名無しさん
2011/09/02(金) 23:10:11.89って, シグネチャ書く気力おきねぇw
0438デフォルトの名無しさん
2011/09/02(金) 23:32:14.75関数ポインタは今のままの書き方でいいってことで…。
もし関数内関数を >>430 のようにキャプチャあり auto foo = [&]... にするなら
どうせ関数ポインタに入らない。
そういうのを受け取ったり返したりするのは、
template <class Lambda> と書く以上に複雑にはならない。
0439デフォルトの名無しさん
2011/09/03(土) 16:39:11.97そんな差もないし別にlambdaでいいじゃない
それじゃキャプチャも自由にできないし
0440デフォルトの名無しさん
2011/09/03(土) 16:44:34.74そんな複雑なことかいな?
auto bar = [](std::function<int()> f) {
return [=]{ return f(); };
};
0441デフォルトの名無しさん
2011/09/03(土) 17:26:33.65基本autoで返してポインタ、参照の修飾だけを指示出来る形で
lambda a=(int x=1){x-1};;
lambda f=(lambda(int)x){x(3);};
return f(a);
0442デフォルトの名無しさん
2011/09/03(土) 17:28:43.53キャプチャは重要だと思うよ
0443デフォルトの名無しさん
2011/09/03(土) 20:46:05.52ISO/IEC 14882:2011 として発行されたようだけど、
"Target publication date: 2012-02-28" ってのはどういうことなの?
C++11 で確定でいいんだよね?
0444デフォルトの名無しさん
2011/09/03(土) 21:26:22.420445デフォルトの名無しさん
2011/09/03(土) 21:27:09.830446デフォルトの名無しさん
2011/09/03(土) 21:32:00.540447デフォルトの名無しさん
2011/09/03(土) 22:05:46.870448デフォルトの名無しさん
2011/09/03(土) 23:09:54.90半年もまだ何やる事が残ってんの?
0449デフォルトの名無しさん
2011/09/03(土) 23:22:59.89GCCみたいな関数内関数を勝手に実装しやがった処理系と干渉するから。
0450デフォルトの名無しさん
2011/09/03(土) 23:27:00.940451デフォルトの名無しさん
2011/09/03(土) 23:28:59.45※みたいな
0452デフォルトの名無しさん
2011/09/03(土) 23:41:51.39新しい規格により不必要になったり、
バッティングしたら削除してるよ。
0453デフォルトの名無しさん
2011/09/04(日) 08:29:07.54}
こういう書き方やめろ。見づらい。
func()
{
}
こう書くように。
0454デフォルトの名無しさん
2011/09/04(日) 08:32:52.38http://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B%E3%81%92%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB#K.26R.E3.81.AE.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB
0455デフォルトの名無しさん
2011/09/04(日) 08:59:26.11てめえのブログにでも書いてろ
0456デフォルトの名無しさん
2011/09/04(日) 10:17:14.870457デフォルトの名無しさん
2011/09/04(日) 10:53:37.01func()
{
hoge...
}
0458デフォルトの名無しさん
2011/09/04(日) 12:09:58.810459デフォルトの名無しさん
2011/09/04(日) 12:23:50.660460デフォルトの名無しさん
2011/09/04(日) 13:20:53.440461デフォルトの名無しさん
2011/09/04(日) 13:28:57.410462デフォルトの名無しさん
2011/09/04(日) 14:47:01.212進数の接頭辞っぽく見えるという罠も
0463デフォルトの名無しさん
2011/09/04(日) 15:00:16.460464デフォルトの名無しさん
2011/09/04(日) 15:07:14.98つ operator""
0465デフォルトの名無しさん
2011/09/04(日) 15:40:01.77ややこしい
0466デフォルトの名無しさん
2011/09/04(日) 16:43:18.660467デフォルトの名無しさん
2011/09/04(日) 16:43:40.670468デフォルトの名無しさん
2011/09/04(日) 16:45:47.540469デフォルトの名無しさん
2011/09/04(日) 17:09:08.10ということにしたいのですね:-)
0470デフォルトの名無しさん
2011/09/04(日) 22:23:12.170471デフォルトの名無しさん
2011/09/04(日) 23:08:29.840472デフォルトの名無しさん
2011/09/05(月) 08:27:58.77良くこういう意見聞くけど何が嬉しいのか解らん。
むしろ256進数使えるほうが便利だろうに。
0473デフォルトの名無しさん
2011/09/05(月) 08:45:13.3216進⇔2進の変換がイメージで浮かぶような変態には意味がない
0474デフォルトの名無しさん
2011/09/05(月) 11:01:46.45256進数とか何が嬉しいのか解らん。
0475デフォルトの名無しさん
2011/09/05(月) 11:37:25.100476デフォルトの名無しさん
2011/09/05(月) 13:01:33.79なぜそんな機能を実装したIDEがないかがアメリカ人の大雑把さだよな。
0477デフォルトの名無しさん
2011/09/05(月) 13:37:57.630478デフォルトの名無しさん
2011/09/05(月) 14:43:45.70256進数って・・・ 0x00-0x1f ぬきでさえ mラd*%u6EBョフ)61A みたいになるぞ?
確かに昨今はアドレスの類が16進数じゃ辛くなってきているが、
それはただ IPv6 みたいに区切り表記があれば済むことで基数を変える必要はあんまりないだろ
2進数にも16進数にもえこひいきする合理性があるが、これらに対して256進数を持ち出す合理性はあるのか?
0479デフォルトの名無しさん
2011/09/05(月) 14:49:20.770480デフォルトの名無しさん
2011/09/05(月) 15:47:22.78「うるせえ、屑」って意味かと
0481デフォルトの名無しさん
2011/09/05(月) 19:55:59.480482デフォルトの名無しさん
2011/09/05(月) 20:06:16.740xffff_ffff_ffff_ffff みたいに。
>>481
発行 publication
発効 effectuation
0483デフォルトの名無しさん
2011/09/05(月) 23:48:54.25adaとかそんなのができたよね。
何気にn進数も標準じゃかなったかな
0484デフォルトの名無しさん
2011/09/06(火) 00:18:09.09文書類は発行で、仕様の強制力は発効じゃね?
0485デフォルトの名無しさん
2011/09/06(火) 00:41:07.35区切りはD言語にもあるね
区切りがなくても、WindowsのMAKELONGみたいなのを作れば
一応区切りの代わりにはなる
0486デフォルトの名無しさん
2011/09/06(火) 01:58:51.200x2x11x200 だと 18。
0487デフォルトの名無しさん
2011/09/06(火) 07:24:45.45↑ ↑ ↑
16 2 3
進 進 進
数 数 数
ということか
ややっこいなw
0488デフォルトの名無しさん
2011/09/06(火) 09:50:18.90大文字限定?
48進数は?
0489デフォルトの名無しさん
2011/09/06(火) 10:01:29.660490デフォルトの名無しさん
2011/09/06(火) 17:17:47.010491デフォルトの名無しさん
2011/09/06(火) 17:52:47.878 進数には使えない文字だし
0492デフォルトの名無しさん
2011/09/06(火) 18:25:32.690493デフォルトの名無しさん
2011/09/06(火) 18:56:19.750494デフォルトの名無しさん
2011/09/06(火) 20:11:48.062011年9月4日、AP通信と米GfKが共同で行った調査によると、日本人の7割が中国の胡錦濤(フー・ジンタオ)国家主席に対し、
好感を持っていないことが分かった。米華字サイト・多維新聞が伝えた。
調査結果によると、日本人が好きな国は「米国」(49%)が首位で、「ドイツ」(48%)が2位。
一方、中国を「好き」だと答えた人はわずか7%、「嫌い」は76%だった。嫌いな国の首位は北朝鮮で、中国は2位だった。
韓国に対しては41%が「好きでも嫌いでもない」、27%が「嫌い」と答えた。
また、日本人が最も好きな国家の元首や首脳では、「天皇陛下」(70%)が首位。
「オバマ米大統領」(41%)、「メルケル独首相」(28%)、「李明博(イ・ミョンバク)韓国大統領」(20%)がこれに続いた。
中国の胡主席について、「好き」と答えた人はわずか6%、「嫌い」は68%だった。
「好き」と答えた割合が最も低かったのは、北朝鮮の金正日(キム・ジョンイル)総書記の1%だった。
調査は7月29日〜8月10日、日本各地の1000人を対象に実施された。
http://www.recordchina.co.jp/group.php?groupid=54100&type=1
0495486,489
2011/09/06(火) 21:42:02.220496デフォルトの名無しさん
2011/09/06(火) 22:05:30.510497デフォルトの名無しさん
2011/09/07(水) 15:04:46.6216進数で2進を想像できないヤツがビット操作なんてするもんじゃない。
64bitフルに使うと64桁の値がソースコードに散りばめられるわけだぞ
汚すぎるし、43bit目が立ってかとか見分けるのもメンドクサイ。
0498デフォルトの名無しさん
2011/09/07(水) 15:44:48.060499デフォルトの名無しさん
2011/09/07(水) 15:50:06.190500デフォルトの名無しさん
2011/09/07(水) 15:54:37.220501デフォルトの名無しさん
2011/09/07(水) 15:55:44.9516進数は0-Fのたかが16種類のビットパターン覚えてれば機械的に読めるので
変態というのはどうなんだろう
まあ俺は0,1,2,3,4,7,8,Fぐらいしかすぐ出てこないけどな!
0502デフォルトの名無しさん
2011/09/07(水) 16:08:06.78は?
0503デフォルトの名無しさん
2011/09/07(水) 18:00:52.100504デフォルトの名無しさん
2011/09/07(水) 18:10:51.85アセンブリ言語によるだろ。
というかCPUか。8bit,16bit CPUの時代ならまだbit単位で
書いても煩わしくはなかった。今はもう組み込み環境でもなければ
煩わしいだけ。
0505デフォルトの名無しさん
2011/09/07(水) 18:26:24.57うん、ありえん
0506デフォルトの名無しさん
2011/09/07(水) 18:28:00.770507デフォルトの名無しさん
2011/09/07(水) 19:11:45.48では16進数ならビット 43 が立っているかどうか、2進数より見やすくなるのか?
// see manual p999 pio pin assign
// .6 .5 .4 .3 .2 .1 .0
//3210987654321098765432109876543210987654321098765432109876543210
unsigned long long x = 0b000100100011010001010110011110001001101010111100110111101111;
test(x);
assert(x & 1LL << 43);
0508デフォルトの名無しさん
2011/09/07(水) 19:12:45.84まあいい、意味に関係ない
0509デフォルトの名無しさん
2011/09/07(水) 19:44:56.58全部が全部 2 進で書くわけじゃなかろ
0510デフォルトの名無しさん
2011/09/07(水) 19:51:11.580511デフォルトの名無しさん
2011/09/07(水) 20:05:43.12当然。ビットフラグなんかの操作に慣れてる者から
すればすぐ解る。16進なんて所詮1+2+4+8の
組み合わせしか無いし。
0xFFFFffffFFFFffff
16桁しかないから、8桁目を中心に左右に見ていけば、
そうそう今何桁目を見てるか考える必要もない。
0512デフォルトの名無しさん
2011/09/07(水) 20:41:14.642進よりはまだ読みやすいわ。
0513デフォルトの名無しさん
2011/09/07(水) 21:43:12.850514デフォルトの名無しさん
2011/09/07(水) 21:57:54.30全部ビッグエンディアン、ネットワークバイトオーダーになればいいのに
0515デフォルトの名無しさん
2011/09/07(水) 22:52:38.280516デフォルトの名無しさん
2011/09/07(水) 22:53:16.14unsigned long long x = 0b0001001000_1101000101_0110011110_0010011010_1011110011_0111101111;
こう書ければすぐだが
0517デフォルトの名無しさん
2011/09/07(水) 23:07:41.970518デフォルトの名無しさん
2011/09/07(水) 23:24:35.590519デフォルトの名無しさん
2011/09/07(水) 23:26:10.77桁の区切り方が素人みたいだ。経験の長いプログラマーらしくない。
0520デフォルトの名無しさん
2011/09/07(水) 23:26:31.698+4+2+1 な
ハッタリはばれると赤っ恥だぜw
0521デフォルトの名無しさん
2011/09/07(水) 23:31:34.54多分そういうフラグ作成みたいな用途以外に使うんじゃね。
例えば、フラグでのポートからの信号出力なら
Output8( io_address, SIG1 | SIG3 | SIG4 );;
ってな書き方するだろうし。
0522デフォルトの名無しさん
2011/09/07(水) 23:32:47.83ん?2+4+8+1でも8+4+2+1でも同じじゃね?
0523デフォルトの名無しさん
2011/09/07(水) 23:36:02.39?
0524デフォルトの名無しさん
2011/09/07(水) 23:37:27.848桁で区切るのが普通だとは思うが
43をぱっと分かるようにするには
10桁ずつ区切らないとな・・・
0525デフォルトの名無しさん
2011/09/07(水) 23:44:56.11経験が長くて10桁区切りが見やすいという人は特殊な気がする。
00000008 00 00 00 00 00 00 00 00
00000010 00 00 00 00 00 00 00 00
0526デフォルトの名無しさん
2011/09/08(木) 00:07:55.68どうしても2進数使いたいならマクロでも使ったら?
次期C++と言わず明日からでも使えるよ。
32bitの例
B(001111111111,011111111111,011111111111);
8進数の1桁を1bitに見立てる。
8進数は3bit食うので、1塊で掛けない。なので3つに分割。
先頭が00になってるが、8進数で埋めると最大33bitになるため1桁潰してる。
0527デフォルトの名無しさん
2011/09/08(木) 00:12:48.28B(01010101,10101010,10110101,11110010)
で 0x##a とかやればいい
0528デフォルトの名無しさん
2011/09/08(木) 00:15:42.64> 43をぱっと分かるようにするには
> 10桁ずつ区切らないとな・・・
ワロタ
0529デフォルトの名無しさん
2011/09/08(木) 00:38:37.1916進から2進を連想するときは同じではない
0x20 は 32 であり断じて 128 ではない
0530デフォルトの名無しさん
2011/09/08(木) 00:46:21.23やってないから知らんけど、アセンブリで
2進数使えるんなら、マクロ内でアセンブリに2進数渡してやれば?
B(11111111111111111111111111111111b);
0531デフォルトの名無しさん
2011/09/08(木) 00:49:00.82意味が解らない・・・。
0x20は32以外あり得ないのは解るけど、128は何で出てきた?
128は十進数じゃない別の表記とか?
0532デフォルトの名無しさん
2011/09/08(木) 00:53:34.541+2+4+8 = F
だと思うけど違いが解からん。
なおかつ>>529で余計に分からなくなった。
0534デフォルトの名無しさん
2011/09/08(木) 01:02:21.210535デフォルトの名無しさん
2011/09/08(木) 01:04:15.771000=2 0100=4 0010=8 0001=1 で
0x20=10000000b=128
という話なんだろうとエスパーした
0536デフォルトの名無しさん
2011/09/08(木) 01:10:03.22なるほど、>>535の内容は解った。
しかし不思議な発想だね。
0537デフォルトの名無しさん
2011/09/08(木) 10:10:32.07マクロ(というか constexpr 関数)でやれよっていうのは、確かにその通り
0538デフォルトの名無しさん
2011/09/08(木) 11:58:53.06どうもバカそうな話なんでスルーするか。
0539デフォルトの名無しさん
2011/09/08(木) 12:11:38.52そもそも、ビット演算を繰り上がりのある加算で記述ところからセンスを疑うが。
0540デフォルトの名無しさん
2011/09/08(木) 12:35:30.15A * 10^3 + B * 10^2 + C * 10^1 + D * 10^0
2進表記でABCDになる数は
A * 2^3 + B * 2^2 + C * 2^1 + D * 2^0 = A * 8 + B * 4 + C * 2 + D * 1
8, 4, 2, 1はこっから出てくるってだけの話だろ
こんなん2進数とか最初に習う段階で勉強することじゃね?
0541デフォルトの名無しさん
2011/09/08(木) 12:39:31.740542デフォルトの名無しさん
2011/09/08(木) 12:40:36.300543デフォルトの名無しさん
2011/09/08(木) 12:43:10.57よくわかりました!
ありがとうございました!!
0544デフォルトの名無しさん
2011/09/08(木) 12:54:11.880545デフォルトの名無しさん
2011/09/08(木) 12:55:14.310546デフォルトの名無しさん
2011/09/08(木) 12:57:04.07ま、1234をひとりだけ4321と書く世界に生きたいんならご自由に
そういう人はア・プリオリな言語みたいなものを使うのは不便でしょうがないだろうけど
0547デフォルトの名無しさん
2011/09/08(木) 12:59:09.811+2+4+8と8+4+2+1の話じゃなかったんか?
もしかして+記号見えない病気とか?
0548デフォルトの名無しさん
2011/09/08(木) 12:59:32.570549デフォルトの名無しさん
2011/09/08(木) 13:00:48.40可哀想に
0550デフォルトの名無しさん
2011/09/08(木) 13:01:05.38ああ、そっちの話か
俺はそっちの話は知らん
たぶん誤解されやすい加法表記を持ち出した>>520がアホなのだろう
0551デフォルトの名無しさん
2011/09/08(木) 13:19:28.75このスレは早すぎないか?
0xより基礎のお勉強をした方がいいと思う。
0552デフォルトの名無しさん
2011/09/08(木) 13:22:39.06型変換する訳じゃないからエンディアン関係ねえ。
0553デフォルトの名無しさん
2011/09/08(木) 13:26:40.43エンディアンは関係は無いが、2進表記はMSB側から・左から書くわけだから
4桁の2進表記があれば、左から8, 4, 2, 1の係数になっているのであって
逆ではないだろ
加法は可換だが、順序がどうでもいいわけではないということ
つーかお前ら本当に糞どうでもいい自転車置き場の議論が好きだな
くだらねぇ
0554デフォルトの名無しさん
2011/09/08(木) 14:11:04.110555デフォルトの名無しさん
2011/09/08(木) 14:27:41.620556デフォルトの名無しさん
2011/09/08(木) 15:48:43.36なんかの病気だろうね。
0557デフォルトの名無しさん
2011/09/08(木) 18:59:53.09プログラム以前に中学数学レベルの話だろ。
0x81 + 0x18 = 0x99 なんてどうすんだよ。
0558デフォルトの名無しさん
2011/09/08(木) 19:03:31.19まん、せん、ひゃく、じゅう、いち
0559デフォルトの名無しさん
2011/09/08(木) 19:24:28.540560デフォルトの名無しさん
2011/09/08(木) 19:29:10.800561デフォルトの名無しさん
2011/09/08(木) 20:28:10.810562デフォルトの名無しさん
2011/09/08(木) 20:38:50.57そろそろどっかに11いれにゃならんだろ。
0563デフォルトの名無しさん
2011/09/08(木) 20:40:33.16進歩ないなお前ら
0564デフォルトの名無しさん
2011/09/08(木) 21:03:55.80飽和論理和じゃ桁上がりしないから、
純粋に数学特性の説明だとマズイだろ。
7 | 9 = 0xF だと、正しいけど意味が解からんだろ。
0565デフォルトの名無しさん
2011/09/08(木) 22:02:28.710566デフォルトの名無しさん
2011/09/08(木) 22:05:57.54それに検索用に【C++0x】って感じで付け加えるのでどうだろう。
0567デフォルトの名無しさん
2011/09/08(木) 22:06:37.85お前、頭おかしいのか?
0568デフォルトの名無しさん
2011/09/08(木) 22:15:55.170569デフォルトの名無しさん
2011/09/08(木) 22:18:40.580570デフォルトの名無しさん
2011/09/08(木) 22:19:30.58ハイじゃないがな
0571デフォルトの名無しさん
2011/09/08(木) 22:33:52.47ISO/IEC 14882:2011 (C++11/C++0x) 14
0572デフォルトの名無しさん
2011/09/08(木) 22:35:45.42まぁ、JIS規格になったところで、タダで仕様を見られるようになるだけだけど。
0573デフォルトの名無しさん
2011/09/08(木) 22:44:29.350574デフォルトの名無しさん
2011/09/08(木) 23:08:00.130575デフォルトの名無しさん
2011/09/09(金) 03:07:31.43でいいだろ
0576デフォルトの名無しさん
2011/09/09(金) 17:01:54.970577デフォルトの名無しさん
2011/09/09(金) 17:34:25.030578デフォルトの名無しさん
2011/09/09(金) 18:23:09.74君、行っていいよ。許可する。
0579デフォルトの名無しさん
2011/09/09(金) 20:31:48.550580デフォルトの名無しさん
2011/09/11(日) 13:53:36.06VCやGCCが正式に0xに対応するまではこのスレは維持する。
でなければ混乱を起こすだけ。
0581デフォルトの名無しさん
2011/09/11(日) 14:22:41.21【初心者お断り】ガチ規格準拠C専用スレ Part134
http://hibari.2ch.net/test/read.cgi/tech/1246115922/
0582デフォルトの名無しさん
2011/09/11(日) 14:34:02.770583デフォルトの名無しさん
2011/09/11(日) 15:30:08.140584デフォルトの名無しさん
2011/09/11(日) 17:09:13.63なんでこんな出来損ないが次期標準に選ばれたのでしょうか?
0585デフォルトの名無しさん
2011/09/11(日) 17:27:14.15別に反してない
0586デフォルトの名無しさん
2011/09/11(日) 17:35:20.43ひいては限られた人類の時間資源というコストがかかるのではないか
人類が滅亡するまでに使うことができる人月は決して無限ではないのだ・・・
まあ俺はshared_ptr使うんだけど
0587デフォルトの名無しさん
2011/09/11(日) 17:43:02.10stringだってただの配列に比べれば高コスト。
機能にコストが掛からないというのは言語に限った話で、
ライブラリに対しては至上命題じゃない。
0588デフォルトの名無しさん
2011/09/11(日) 18:22:01.590589デフォルトの名無しさん
2011/09/11(日) 18:29:36.500590デフォルトの名無しさん
2011/09/11(日) 18:41:51.94今回は仕様まで変えて(右辺値参照を追加して)効率化計ったし
0591デフォルトの名無しさん
2011/09/11(日) 20:15:33.30それは現状な
ライブラリがバイナリ提供という前提のうえでの
ライブラリのユーザにとって決して満足な解ではなく改善の余地が残っている問題だ
0592デフォルトの名無しさん
2011/09/11(日) 20:29:17.35ファイルリンケージな、ポインター管理テーブルでも作って、
擬似スレッド(コールスタックでのガベコレイベント)によるリソース解放でもすんの?
C++の活躍の場は、組み込み環境もあるから安易にスレッドによる同時管理なんて手も使えないけど。
0593デフォルトの名無しさん
2011/09/11(日) 20:35:24.68shared_ptr を標準に追加したからといって、shared_ptr を使用しないプログラムが
実行時のコストを払わされることはないってことだから問題ないだろ。
0594デフォルトの名無しさん
2011/09/11(日) 20:54:53.56コンパイラが最終的にうまいアセンブラ使いと同じコードを吐くまで改善の余地はずっとあるだろ
ライブラリが気に入らなければ使わないんじゃなく
ライブラリに何を要求したかによる最小のコストであるべきものだ
それを妨げているネックがバイナリ提供だと主張した
0595デフォルトの名無しさん
2011/09/11(日) 20:59:20.36だから具体的にどうできるの?
トランポリンみたいに直接機械語を変更するでもいいから、
具体的に同改善できるのか教えておくれ。
0596デフォルトの名無しさん
2011/09/11(日) 21:00:02.880597デフォルトの名無しさん
2011/09/11(日) 21:01:53.67具体例が出せなきゃ、「妄想か。策定グループの判断が正しいな。」としか言えないよ。
0598デフォルトの名無しさん
2011/09/11(日) 21:05:12.01要求しない分には最小コストになってるじゃん
0599デフォルトの名無しさん
2011/09/11(日) 21:06:02.350600デフォルトの名無しさん
2011/09/11(日) 21:14:24.22shared_ptr に対する要求がサブセットであることと
shared_ptr を全く使わないことを、同じであることにしたいだけの馬鹿がいるだけだよ
これで具体的にどういうことか通じない御仁に付き合ってやりたいやつはそうしたらどうだ? (俺はパス
0601デフォルトの名無しさん
2011/09/11(日) 21:14:45.83流れと関係ないけど、リンケージって何処まで仕様が決まってんだっけ?
インタープリタやLLVMで動くから、コンパイル & リンクは仕様の範囲じゃないよね。
リンク段階なしでもあり?
0602デフォルトの名無しさん
2011/09/11(日) 21:16:14.04じゃそのサブセットってのは何を要求していて、
具体的にどう機能を変えることで対応できるの?
0603デフォルトの名無しさん
2011/09/11(日) 21:28:51.27shared_ptrはテンプレートだから
使わない限り実体化されないだろ
0604デフォルトの名無しさん
2011/09/11(日) 21:37:14.340605デフォルトの名無しさん
2011/09/11(日) 21:38:40.79いや、shared_ptr関係なく純粋にリンケージの事。
使ってもない関数が結構リンクされてるのがウザイ。
仕様上あれを全部除去する余地はないのか?
一応仮想関数が無理なのは解る。
C++なんて最低限、new deleteと例外用のランタイムだけ
リンクすればいいでしょ。
0606デフォルトの名無しさん
2011/09/11(日) 21:42:36.600607デフォルトの名無しさん
2011/09/11(日) 21:46:07.03>584 >587は単なる勘違い。
0608デフォルトの名無しさん
2011/09/11(日) 21:53:01.92LTCGじゃなくclangみたいな方法でもいいじゃん。
とにかく、外部に公開しないような関数は根こそぎ
消すことを義務化してほしいね。
0609デフォルトの名無しさん
2011/09/11(日) 21:54:52.010610デフォルトの名無しさん
2011/09/11(日) 22:40:04.14つまり関数はデフォルトで内部結合にして、
外部に出すには extern つけなさいってことか?
0611デフォルトの名無しさん
2011/09/11(日) 22:45:58.85リンク時のシンボルテーブルから、参照されてない関数見つけて
その関数を領域ごとごっそり消せばいいって事でしょ。
関数の長さが解らないから、関数のマングリングに関数のバイト数を追加したりする
必要はあるだろうけど。
0612デフォルトの名無しさん
2011/09/11(日) 23:04:03.43そんな具体的なところにまで規格は踏み込めないよ多分。
規格は、ここに述べることと外から見てそっくり同じ動きをするバイナリなら
どんな風に翻訳しようが構わないってものだろう。
不要な関数があろうがなかろうが外側からみた動きは変わらない。
それに、些細で不要な関数を消してもどうせアライニングの関係で
パディングしなければいけないとき、
その関数を消すのをさぼったからといって規格不適合っていうのも無理がある。
0613デフォルトの名無しさん
2011/09/11(日) 23:09:45.55やっぱ規格上でその規定はむりか。
今時、crang,gcc,armcc,optimize compilerと実装は違えど
大抵のコンパイラで、できる機能なんだけどな。
それを言ったら最適化もって事ではあるけど。
0614デフォルトの名無しさん
2011/09/11(日) 23:36:54.72考え落としではなく、触れるわけにいかない事項だが
コードサイズの増加が無害と思い込むのは狭い視野での早まった結論だ
0615デフォルトの名無しさん
2011/09/12(月) 01:59:20.530616デフォルトの名無しさん
2011/09/12(月) 07:44:12.85実行コードは物理的なCPUネイティブ?で実行されなくてはならないとか
1組み込み演算コードは1KB以内に収めるとか1000サイクル以内に実行できるとか
そんなん言い出すと法律家みたいな判例と解釈の専門家が必要になる気がする
0617デフォルトの名無しさん
2011/09/12(月) 10:01:23.91もっと別のベンダ寄りなとこに出す話なんじゃね。言語の理念は理念としても。
0618デフォルトの名無しさん
2011/09/12(月) 12:39:25.860619デフォルトの名無しさん
2011/09/12(月) 13:01:37.85このあたりはなんとかなならないの
0620デフォルトの名無しさん
2011/09/12(月) 13:21:21.500621デフォルトの名無しさん
2011/09/12(月) 14:34:21.12News 2011-09-11: The new C++ standard - C++11 - is published!
News 2011-09-11: The deadline for the next mailing is 2012-01-13
News 2011-09-11: The 2011-07 post-Bloomington mailing is available
News 2011-09-11: The C++ Standard Core Language Issues List (Revision 77) is available
0622デフォルトの名無しさん
2011/09/12(月) 17:06:16.48可決されてからほぼ一ヶ月か
0623デフォルトの名無しさん
2011/09/12(月) 18:34:00.45一時オブジェクトがどうこうという話なら右辺値参照で解決された
0624デフォルトの名無しさん
2011/09/12(月) 19:43:40.52あれま、そうなんだ。
ポインタ含まないような構造体でも解決されてるのか。
0625デフォルトの名無しさん
2011/09/12(月) 20:43:17.94行列計算程度ならね。
たとえば a+b+c+d = ((a+b)+c)+d は、
二回目以降の足し算は T operator+(T&& x, const T& y){ return x += y; } を使えばコピーは起こらない。
(戻り値のコピーは RVO で消せる)
0626デフォルトの名無しさん
2011/09/12(月) 21:09:05.39そういう問題じゃないんじゃね?
Expression Templateを使うような問題だろ。
最終的にこういう感じで展開されなきゃならんと言う話。
n[i] = a[i] + b[i] + c[i] + d[i];
0627デフォルトの名無しさん
2011/09/12(月) 22:25:29.82そういうのは右辺値参照関係ない…
0629デフォルトの名無しさん
2011/09/14(水) 16:35:22.290630デフォルトの名無しさん
2011/09/14(水) 16:52:18.480631デフォルトの名無しさん
2011/09/14(水) 17:05:51.91これ?
http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
0632デフォルトの名無しさん
2011/09/14(水) 17:56:12.190633デフォルトの名無しさん
2011/09/14(水) 18:34:19.54あとexportに定評のあったComeauとか
0634デフォルトの名無しさん
2011/09/15(木) 08:37:45.51欲しかったものがatd::atomicぐらいしか入ってねー
0635デフォルトの名無しさん
2011/09/15(木) 10:50:55.830636デフォルトの名無しさん
2011/09/15(木) 13:24:02.020637デフォルトの名無しさん
2011/09/15(木) 14:36:35.94あれはMSの現フレームワークの開発環境提供が第一義。
ISO C++の部分だけベータリリースしてもいいんじゃないかとは思うが。
0638デフォルトの名無しさん
2011/09/15(木) 14:40:30.40Comeauは開発停まってるでしょ。
http://www.comeaucomputing.com/43101features.html#newstuff
0639デフォルトの名無しさん
2011/09/15(木) 14:46:46.510640デフォルトの名無しさん
2011/09/15(木) 15:14:15.560641デフォルトの名無しさん
2011/09/15(木) 15:23:35.10日本語版はまだC++0xしかエントリないんだね。
ただ日本語版は、そういうことより、
> 標準化の作業はようやく完了しC++11という名称も定まったが、
> 本項は必ずしも最近の C++0x の状況を反映してはいない。
こういう奇っ怪な文章を直したらどうかねえ。
「が、」で継続するなら二行目も「C++11」の方がだろう。
C++0x命名の長い解説が最初のサマリーのところに入っていたり。
まあ日本語版見てる人が少ないんだろうけど。
0642デフォルトの名無しさん
2011/09/15(木) 15:31:42.48そこまで言うなら直してくれよ
0643デフォルトの名無しさん
2011/09/15(木) 15:47:19.51http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372
http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882%3A2011
0644デフォルトの名無しさん
2011/09/15(木) 16:13:04.87自分でやれよ
0645デフォルトの名無しさん
2011/09/15(木) 16:15:36.86lambda動くんじゃなかったの?
template<typename LHS, typename RHS>
[]AddingFunc(const LHS &lhs, const RHS &rhs) -> decltype(lhs+rhs) { return lhs + rhs; }
0646デフォルトの名無しさん
2011/09/15(木) 16:32:18.740647デフォルトの名無しさん
2011/09/15(木) 17:32:19.30boost::function_traits<BOOST_TYPEOF(NamedLambda2)>::result_type c=5; //bug??
boost::function_types::result_type<BOOST_TYPEOF(NamedLambda2)>::type c=5; //bug?
NamedLambda2のresult_typeってどうとればいいんだ
0648デフォルトの名無しさん
2011/09/15(木) 17:44:31.040649デフォルトの名無しさん
2011/09/15(木) 18:50:49.79c++11ではそもそもlambda式のテンプレートはできないし。
// これは関数テンプレート
template<class LHS, class RHS>
auto AddingFunc(const LHS & lhs, const RHS & rhs) -> decltype(lhs + rhs) { return lhs + rhs; }
int main()
{
cout << AddingFunc(1, 2) << endl;
cout << AddingFunc(3.3, 4.4) << endl;
}
0650デフォルトの名無しさん
2011/09/15(木) 18:59:44.490651デフォルトの名無しさん
2011/09/15(木) 20:25:04.360652デフォルトの名無しさん
2011/09/15(木) 22:16:45.06演算子を用いた(a+b)*(c+d)*eとかの行列計算もokでしょうか?
0653デフォルトの名無しさん
2011/09/15(木) 23:09:06.38右辺値参照ををオーバーロードするライブラリを誰かが作ればOK
「テンポラリを無駄に生成したくない」という問題だけなら解決する。
( (a+b)*(c+d)*e なら c+d のテンポラリは消せないけど)
0654デフォルトの名無しさん
2011/09/15(木) 23:54:57.27decltypeの中は自分で頑張って書くしかないな。
ttp://ideone.com/dgXqf
0655デフォルトの名無しさん
2011/09/15(木) 23:59:29.18定義必須になるけど、どうせほとんどの場合テンプレートで使うんでしょ
0656デフォルトの名無しさん
2011/09/16(金) 00:01:23.32boostと組み合わせると大変なことに
0657デフォルトの名無しさん
2011/09/16(金) 00:02:18.790658デフォルトの名無しさん
2011/09/16(金) 00:05:01.110659デフォルトの名無しさん
2011/09/16(金) 00:27:44.72std::function<int()>::result_type b; ← OK
decltype(a)::result_type c; ← Error! expected initializer before ‘c’
これはGCCのバグというか、まだ実装途中ってことなんだよね?
0660デフォルトの名無しさん
2011/09/16(金) 01:04:02.42int main()
{
int x = 11;
double y = 22.22;
vector<int> v1 = { 0, 1, 5, 10, 100 };
vector<decltype(x + y + v1[0])> v2;
transform(v1.begin(), v1.end(), back_inserter(v2),
[x, y](decltype(v1[0]) i) -> decltype(x + y + i) { return x + y + i; } );
for(auto i = v2.begin(), e = v2.end(); i != e; ++i) { cout << *i << endl; }
}
0661hiding
2011/09/16(金) 02:41:50.22decltypeをnested name spacifierとして使えるようになったのはごく最近のこと。
土壇場のギリギリになってから規格に入った。
だからgccはまだ対応してない。
0662デフォルトの名無しさん
2011/09/16(金) 12:19:02.49schemeからc++0xの自動生成
0663デフォルトの名無しさん
2011/09/16(金) 12:41:10.610664デフォルトの名無しさん
2011/09/16(金) 13:00:36.220665デフォルトの名無しさん
2011/09/16(金) 15:51:58.41gambit-c
http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page
も凄いとおもったが、>>662はそれ以上だな。
0666デフォルトの名無しさん
2011/09/16(金) 16:16:28.24複雑さをもたらすだけだな。autoは便利だが。
overrideには笑った。virtual関数使う奴が引数を間違えるかねぇ。
finalはあっていいけど。
いろいろ機能拡張してるけど、それはSTLなどのライブラリ作る職人さん
達が使うものとして、新しい機能にあれこれ手を出すのはやめた。
使いたいのはスレッドとスマートポインタ、unourdered set、map
ぐらいでいい。
0667デフォルトの名無しさん
2011/09/16(金) 16:48:37.040668デフォルトの名無しさん
2011/09/16(金) 17:06:20.970669デフォルトの名無しさん
2011/09/16(金) 21:10:58.59overrideつけたのはベースのクラスで引数変えて、派生クラスで
引数変え忘れとかのケアレスミス防止だろ、
今のコンパイラでも警告出たかどうか知らないけど。
他人のコード引き継いだりしたときはミスしそうなとこだろ。
こういった機能やスレッドにしても0xはいまさら感なところも多いね
個人的にはC++はめんどいイメージが最近は大きくなってるから
ある程度、楽に使えるようになってきているのはいいんじゃないかな
non copyable は delete 指定でできるみたいだけど
コーディング量的に微妙か?w
以上、チラ裏
0670デフォルトの名無しさん
2011/09/16(金) 21:47:17.030671デフォルトの名無しさん
2011/09/16(金) 21:56:11.590672デフォルトの名無しさん
2011/09/16(金) 22:07:01.41キモいメタプログラミングを構造化言語で記述する仕様を付けて出せば最強言語
0673デフォルトの名無しさん
2011/09/16(金) 23:31:47.94賛成。テンプレートやメタプログラミングも過渡期の段階だろう。
もっと簡潔にしなければならないよね。ま、大変な作業だろうけど。
しかし、最近のビヤーネさん、禿に磨きがかかっているねえ。
C++11の複雑さも磨きがかかってるけど。
科学、工学、他分野の技術系の人にとっては、計算やアルゴリズム
が大事だから、文法が簡単な言語を使う(最近は工学関係もMATLABや
Octaveが浸透してきた)。どうしてもスピードが要求されるところ
にはFORTRANを使う。C++はあまりにも言語が自己主張しすぎる。
複雑なC++の習得に時間をかけるのは本末転倒。
0674デフォルトの名無しさん
2011/09/16(金) 23:41:48.010675デフォルトの名無しさん
2011/09/16(金) 23:46:03.91> どうしてもスピードが要求されるところ
> にはFORTRANを使う。
C++には満足な並列構文がないじゃん
0676デフォルトの名無しさん
2011/09/16(金) 23:51:14.570677デフォルトの名無しさん
2011/09/17(土) 01:53:27.720678デフォルトの名無しさん
2011/09/17(土) 11:33:40.70C++の仕事は過去の遺物の保守と移植だけみたいな状況が来るよ
ジョンタイターと飲みに行ったときに彼ももそう言ってた
0679デフォルトの名無しさん
2011/09/17(土) 11:58:06.53どの程度なのか知らんが。
0680デフォルトの名無しさん
2011/09/17(土) 12:15:22.920681デフォルトの名無しさん
2011/09/17(土) 13:28:52.06XBLIGでC#使えるのと同じぐらいのインパクトしか無いんじゃないかな。
0682デフォルトの名無しさん
2011/09/17(土) 15:14:57.91GCが問題無いくらいVITAが速いならいいけど。
0683デフォルトの名無しさん
2011/09/17(土) 16:00:17.69読みがそのままスペルでいいよね
でも現実にはいろんな言語のいいとこパクったり
ぐちゃぐちゃな拡張してきた英語が広く使われている
仮にドイツ語が広く使われたとしても
結局ぐちゃぐちゃな拡張される事になると思う
0684デフォルトの名無しさん
2011/09/17(土) 16:04:05.680685デフォルトの名無しさん
2011/09/17(土) 16:06:45.65Wikipedia一回見れ 恥ずかしすぎるお前
0686デフォルトの名無しさん
2011/09/17(土) 16:16:54.15ドイツ語の複合語が連想される、まで読んだ
0687デフォルトの名無しさん
2011/09/17(土) 16:34:35.950688デフォルトの名無しさん
2011/09/17(土) 19:28:58.020689デフォルトの名無しさん
2011/09/17(土) 19:39:29.770690デフォルトの名無しさん
2011/09/17(土) 20:12:10.18処理系による。Windowsの.netなら発生頻度はある程度コントロール出来る。
360とかWPは無理。Monoは知らない。
0691デフォルトの名無しさん
2011/09/17(土) 22:06:10.730692デフォルトの名無しさん
2011/09/17(土) 22:26:27.73C++11から敢えて外した理由ってあるの?
それともほとんどの人は多重ループからの脱出とかしないの?
0693デフォルトの名無しさん
2011/09/17(土) 22:28:49.06そんなの作ったら巨大な関数が今よりもっと増えそうな気がしていいやだな。
関数作って return を使うプレッシャーがあるぐらいでちょうどいいんじゃないかと思う。
0694デフォルトの名無しさん
2011/09/17(土) 22:28:49.60case 0:
...
break;
case 1:
...
goto 0;//とか出来たらいいなあ
}
0695デフォルトの名無しさん
2011/09/17(土) 22:47:27.000696デフォルトの名無しさん
2011/09/17(土) 22:59:05.590697デフォルトの名無しさん
2011/09/17(土) 23:03:30.99{
for(...){
for(...){
if(...) return;
}
}
};
DoubleLoop();
0698デフォルトの名無しさん
2011/09/17(土) 23:23:10.00結局goto使うか、エラーでもないのに例外使うか、
それとも>>697みたいな黒魔法に走るか(俺なら変数宣言もしないけど)するだろうから、
それならラベル付きループの方がいくらかマシじゃないかなあ
それに、どうせループの中でスコープ切れてるから、
ループによる関数の巨大化の弊害はそんなにない気はする
0699デフォルトの名無しさん
2011/09/17(土) 23:44:40.97ヒント:銀英伝
0700デフォルトの名無しさん
2011/09/18(日) 00:54:15.19必要ないです。
上手く構造化出来なければ、普通にgotoです。
0701デフォルトの名無しさん
2011/09/18(日) 01:19:46.51普通にgotoです
と同レベルだぞそれ
0702デフォルトの名無しさん
2011/09/18(日) 01:32:30.690703デフォルトの名無しさん
2011/09/18(日) 01:52:16.23gotoじゃ意味を言語的に記述出来ない
0704デフォルトの名無しさん
2011/09/18(日) 01:54:23.96for(...){
for(...){
if(...) return;
}
}
}();
そんなに黒っぽくないような気がする
0705デフォルトの名無しさん
2011/09/18(日) 02:49:50.930706デフォルトの名無しさん
2011/09/18(日) 04:43:56.57はやくllvm clangでも動いて欲しい
0707デフォルトの名無しさん
2011/09/18(日) 04:47:03.930708デフォルトの名無しさん
2011/09/18(日) 04:58:12.520709デフォルトの名無しさん
2011/09/18(日) 06:40:34.78最適化でinline化するのがベストではあるが
0710デフォルトの名無しさん
2011/09/18(日) 10:13:31.200711デフォルトの名無しさん
2011/09/18(日) 10:16:08.320712デフォルトの名無しさん
2011/09/18(日) 10:21:09.32変更されてるかどうかなんてコンパイラが勝手に解析すればいいし、constなんてキャストで外せるんだから信用しちゃだめだ。
0713デフォルトの名無しさん
2011/09/18(日) 11:35:31.710714デフォルトの名無しさん
2011/09/18(日) 11:46:52.300715デフォルトの名無しさん
2011/09/18(日) 12:15:43.12規格中のどこの規定のことを言っているのかね?
0716デフォルトの名無しさん
2011/09/18(日) 12:30:36.76while(hell) //hell の間繰り返す。で、何がしたいのか?
どちらも「意味を言語的に記述」はしていて、意図を記述していない
これで while をえこひいきする客観的な理由は何だ? Dijkstra の教えがどうたらじゃなく
0717デフォルトの名無しさん
2011/09/18(日) 12:33:45.89マルチスレッド対応のほうが大事だろ。
0718デフォルトの名無しさん
2011/09/18(日) 12:34:54.13すれ違い
0719デフォルトの名無しさん
2011/09/18(日) 12:41:24.470720デフォルトの名無しさん
2011/09/18(日) 12:46:08.160721デフォルトの名無しさん
2011/09/18(日) 17:53:23.59C++的にはgotoだと上方向に飛べるからコンストラクタやtryをまたがれると云々とか。
0722デフォルトの名無しさん
2011/09/18(日) 17:57:42.38アホはお帰り下さい
0723デフォルトの名無しさん
2011/09/18(日) 18:14:41.35gotoは制御のネストを破壊する。
break,retrun,continueに於いてはネストを
下げるだけの操作だからgotoとは別。
このスレで、スレ違い、さらには初心者レベルなネタをだすな。
0724デフォルトの名無しさん
2011/09/18(日) 19:24:31.940725デフォルトの名無しさん
2011/09/18(日) 19:26:55.560726デフォルトの名無しさん
2011/09/18(日) 19:27:55.45そっちの方が楽だろ。
0727デフォルトの名無しさん
2011/09/18(日) 19:47:31.29コンストラクタや try をまたぐ問題は上方向か下方向かには関係ないと思うぞ
>>723
破壊というと何か不都合なことが起きるとでも言いたげだが具体的にどういうことだ?
なあ熟練者さん、continue は「下げる」のか?
# goto や多重継承についてドライに何か尋ねると高圧的になる人を魚っ血中
# これから出かけるところで帰りは明朝 (疲れる用事なので寝てるかも)
0728デフォルトの名無しさん
2011/09/18(日) 19:51:04.36どっちかといえば新しいネストを作り出してる方だな。
0729デフォルトの名無しさん
2011/09/18(日) 19:52:31.860730デフォルトの名無しさん
2011/09/18(日) 19:54:27.44gotoはコードの原則を変えてしまうので問題なんだろう。
つまり、下に流れるということ。
俺は、下に流れるgotoは許容してるな。
あんまり使う機会もないけども。
0731デフォルトの名無しさん
2011/09/18(日) 19:54:35.35くだらねぇ事相手にしたくないけど。
再利用が効くからってこんなコード書かれたらどう思うんだよ。
label2:
if(・・・)
{
・・・・
label1:
・・・・
goto label2;
}
else
{
・・・・
goto label1;
}
0732デフォルトの名無しさん
2011/09/18(日) 19:58:37.69俺も迂闊に上とか言っちゃったんで>>727で実につまらん反論されたけどさ(元々の意図と異なるので相手にしないけど)
迂闊に下とか言っちゃうと↓みたいな揚げ足取りがきっと来るぞ
goto L;
t obj; //コンストラクタが動く
L:
0733デフォルトの名無しさん
2011/09/18(日) 20:03:08.74そういうのは趣味でやってるうちに、頭の中で最適化されて消えてくモノだと思うんだけどねぇ。
来たら来たで、なんでそうなった??って聞くだろうし。
0734デフォルトの名無しさん
2011/09/18(日) 20:08:47.30書いたその日はいいかもしれんが、手直しが必要になったら関数の中まるごと消すわ
0735デフォルトの名無しさん
2011/09/18(日) 20:33:07.86gotoによる多段break/continueと
ラベル付きbreak/continueの違いは
gotoという構文を見ただけでは
それがbreakなのかcontinueなのか
それとも他の処理なのか分からないということだけが問題
他の問題は些末な事だよ
ラベルを工夫すれば人間に分かるようになるが、あくまで苦肉の策
最初はbreakのつもりだったけどやっぱcontinueに変えたわ、とかで
ラベル変更しないアホも出る可能性のある不確実なもので、
どう見てもcontinueなのにラベル名がBREAKになってるとかもあり得る諸刃の剣
あくまで多段break/continueの構文がないし
goto以外のworkaroundはどれもgotoより醜悪だから
仕方がなくgotoを使ってるだけで、
構文があった方がいいのは間違いない
0736デフォルトの名無しさん
2011/09/18(日) 20:33:17.240737デフォルトの名無しさん
2011/09/18(日) 20:42:26.12プログラムとか適当でも理論を実証できればそれで良いと思ってるから
可読性とか安全性とかほとんど気にしない(というか興味も知識もない)ので
ラベル名変えないとか普通にあり得る
ラベル付きbreak/continueはC++1xではどうなるんだろう
0738デフォルトの名無しさん
2011/09/18(日) 20:48:51.45gotoは2重forから2重forのど真ん中に
飛び込んだり出来ることをよく覚えとけよ。
0739デフォルトの名無しさん
2011/09/18(日) 20:50:20.40名前考えるのメンドイわ。
break 1;//一段抜ける
break 2;//二段抜ける
break 3;//三弾抜ける
0740デフォルトの名無しさん
2011/09/18(日) 20:52:05.14それ良いね。
0741デフォルトの名無しさん
2011/09/18(日) 21:18:21.12#define do_bbreak(a) {typedef int illb#a;
#define bbreak(a) {typedef illb##a dmy;goto l##a;}
#define close_bbreak(a) {typedef illb##a dmy}l##a:;}
#define do_bcontinue(a) c##a:{typedef int illc##a;
#define bcontinue(a) {typedef illc##a dmy;goto c##a;}
#define close_bcontinue(a) {typedef illc##a dmy;}}
do_bbreak(a){
do_bcontinue(a){
if () bbreak(a);
if () bcontinue(a)
}close_bcontinue(a)
}close_bbreak(a)
0742デフォルトの名無しさん
2011/09/18(日) 21:19:51.42ネスト増やした途端バグになる
0743デフォルトの名無しさん
2011/09/18(日) 21:21:05.26醜悪すぎる・・・
0744デフォルトの名無しさん
2011/09/18(日) 21:22:00.500745デフォルトの名無しさん
2011/09/18(日) 21:22:19.30そんな迂闊に for や while 書く奴なら、何やってもバグるだろう。
0746デフォルトの名無しさん
2011/09/18(日) 21:22:58.72土人と一緒に仕事するのをやめろ。
0747デフォルトの名無しさん
2011/09/18(日) 21:24:27.96ラベルでも方向は違えど同じだろ。
0748デフォルトの名無しさん
2011/09/18(日) 21:26:51.88これカウントが逆のほうが良くないか?
break 0;//一番外を抜ける
break 1;//二段目を抜ける
0749デフォルトの名無しさん
2011/09/18(日) 21:27:42.02よく見るのは関数終了前のエラー処理に飛ぶタイプ。
finally節的な使い方。カーネルのソースでもしょっちゅう見る。
0750デフォルトの名無しさん
2011/09/18(日) 21:28:09.18マジックナンバー書く時点でオワットル
0751デフォルトの名無しさん
2011/09/18(日) 21:28:11.310752デフォルトの名無しさん
2011/09/18(日) 21:28:52.220753デフォルトの名無しさん
2011/09/18(日) 21:28:55.110754デフォルトの名無しさん
2011/09/18(日) 21:30:20.98> マジックナンバー
え?
0755デフォルトの名無しさん
2011/09/18(日) 21:30:44.07数値をマジックで書いたら全部アウトかよ。
break 0;を見てなんと間違えたり、
どの値と同期とったりするんだ?
0756デフォルトの名無しさん
2011/09/18(日) 21:35:28.30むかしのBASIC的な牧歌的感性
0757デフォルトの名無しさん
2011/09/18(日) 21:37:15.44名前付けたら他の構文と同じく定数定義したらええんちゃうん。
const int FUNCTION_SCOPE = 0;
const int LOOP_SCOPE = 1;
const int LOOP_THE_LOOP_SCOPE = 2;
0758デフォルトの名無しさん
2011/09/18(日) 21:37:32.71だから実際のネスト数と同期とるんだろ
0759デフォルトの名無しさん
2011/09/18(日) 21:40:09.55なんかあるの?
0760デフォルトの名無しさん
2011/09/18(日) 21:42:28.97ネスト増やしたらコードの意味が変わっちゃうし
そもそもコードが見ただけで何を意図してるのか分からん
それを定数変数やマクロで置き換えた所で修正も面倒
gotoの方がよほど保守しやすい
0761デフォルトの名無しさん
2011/09/18(日) 21:42:47.90あれ何らかの理由で例外飛ばせないケースでは自然だよなあ
0762デフォルトの名無しさん
2011/09/18(日) 21:42:52.26きちがい
0763デフォルトの名無しさん
2011/09/18(日) 21:46:32.79ネスト増やしたらコード変わるの当たり前じゃん。
break n;と定義されてて、ループ抜ける以外の意図って何感じるの?
gotoの方がループ変わるたびにラベル管理しなきゃならなくてよっぽど保守しづらいけど。
0764デフォルトの名無しさん
2011/09/18(日) 21:47:46.24だろ。ループ抜ける以外の意味しか無いのにgotoでラベルつけんのも頭おかしい。
0765デフォルトの名無しさん
2011/09/18(日) 21:49:10.55おまえがだよ
0766デフォルトの名無しさん
2011/09/18(日) 21:49:31.78それはやめてほしい。
今でも if 文の閉じ括弧とループ文の閉じ括弧が混じってると
break でどこに飛ぶのかわかりにくい。
それが何段も抜けるとかもう意味不明
0767デフォルトの名無しさん
2011/09/18(日) 21:56:36.43事実上goto=脱出と思っておいていいと思うんだが
0768デフォルトの名無しさん
2011/09/18(日) 21:57:52.470769デフォルトの名無しさん
2011/09/18(日) 21:58:25.62まず質問の意図を確認しておきたいんだが、
1. お前らなんでwhile使うの?ifとgotoで同じことできるじゃん
2. お前らgoto不要論についてどう思ってんの?
>>716は1のように見える(明らかにwhileとgoto比較してるし)が、普通知りたいのは2だよな。どっちなんだ?
0770デフォルトの名無しさん
2011/09/18(日) 22:00:51.55forの中からforのど真ん中に飛び込んだり
ifの中からforに飛び込んだり
forからifに飛び込まんでもプログラムは書けるから
すんなよって話だろ。
0771デフォルトの名無しさん
2011/09/18(日) 22:02:14.61お前に break を扱うことは無理ってことだな。
0772デフォルトの名無しさん
2011/09/18(日) 22:02:59.17構文としては既にgotoあるんだから
増えても変わらんだろ。使わなきゃいいし
権力あるならコーディングルールでしばりゃいい。
0773デフォルトの名無しさん
2011/09/18(日) 22:06:18.330774デフォルトの名無しさん
2011/09/18(日) 22:08:13.810775デフォルトの名無しさん
2011/09/18(日) 22:08:46.16if の括弧なのか ループの括弧なのか考慮しながら、
「1, 2, 3,.. 4 ここに飛ぶのかー」
みたいなのは疲れるよ。break ラベル; のがずっといい
0776デフォルトの名無しさん
2011/09/18(日) 22:09:16.08goto使わない限りコードのコピーをしなければならない
プログラムフロー構造があるのはご存知ですか?
0777デフォルトの名無しさん
2011/09/18(日) 22:09:19.37具体的な用途がさっぱり解からん。
0778デフォルトの名無しさん
2011/09/18(日) 22:11:01.610779デフォルトの名無しさん
2011/09/18(日) 22:11:33.70whileとforの数を数えればいいだけだと思うが?
まさか4重ネストとか常用してんの?ループなんてせいぜい3が限度だろ。
0780デフォルトの名無しさん
2011/09/18(日) 22:14:07.30>>749
catch(...){ ... throw; }なんてのは割りとよく見かけるんだからfinallyが使えたほうがずっと素直。
unique_ptrのカスタムデリータにラムダ渡してそこで……なんてやるより直接書けたほうがいいだろ?
0781デフォルトの名無しさん
2011/09/18(日) 22:14:43.94775 にかかれば五重六重ネストなんて日常茶飯事だよ。
……こいつに C は無理だ。
0782SCHEME餃子 ◆8X2XSCHEME
2011/09/18(日) 22:16:12.97見掛け上のネストの数と合わないかもしれないぞ。
0783デフォルトの名無しさん
2011/09/18(日) 22:18:07.350784デフォルトの名無しさん
2011/09/18(日) 22:18:11.920785デフォルトの名無しさん
2011/09/18(日) 22:19:15.84ゴミプログラマの書いたコードを誰も読まなくていいなら goto は問題にならない
多重ループ使いまくって break continue 多用するバカは
そのループ自身も長いし入り組んでるんだよ。break で飛ぶ先がずーっと下にある。
多重に抜けるってことは、単純な break よりもずっとかけ離れた場所に飛ぶってことだろ。
それを数かぞえながら追うとか悪夢でしかない。
素直に検索で飛べるラベルがいい。
0786デフォルトの名無しさん
2011/09/18(日) 22:20:34.26>catch(...){ ... throw; }なんてのは割りとよく見かけるんだからfinallyが使えたほうがずっと素直。
意味が解からん。catch(...){ ... throw; }なんてfinallyと用途が全然違うでしょ。
正常系じゃfinallyと違って動かない。
0788デフォルトの名無しさん
2011/09/18(日) 22:24:19.47だからラベルが欲しいなら定数使えばいいでしょ。
caseだって同じじゃん。あと、バカが居るなら仕事でしょ
レビューで止めればいい。過去に使われて直せないならgotoだって同じ話。
てか、長いループだろうがbreak n;で検索なんていらんだろ。
labelなら要るだろうけど。
0789デフォルトの名無しさん
2011/09/18(日) 22:37:14.24定数にしてもどの行に飛ぶかわからんだろうよ。
それにプログラムを読まなくちゃいけないのは、専業プログラマだけじゃない。
科学系研究者の書いたコードなんて現状クソ以外の何物でもない。
しかも有名な奴ほど腐ってるんだ。あれをさらに腐敗させるようなのは導入してほしくない。
0790デフォルトの名無しさん
2011/09/18(日) 22:39:50.43catch(...){ throw; } がある場合、gotoによるfinally処理は記述が難しいんじゃないの? ってことだと思うよ
もし、「超簡単だよ!」って思ったらcodepadで書いて見せてほしい
たぶん、
>unique_ptrのカスタムデリータにラムダ渡してそこで
これより簡単になることはないと思う
0791デフォルトの名無しさん
2011/09/18(日) 22:40:37.70その前後で例外が発生してない時も同じ後始末をしてるコードを見たことがないのか?
それに例外が発生してるときに限定したって、catchするとランタイムが例外オブジェクトを捕まえないといけないので
結構裏で処理が走ってるし、C++の例外の形になってないunwind操作がもしあったらすり抜けてしまう。
bool flag = true;
try{
例外が起きるかも
flag = false;
}finally{
if(flag) 後始末
}
のほうが、実は軽いし補足できる範囲も広いんだよ。
0792デフォルトの名無しさん
2011/09/18(日) 22:43:58.070793デフォルトの名無しさん
2011/09/18(日) 22:45:36.19だからgotoと同じだって
理論的じゃないなぁ。
0794デフォルトの名無しさん
2011/09/18(日) 22:47:31.93例外構文も使えそうに無いな。てか絶対使うな。取りこぼしそうだから。
0795デフォルトの名無しさん
2011/09/18(日) 22:50:41.93次に飛び先を確かめるために下を見ないといけないってのはあるなあ。
break nだとそれがn回か。
よしループの最後にEND WHILEって明記しようぜ。それならbreak nも有りな気がしてきた。
0796デフォルトの名無しさん
2011/09/18(日) 22:50:47.67その処理具体的に何するの?
ディスクリプタのクローズ?
メモリーの解放?
ロックの解除?
0797デフォルトの名無しさん
2011/09/18(日) 22:54:06.64同じじゃない。goto は飛ぶ先が必ずラベルだから、検索すれば思考せずに見つけることができる。
多重 break で飛ぶ先に数字を使うなら、
今の上のループの、上のループがどれで、どこで終わっているのか探す手間がかかる。
for(){ for(){ if(){ break 2; } } } みたいな一目瞭然の場合だけを考えているなら別だが。
>>794
実際使えてないアホばかり
0798デフォルトの名無しさん
2011/09/18(日) 22:54:49.05ifブロック1つが100行、forブロック1つが200行。
そりゃ大変だね。もうループの条件判定だけで
抜けるようにしたほうがいいんじゃない?
0799デフォルトの名無しさん
2011/09/18(日) 22:55:36.53だから番号逆に書いたらって。
0800デフォルトの名無しさん
2011/09/18(日) 22:57:50.85finallyだって頻繁に使いたくなるというわけでもない。そうやって組んでる中でごくたまに使いたくなるだけなんだよ
そのごくたまに使いたくなる時のみでさえ、
>unique_ptrのカスタムデリータにラムダ渡してそこで
みたいなfinally節の代替物が関数の先頭に来るやり方になにかもやもやしたものを感じるのでfinallyがほしいなぁと思うことがあるだけ
>>796
>>791じゃないけど俺は忘れた。少なくともここ5年はほしいと思ったことすらない
0801デフォルトの名無しさん
2011/09/18(日) 22:58:17.990802デフォルトの名無しさん
2011/09/18(日) 23:00:38.53ヘタすると宇宙のかなたにとんでいくし。
ロボットの制御には逆運動学計算が必要だし、それに基づいて制御する
ときにも例外処理は必要。突然暴走して人間を殴る殺人ロボットになる
かもしれないし。
当然、ATMシステムに例外処理がないと(COBOLシステムにそれに類した
対策はあるよね?)とんでもないことになるし。
しかし、ただの数値計算に例外処理を導入しても、根本的にアルゴリズム
というか、プログラムにエラーがあるわけで、例外処理で正常な計算に戻
せるわけがない。プログラムを見直して、初期値やデータを与えて計算を
やり直すしかない。
だから、分野によってはそれがないと致命的かもしれんが、普通の数値計算
では例外処理なんてどうでもいい。C++の掲示板とかBlogには大事だと書かれ
ているが、それは分野による。騙されるなw
0803デフォルトの名無しさん
2011/09/18(日) 23:04:56.65横レスするが、ロケットとか人工衛星って、電磁波の磁界通過の関係で
高性能CPUはつまんから例外処理とかもタブーよ。
とりあえず待機系を20個とかバカみたいに動かして、
異常が起きたら片っ端からリセット。
0804デフォルトの名無しさん
2011/09/18(日) 23:07:16.76そりゃほとんどは確保と解放が対応付いてるよ。そういうのはクラスにすればいい。
>>800も言ってるけど、超稀に対応が取れないレアケースがある。
そういうときにunique_ptrとか持ち出すのもなんだかなーってだけ。
あとまあどうせ1箇所でしか使わないのにいちいちクラス化するのもめんどくせーとか。
0805デフォルトの名無しさん
2011/09/18(日) 23:08:00.96こないだ小惑星から帰ってきた人工衛星もそんな感じだったよね。
回路つぎ変えて対応とかさ。
0806デフォルトの名無しさん
2011/09/18(日) 23:11:26.24やったねたえちゃん。ラムダで済むね。
0807デフォルトの名無しさん
2011/09/18(日) 23:12:38.96コンストラクターと演算子でどうやってエラー返す気だろ。
0808デフォルトの名無しさん
2011/09/18(日) 23:18:45.51まあunique_ptr+ラムダで済むから、ローカルクラス作って云々やるよりは遥かにマシになったのは事実なんだよなあ。
既にcatch(...)を書いてる人たちもこれに置き換え……てくれる見込みは全くないけどさ。
0809デフォルトの名無しさん
2011/09/18(日) 23:32:47.82Factoryクラスとかに使われるんだろうか憂鬱だ。
newしたクラス以外は所有するオブジェクトを
deleteしない。原則自動変数を使うを守ってりゃ済む話だったのに。
0810デフォルトの名無しさん
2011/09/18(日) 23:47:31.77一番外まで脱出するケースでしか意味ないじゃん
0811デフォルトの名無しさん
2011/09/18(日) 23:50:57.00#define X(略) do { 略; } while(0)
は、全く見ないってもんでもないだろ。
0812デフォルトの名無しさん
2011/09/18(日) 23:51:34.64何らかの管理クラスに一括して管理させたいときだな
他で作って、管理クラスに突っ込んでおく
0813デフォルトの名無しさん
2011/09/18(日) 23:53:47.390814デフォルトの名無しさん
2011/09/18(日) 23:56:49.07それクソコードだろ。
0815デフォルトの名無しさん
2011/09/18(日) 23:58:50.78いや、ループのネストが増えようが減ろうが脱出ループは変わらなくなる。
0816デフォルトの名無しさん
2011/09/18(日) 23:59:52.79そのまとめるオブジェクトを関数スコープかクラススコープに置いといても変わんないんでしょ?
0817デフォルトの名無しさん
2011/09/19(月) 00:01:10.720818デフォルトの名無しさん
2011/09/19(月) 00:01:27.27俺の認識間違ってるか?
while (A) {
while (C) {
while (D) {
break 1; // Cを抜ける
}
}
}
while (A) {
while (B) { // 追加
while (C) {
while (D) {
break 1; // Bを抜けるようになる
}
}
}
}
0819デフォルトの名無しさん
2011/09/19(月) 00:03:47.130820デフォルトの名無しさん
2011/09/19(月) 00:04:31.33goto以上に読みづらいわ
0821デフォルトの名無しさん
2011/09/19(月) 00:06:39.37gotoでもラベルの位置変える必要があるよな
Bの前か後かは絶対決めなきゃならない
0822デフォルトの名無しさん
2011/09/19(月) 00:16:12.60要するにnに関数ブロック以上の制御ブロック全てを含めりゃ
ネストの深さだけで判断できて解決するんだろ
オフサイドっぽいかんじで
0823デフォルトの名無しさん
2011/09/19(月) 00:19:19.91Cでは便利でもC++で使う意味はあまり……
実用上gotoで十分と思うけどねえ。nがそこまで大事な子に見えないし。
0824デフォルトの名無しさん
2011/09/19(月) 00:21:54.31そんなモンの中に break 突っ込む奴はイカレてるだろ。
0825デフォルトの名無しさん
2011/09/19(月) 00:22:21.070826デフォルトの名無しさん
2011/09/19(月) 00:23:42.35while(C)についてるってのは変わらんだろ
ループ追加しても普通は位置なんて変える必要はないのだから
大して問題にならない
ネスト深くなるからって関数化する時もラベルならそのままコピーできる
なにより定数で置くにしても
最終的には自分で数を数えて書かないといけないとか
バグの温床じゃないですかー
0827デフォルトの名無しさん
2011/09/19(月) 00:24:21.87まだC++1xがあるさ
0828デフォルトの名無しさん
2011/09/19(月) 00:24:45.94{
default;
break;
case 0:
retrun 0;
case 1:
}while(0);;
ある意味最凶やね
0829デフォルトの名無しさん
2011/09/19(月) 00:26:50.05Bについて値を変えなくていいのは変わらんし
五十歩百歩目糞鼻糞。
0830デフォルトの名無しさん
2011/09/19(月) 00:28:09.98何十年後になるんだろ。
そういや詳細知らないけど前回は03だっけ。
0831デフォルトの名無しさん
2011/09/19(月) 00:31:59.20だよねー
0832デフォルトの名無しさん
2011/09/19(月) 00:38:31.630833デフォルトの名無しさん
2011/09/19(月) 00:46:56.382つのウィンドウ等で共有する→ウィンドウを所有するオブジェクトか関数が共有するオブジェクトを持っておく
条件によって返すオブジェクトが変わる関数がある→関数でなくオブジェクトにして保有するオブジェクトをきりかえてやればいい。
share_ptrの必然性はないわな。
0834デフォルトの名無しさん
2011/09/19(月) 01:12:30.15内側から n 個目のループを抜ける仕様。
0835デフォルトの名無しさん
2011/09/19(月) 01:13:15.94てか右辺値参照のおかげでただ返すだけならunique_ptrで良いし
0836デフォルトの名無しさん
2011/09/19(月) 01:18:26.97右辺値参照のおかげでunique_ptrのvectorで十分になったので
shared_ptr使うケースは減りそうだな
0837デフォルトの名無しさん
2011/09/19(月) 01:39:33.61出来るからするなんて誰も言ってないと思うが。
0838デフォルトの名無しさん
2011/09/19(月) 02:04:41.11こういう考えの人って多いの?
複雑なアプリケーションでは所有権が頻繁に移動するケースがあるから
shared_ptrが標準に取り込まれたと思うんだけど
所有権の移動を自力管理しないのは怠慢/所有権を移動するような設計がアホ、とか言われちゃうんだろうか
うーむ・・・周りに嫌がられたくないし、しばらく使わないでおこうかな・・・
0839デフォルトの名無しさん
2011/09/19(月) 02:40:53.00移動ならunique_ptrでいいんじゃない?
基本的に自動変数を使えばいいってのはその通りだが
Factoryに削除のためのインターフェースをつけるのは俺はやらないな
所有権をunique_ptrに移譲してしまえば使い終わった/例外発生時に自動削除してくれるのにそれをわざわざ手動で削除することもないだろう
0840デフォルトの名無しさん
2011/09/19(月) 02:41:44.23所有権を共有するわけでもないのに shared_ptr 使うのはアホだろ。
名前見ろっていう。
0841デフォルトの名無しさん
2011/09/19(月) 02:47:30.90まぁそれはある意味仕方がない
0x以前は"移動"がなかったんだから
0842デフォルトの名無しさん
2011/09/19(月) 02:47:57.71所有権が移動する場面の安全対策は重要。むしろRAIIを使わずに管理するのがアホだろ。
極端な話、shared_ptr吐き出すnewがあっても良いと思うが。
あとはリソースを複数オブジェクトで共有する場合はshared_ptr必須だね。
0843デフォルトの名無しさん
2011/09/19(月) 02:49:30.51make_sharedってのがある
0844デフォルトの名無しさん
2011/09/19(月) 02:49:43.020845デフォルトの名無しさん
2011/09/19(月) 02:53:08.63それはやめとけ
0846デフォルトの名無しさん
2011/09/19(月) 03:08:21.28あ、コンテナは boost ptr_container ね。
0847デフォルトの名無しさん
2011/09/19(月) 03:34:14.31・ラベル付き(or ネスト数付き)break/continue
・finally
・プロパティ
・restrict修飾子
まだまだある?
0848デフォルトの名無しさん
2011/09/19(月) 03:45:53.140849デフォルトの名無しさん
2011/09/19(月) 03:49:18.530850デフォルトの名無しさん
2011/09/19(月) 05:29:17.30というよりは、finallyがあったとしてもなるべくRAIIを使うべきというくらいだ
0851デフォルトの名無しさん
2011/09/19(月) 06:46:31.90restrictはC99だから上位互換として実装されるんじゃないの?
0852デフォルトの名無しさん
2011/09/19(月) 06:50:52.71別にC++はC99との完全互換は目指してないから
0853デフォルトの名無しさん
2011/09/19(月) 06:51:18.91上にもあるけどラムダで済むようになったしね。
汚いネストが減る分こっちの方がいい。
0854デフォルトの名無しさん
2011/09/19(月) 07:18:30.76#include <iostream>
#include <functional>
class Finally {
public:
Finally(std::function<void()> f) : f(f) { }
~Finally() { f(); }
Finally(const Finally&) = delete;
Finally& operator=(const Finally&) = delete;
private:
std::function<void()> f;
};
int main()
{
FILE* fp = NULL;
Finally f1([&]{
fclose(fp);
});
// fpを使う
}
先に後始末を書くあたり、D言語のスコープガード文に似てるね
0855デフォルトの名無しさん
2011/09/19(月) 09:13:49.66前々スレ位に出てたけどシンボル。
function(this, &Type::Function);
とか書くのがだるい。
function<Function>(this);
と関数からシンボルを独立させて渡したい。
0856デフォルトの名無しさん
2011/09/19(月) 09:22:58.96そうなった経緯ってどんなの?
0857デフォルトの名無しさん
2011/09/19(月) 10:02:42.95式で使う値だからでしょ。
0858デフォルトの名無しさん
2011/09/19(月) 10:23:06.530859デフォルトの名無しさん
2011/09/19(月) 12:14:33.270860デフォルトの名無しさん
2011/09/19(月) 12:58:31.08そんなにひとをバカにしちゃいかんで、
バカだ星のバカ大学のバカ学長のバカ息子のバカ友達に掘られるよ。
0861デフォルトの名無しさん
2011/09/19(月) 13:04:29.47舐めてんの?
0862デフォルトの名無しさん
2011/09/19(月) 13:29:23.39gcc-4.6.1 でもまだ実装が不完全でイライラしてるくらいで
全く対応する気なしとか何を考えてるんだと
0863デフォルトの名無しさん
2011/09/19(月) 14:17:27.940864デフォルトの名無しさん
2011/09/19(月) 17:36:27.42上にもあるけど、goto case
0865デフォルトの名無しさん
2011/09/19(月) 17:36:30.90もっと詳しく
0866デフォルトの名無しさん
2011/09/19(月) 17:42:18.65goto caseより読みやすくできると思うぞ
0867デフォルトの名無しさん
2011/09/19(月) 17:59:14.080868デフォルトの名無しさん
2011/09/19(月) 18:00:54.88どれか1個だけ抽出してgoto caseするより
ラベルにした方が意味が分かりやすいっしょ?
0869デフォルトの名無しさん
2011/09/19(月) 18:09:04.03でも1個の場合は goto case の方が良い。
0870デフォルトの名無しさん
2011/09/19(月) 18:10:33.73単に処理が同じだからであって、そのcaseの値に特別な意味があるわけでもない
gotoならcase以外に飛んで2つ以上のcase共通の後処理を素直に行う事もできるし、
caseに飛ぶよりは意味合いが分かりやすくなると思われ
0871デフォルトの名無しさん
2011/09/19(月) 18:14:05.94そこまでキッチリしにゃきゃならんの? 日曜マには分からん。
0872デフォルトの名無しさん
2011/09/19(月) 19:01:27.61それダイクストラがやめろっていってたことじゃないのか?
スイッチのネストで解決出来ない?
0873デフォルトの名無しさん
2011/09/19(月) 19:31:44.990874デフォルトの名無しさん
2011/09/19(月) 19:40:26.12まあ俺もこんなgoto使った事ないけど
goto caseよりはマシだな
0875デフォルトの名無しさん
2011/09/19(月) 19:45:50.08基本は複数のcaseで使われる処理を別関数化すると思うけど
あまりに冗長になるならgotoの方が綺麗に書けると思われ
0876デフォルトの名無しさん
2011/09/19(月) 19:48:32.35switchは絶対にネストしてはいけない
void hoge(int x, int y){
switch(x){
case 0:
switch(y){
case 0:
puts("あ");break;
case 1:
puts("い");break;
default:
puts("う");break;
}
break;
case -1:
puts("え");break;
default:
puts("お");break;
}
}
hoge(0,0);hoge(0,1);hoge(0,2);hoge(-1,0);hoge(1,1);
と呼ぶとどうなる?
答えはメール欄
0877デフォルトの名無しさん
2011/09/19(月) 19:51:38.400878デフォルトの名無しさん
2011/09/19(月) 19:59:25.560879デフォルトの名無しさん
2011/09/19(月) 20:00:06.060880デフォルトの名無しさん
2011/09/19(月) 20:02:49.930881デフォルトの名無しさん
2011/09/19(月) 20:02:59.31そういう時期もあったのかもしれないけど、
少なくともC++98にはこう書かれてる
6.4.2 The switch statement
4 Switch statements can be nested; a case or default label is associated with the smallest switch enclosing it.
0882デフォルトの名無しさん
2011/09/19(月) 20:03:00.42お前に switch 文は無理だ。
0883デフォルトの名無しさん
2011/09/19(月) 20:18:33.420884デフォルトの名無しさん
2011/09/19(月) 20:19:32.52他「いや、お前のバグだろ」
よくあるこれ。
0885デフォルトの名無しさん
2011/09/19(月) 20:24:16.87そのまま覚えてるだけかもしれないから
そろそろ許してやろうぜ
0886デフォルトの名無しさん
2011/09/19(月) 20:28:42.820887デフォルトの名無しさん
2011/09/19(月) 20:30:26.66組み込み系か昔のコンパイラあたりでハマるケースがあったのかも知れないね
case -1:ってのが何かのポイントのような気がするが、解説もないし真相は闇の中か・・・
0888デフォルトの名無しさん
2011/09/19(月) 21:07:55.57これでええんとちゃう。
switch(x)
{
cace 1:break;
cace 2:break;
cace 3:break;
}
switch(x)
{
cace 1:
cace 2:
//共通処理
}
0889デフォルトの名無しさん
2011/09/19(月) 21:11:07.48>>874
0890デフォルトの名無しさん
2011/09/19(月) 21:45:40.84gotoの方が忘れるだろ
0891デフォルトの名無しさん
2011/09/19(月) 22:09:27.57片方にだけcase追加して満足する場合があるんだよな、これが
0892デフォルトの名無しさん
2011/09/19(月) 22:10:56.710893デフォルトの名無しさん
2011/09/19(月) 22:11:51.73外のswitchからボコボコ飛んで来て滅茶苦茶になるからダメって教わってきたんだけど
最近は大丈夫なんだな
VC2010だと確かにあいうえおだわ
VC6やGCC3の頃はスコープ無視して最初のラベルに飛ぶようになってたはず
0894デフォルトの名無しさん
2011/09/19(月) 22:12:56.88switchだけは無視しないぞ
0895デフォルトの名無しさん
2011/09/19(月) 22:20:16.99現にそれで痛い目にあった事があったからこんな事書いてるわけで
今は規格も実装もちゃんとネスト出来るようになってるらしいからいいです
昔話で混乱させてすみませんでした
0896デフォルトの名無しさん
2011/09/19(月) 22:34:45.65あの頃はまだ規格ができたばかりの時期だったし
準拠率ひどいもんだったのであり得るとは思うけど、
C89だとそこんとこどうなんだろう?
0897デフォルトの名無しさん
2011/09/19(月) 22:35:12.62意図して共通処理実行させるのに忘れる理由が解らん。
むしろ共通処理へのcaceを書いてないときは、
共通処理が実行されないことを望むだろ。
0898デフォルトの名無しさん
2011/09/19(月) 22:36:55.79コピペや置換にミスはつきものなんだよ
理屈じゃない
人間は優秀だとしても100%正確に何かをできるとは限らないのだ
0899デフォルトの名無しさん
2011/09/19(月) 22:38:03.090900デフォルトの名無しさん
2011/09/19(月) 22:51:59.110901デフォルトの名無しさん
2011/09/19(月) 23:04:18.36上司に恵まれなかったんだな
バグが原因なのに、言語のせいにする上司
可哀想に
(笑)
0902デフォルトの名無しさん
2011/09/19(月) 23:09:22.97VC6でネストできないってのは流石にないんじゃないの? 時代的に
0903デフォルトの名無しさん
2011/09/19(月) 23:10:30.06goto はその辺酷いだろ。
0904デフォルトの名無しさん
2011/09/19(月) 23:11:23.74>>876の間違い。そんなふうになるコンパイラはないってことで、
スレは進みます。
0905デフォルトの名無しさん
2011/09/19(月) 23:19:11.01印象だけで語られても
0906デフォルトの名無しさん
2011/09/19(月) 23:26:46.560907デフォルトの名無しさん
2011/09/19(月) 23:29:00.50試しにgoto cace とやらを書いてみて。
0908デフォルトの名無しさん
2011/09/19(月) 23:34:41.31switch (key) {
case VK_LEFT: x--; goto RING_Y;
case VK_RIGHT: x++; goto RING_Y;
RING_Y:
x = (x + width) % width;
break;
case VK_UP: y--; goto RING_Y;
case VK_DOWN: y++; goto RING_Y;
RING_Y:
y = (y + height) % height;
break;
}
0909デフォルトの名無しさん
2011/09/19(月) 23:35:27.65ミスったよ
まさにコピペの罠
0910デフォルトの名無しさん
2011/09/19(月) 23:36:31.59一番外まで抜けてしまうコードを吐くこともあるコンパイラには出会ったことあるな
MPLABのPIC用のコンパイラだけどさ
0911デフォルトの名無しさん
2011/09/19(月) 23:37:45.540912デフォルトの名無しさん
2011/09/19(月) 23:45:23.15もう規格だの実装だの言うレベルにすら達してないな
0913デフォルトの名無しさん
2011/09/20(火) 00:15:56.98C<U> map(function<U(T)> f, const C<T>& xs) {
C<U> ret;
transform(xs.cbegin(),xs.cend(),back_inserter(ret),f);
return move(ret);
}
これ、
map<int,int>([](int x){return x+1;},xs)
って呼んであげないとコンパイル通らないのですが、何とかなりませんか?
マクロ使えば一瞬なのに・・・
0914デフォルトの名無しさん
2011/09/20(火) 00:25:52.22function<U(T)>じゃなくて直接Lとかにして
その戻り値の型を取得するといいよ
0915デフォルトの名無しさん
2011/09/20(火) 00:26:50.27<int, int>を無くしたいの?
0916913
2011/09/20(火) 00:37:33.05template <class f_type, ...>
typename function<f_type>::result_type map(...
だと、
map<int(int)>(...)
ってかんじに呼び出せることは確認しました。
lambda全体をLにしたとき、L::argument_typeとかって定義されてます?
>>915
そうです。
0917913
2011/09/20(火) 01:03:26.85イテレータ渡すときもそうですけど、型の情報がコードの見た目に反映されなくて嫌いです。
functionは記法としていいなぁ、と思ってたんですけどね・・・。
ところでmoveの使い方ってあってます?書かなくてもよかったりして。
0918913
2011/09/20(火) 01:06:58.96map(negate<int>(),xs)
はいいけど、
map([](int x){return -x;},xs)
は
no matching function for call to 'map(main()::<lambda(int)>,std::vector<int>&)'
のエラーになります。
0919デフォルトの名無しさん
2011/09/20(火) 01:42:39.38template <typename L, typename T>
auto map(L f, const std::vector<T>& xs) -> std::vector<decltype(f(std::declval<T>()))>
{
std::vector<decltype(f(std::declval<T>()))> ret;
std::transform(xs.cbegin(),xs.cend(),std::back_inserter(ret),f);
return std::move(ret);
}
0920デフォルトの名無しさん
2011/09/20(火) 02:03:37.20template<class F, class T, template<class ...> class C>
auto func(F f, const C<T> & c) -> C<decltype(f(*c.cbegin()))>
{
C<decltype(f(*c.cbegin()))> ret;
transform(c.cbegin(), c.cend(), back_inserter(ret), f);
return ret;
}
0921デフォルトの名無しさん
2011/09/20(火) 02:08:50.800922デフォルトの名無しさん
2011/09/20(火) 10:24:17.60クラスで代用しろってことなんかな。
広域関数入れ換えられないからたまに欲しくなる。
0923デフォルトの名無しさん
2011/09/20(火) 12:48:57.470924デフォルトの名無しさん
2011/09/20(火) 18:12:54.38#define do_scpexit(a) {typedef int dmy_t_##a;int sx_cntr_##a=0;
#define sbreak(a) {++sx_cntr_##a;goto label_sx_##a;}
#define scpexit_pp(a) label_sx_##a:;for(int sx_i=++sx_cntr_##a;sx_i>=0;--sx_i){{;
#define exit_case(a) }if(sx_i>=a){
#define close_scpexit(a) }}typedef dmy_t_##a dmy;}
do_scpexit(x){
sbreak(x);
sbreak(x);
scpexit_pp(x){
exit_case(2){}
exit_case(1){}
exit_case(0){}
}
}close_scpexit(x)
0925デフォルトの名無しさん
2011/09/20(火) 19:23:32.010926デフォルトの名無しさん
2011/09/20(火) 20:03:25.53ないわ
0927デフォルトの名無しさん
2011/09/20(火) 21:56:55.07そんなの、お前ら密教仲間で使っとけ
0928デフォルトの名無しさん
2011/09/21(水) 08:11:35.95ありがとうございます。これで解決してますが、やっぱ
decltypeは嫌いですねぇ。typeofに逆戻りしてる感じが。
そもそもこのmapって効率悪いけどその場で書くことを目的としていたので、
どうせゴタゴタするならproxyつくるほうに注力するかな・・・。
0929デフォルトの名無しさん
2011/09/21(水) 20:01:43.23template <typename L, typename T>
auto map(L f, const std::vector<T>& xs)
using U = decltype(f(std::declval<T>()))
-> std::vector<U>
{
std::vector<U> ret;
std::transform(xs.cbegin(),xs.cend(),std::back_inserter(ret),f);
return std::move(ret);
}
こういう事できたらいいんだが
(まあそれでもキモさにそこまで変わりはない気もするが)
0930デフォルトの名無しさん
2011/09/21(水) 21:37:51.19OCamlならまだわかるんだけど
0931デフォルトの名無しさん
2011/09/21(水) 21:44:04.300932デフォルトの名無しさん
2011/09/21(水) 21:44:43.270933デフォルトの名無しさん
2011/09/21(水) 21:46:04.63話題にすらならない
0934デフォルトの名無しさん
2011/09/21(水) 21:58:41.470935デフォルトの名無しさん
2011/09/21(水) 21:58:49.41Lisperに絡まれたら嫌だし
0936デフォルトの名無しさん
2011/09/21(水) 22:04:45.14態度はでかいんだけど
0937デフォルトの名無しさん
2011/09/21(水) 22:15:35.67const pair<C<T1>,C<T2>> zip(const C<T1>& xs, const C<T2>& ys) {
return move(make_pair(xs,ys)); //just want to pass
}
C<U> map(BFunc f, const pair<C<T1>,C<T2>>& zs);
0938デフォルトの名無しさん
2011/09/21(水) 22:22:00.86returnするとき、コピーコンストラクタが呼び出されてる気がします。
なんかうまい手はあります?
(ref(...)とか、使い方しらないので0xのrval_refでそういうのあったりするのかなーとか)
ちなみにpair<const C<T1>&, const C<T2>&>を返すとセグフォだったので諦めました。
0939デフォルトの名無しさん
2011/09/21(水) 23:00:34.88あと、それzipじゃなくてただのmake_pairじゃん
0940デフォルトの名無しさん
2011/09/21(水) 23:25:12.66template<class F, class T, class A, template<class, class> class C,
class U = decltype(declval<F>()(declval<T>()))>
C<U, A> func(F f, const C<T, A> & c)
{
C<U, A> ret;
transform(c.cbegin(), c.cend(), back_inserter(ret), f);
return ret;
}
0941デフォルトの名無しさん
2011/09/22(木) 00:33:41.25完璧です。ありがとうございます。
map(f,zip(xs,ys))も、多重定義でmap(f,xs,ys)にしとくことにしました。
どうせこのパターンでしか使わないだろうし。
あとはreduceか・・・クロージャは素直に渡せるだろうか。
第一引数はconst F&にすればいいのか?
0942デフォルトの名無しさん
2011/09/22(木) 04:46:12.580943デフォルトの名無しさん
2011/09/22(木) 07:22:06.760944デフォルトの名無しさん
2011/09/22(木) 07:37:10.830945デフォルトの名無しさん
2011/09/22(木) 09:40:24.24無心にやり遂げちゃって決着ついた後なら案外成功でも失敗でも気にならんもんだけど。
0946デフォルトの名無しさん
2011/09/22(木) 09:51:37.93そりゃ特殊化と同じ事できるからじやね。
あと俺はたまにlisp使う。
0947デフォルトの名無しさん
2011/09/22(木) 11:06:53.88なんとなくわかった
ちなみに自分は数式処理がどうしても必要なんでlispからは離れられない
0948デフォルトの名無しさん
2011/09/22(木) 11:19:39.96OpenC++でMOPとか
template駆使してLisp処理系モドキとか、
結構いるんじゃないの。
Boost-dev MLでもSchemeの例あげる人いるし。
0949デフォルトの名無しさん
2011/09/22(木) 11:23:00.60特殊化はCLOSでもできるし、
むしろあっちが最近の特殊化の流れの大元だけど、
まあもはや流行りじゃないんでしょうねえ。
0950デフォルトの名無しさん
2011/09/22(木) 11:47:41.95たとえばintのところも全部autoにしてるんだけど
0951デフォルトの名無しさん
2011/09/22(木) 11:55:09.29ぱっと見はっきりしてるんならいいんじゃない?
0952デフォルトの名無しさん
2011/09/22(木) 12:38:03.44それがだめじゃスクリプト言語もダメって事になるだろ。
0953デフォルトの名無しさん
2011/09/22(木) 12:38:53.720954デフォルトの名無しさん
2011/09/22(木) 12:58:42.36smalltalkだってsimulaの派生なのに宣言型はもってないしね 。
OOらしく依存性を下げたければ出来る限り宣言型でなく
オブジェクト自身の型に委ねるべきだ。
まあそれ以前に11規格は今すぐ使っていいものではないけど。
0955デフォルトの名無しさん
2011/09/22(木) 14:22:31.220956デフォルトの名無しさん
2011/09/22(木) 14:26:41.050957デフォルトの名無しさん
2011/09/22(木) 14:49:40.470958デフォルトの名無しさん
2011/09/22(木) 22:34:06.11template <int n, int...ns>
struct sum {
static const int value = sum<ns>::value;
}
ってやると「まだ実装されてない」っておこられるけど、
これって仕様としてはアリなのですか?
0959デフォルトの名無しさん
2011/09/22(木) 22:36:31.38n+sum<ns>::value
だった。すみません。
0960デフォルトの名無しさん
2011/09/22(木) 22:42:37.90まあ未実装みたいだけど
0961デフォルトの名無しさん
2011/09/22(木) 22:46:56.95切ない
0962デフォルトの名無しさん
2011/09/22(木) 23:58:24.700963デフォルトの名無しさん
2011/09/23(金) 00:00:48.360964デフォルトの名無しさん
2011/09/23(金) 01:21:12.88リテラルで初期化するところは全部autoにしちゃってるな
0965デフォルトの名無しさん
2011/09/23(金) 01:46:51.610966デフォルトの名無しさん
2011/09/23(金) 01:59:47.230967デフォルトの名無しさん
2011/09/23(金) 07:52:04.50auto関係ない
0968デフォルトの名無しさん
2011/09/23(金) 08:07:45.94autoにしない方がいいと思うけど
0969デフォルトの名無しさん
2011/09/23(金) 08:08:50.630970デフォルトの名無しさん
2011/09/23(金) 08:56:14.38本末転倒も甚だしいな。
0971デフォルトの名無しさん
2011/09/23(金) 10:54:41.280972デフォルトの名無しさん
2011/09/23(金) 11:00:02.920973デフォルトの名無しさん
2011/09/23(金) 12:47:55.90auto main() { }
0974デフォルトの名無しさん
2011/09/23(金) 13:18:32.270975デフォルトの名無しさん
2011/09/23(金) 13:53:10.06もっともコンパイラのC++11対応(=バージョンアップ)の結果、古いバージョンでの独自拡張や規格違反だった仕様が変更されて
それに依存していたコードの動作が変わる可能性ならばそれなりにある。
0976hiding
2011/09/23(金) 14:05:01.75Cに毛の生えた程度の糞コードは軒並みエラーになるだろ。
0977hiding
2011/09/23(金) 14:05:43.160978デフォルトの名無しさん
2011/09/23(金) 14:13:42.98実際には、あんまり派生言語対応とか考えられてないCライブラリのヘッダーが使えなくなって、
やむをえずコンパイラの互換性オプションを変更するはめに……ってなりそうだけどな
0979デフォルトの名無しさん
2011/09/23(金) 14:45:49.79もし修正なしにコンパイルはできるが動作が変わることがあったりしたら地獄を見る。
0980デフォルトの名無しさん
2011/09/23(金) 14:55:31.720981デフォルトの名無しさん
2011/09/23(金) 15:17:10.980982デフォルトの名無しさん
2011/09/23(金) 15:56:29.44http://hibari.2ch.net/test/read.cgi/tech/1316760961/
0983デフォルトの名無しさん
2011/09/23(金) 18:26:33.36あるん?
まったく、くだらん。せいぜいマスターベーションでもしてろ、馬鹿がw
0984デフォルトの名無しさん
2011/09/23(金) 18:55:30.0403でコンパイルしたobjと0xでコンパイルしたobjで使用してるstringの実装が異なっているときに
03objで生成したstringを0xobjで受け取って使ったりその逆をやったりすればしねるかもしれない。
0985デフォルトの名無しさん
2011/09/23(金) 19:34:04.50下っ端の教育とかまで考えるとちょっと踏み込む勇気いるよね
0986デフォルトの名無しさん
2011/09/23(金) 19:44:57.40ラムダ式は多用すると思う、ってかgccでは既に多用してる
0987デフォルトの名無しさん
2011/09/23(金) 21:44:00.69これで活躍してくれるかも
0988デフォルトの名無しさん
2011/09/23(金) 21:50:08.380989デフォルトの名無しさん
2011/09/23(金) 22:07:06.11コンセプトさんがいないせいなのか
0990デフォルトの名無しさん
2011/09/23(金) 22:17:56.810991デフォルトの名無しさん
2011/09/23(金) 22:21:57.130992デフォルトの名無しさん
2011/09/24(土) 02:16:46.110993デフォルトの名無しさん
2011/09/24(土) 02:18:09.07ライブラリ的にはスレッドサポートが大きいと思うけど
atomicは楽勝なのだろうか
0994デフォルトの名無しさん
2011/09/24(土) 03:28:37.100995デフォルトの名無しさん
2011/09/24(土) 04:36:46.230996デフォルトの名無しさん
2011/09/24(土) 13:54:52.170997デフォルトの名無しさん
2011/09/24(土) 13:57:20.950998デフォルトの名無しさん
2011/09/24(土) 14:45:12.630999デフォルトの名無しさん
2011/09/24(土) 14:45:30.221000デフォルトの名無しさん
2011/09/24(土) 14:45:51.0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。