- 1 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 00:25:25 ]
- The C++ Standards Committee
www.open-std.org/jtc1/sc22/wg21/ wikipedia ja.wikipedia.org/wiki/C%2B%2B0x C++0x pc11.2ch.net/test/read.cgi/tech/1149440647/ C++0x 2 pc11.2ch.net/test/read.cgi/tech/1191842951/ C++0x 3 pc11.2ch.net/test/read.cgi/tech/1204808027/
- 411 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:24:47 ]
- 調べた
なんだ&とsizeofとtypeid(と多分decltypeも)のオペランドの中が特殊なだけで その外では404の通りでいいんじゃん 関数型は出てきたそばから関数ポインタに変えられるから &とsizeofとtypeid以外の世界にはやっぱり関数型は存在しないんだ 俺は大体合ってた
- 412 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:28:55 ]
- 俺がこっそり望んでいたsealedは入りませんか?
このクラスは継承するなってソースにもドキュメントにも書いてあるのに 勝手に継承されてデストラクタ呼ばれないとか文句垂れられます
- 413 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:29:39 ]
- D&Eに継承の禁止の仕方載ってる
- 414 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:31:15 ]
- 3.
- 415 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:19:54 ]
- >>411
boost::function<R(A)> とか boost::result_of<R(A)> とか見たこともないの?
- 416 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:22:47 ]
- >decltype
オーバーロードしてる関数の型ってのはやっぱ無理なのか 例えばstd::fabsを引数double xで呼び出したときの(戻り値ではなく)関数の型が分かると便利なんだけど decltype( static_cast<decltype(x)(*)(decltype(x))>(std::fabs) ) てのは本末転倒な気がする
- 417 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:32:10 ]
- >>411
関数型をtypedefすると、 シグネチャが同じ関数を大量に宣言するときに便利だよw typedef double F(double); F sin,cos,tan,asin,acos,atan,…; ってこれC言語だからC++0x関係ないな
- 418 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:45:31 ]
- >>415
function, result_ofはTR1にも入っていて、 C++0xにまんま入ることが決定済み。
- 419 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 06:33:58 ]
- sizeofは『式を評価して』その式の型のサイズを返す。
decltypeも『式を評価して』その式の型を返す。 だから関数を入れたらその関数が評価されて関数の戻り値の型が返るに決まっている。 どこも非直感的ではない。
- 420 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 08:42:21 ]
- >>419
×関数を入れたら ○関数呼び出しを入れたら
- 421 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 09:12:37 ]
- おいおい、"unevaluated operand"ってやつで、「評価」されないよ。
typeid, sizeof, decltypeの三つな。
- 422 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:12:11 ]
- 仮に評価したときに返ってくるであろう型、と言うべきだね
- 423 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 14:42:50 ]
- つ 「式の型」
- 424 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 18:25:23 ]
- なるほど、
int i = 0; std::cout<<sizeof(i++)<<std::endl; std::cout<<i<<std::endl; //prints 0 なわけね >>416が気になるからage
- 425 名前:デフォルトの名無しさん mailto:age [2008/09/05(金) 18:28:06 ]
- ageてないw
- 426 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 19:16:48 ]
- 平気で未定義になるような病的な式をsizeofの中に閉じこめたりするのは
TMPではよくやることだな
- 427 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:21:04 ]
- sizeof(0 / 0) は警告が出るな@gcc
- 428 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 21:57:58 ]
- 0除算だからな
- 429 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:35:53 ]
- 昔のコンパイラってTMPで0除算したら落ちたりしてたんだろうか
今でもboost vaultにあるキワモノ(例:eggとかphoenix)使ってたらエラー時に落ちるものは結構あるようだけど
- 430 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 23:39:59 ]
- >>418
??? そんなことは百も承知だが 関数型がテンプレートの引数一つで取り扱える例を出しただけ そういや、boost::function は昔は <R, A1, A2> みたいに書いてたころも あったけな
- 431 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:22:30 ]
- 自意識過剰の変な奴…
- 432 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:36:46 ]
- 美少女中学生スレたるこのスレにはふさわしくないな
- 433 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:45:09 ]
- 美少女中学生の話は↓でやれ。ここでするな。
pc11.2ch.net/test/read.cgi/tech/1191754720/
- 434 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 19:27:25 ]
- 0xの可変個引数テンプレートがDのそれとよく似てるけど、どっちが先なのかな?
それとももっと古くからあった?
- 435 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:49:36 ]
- >>434
va_argって知らないの?
- 436 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 20:55:47 ]
- >>434
先に実装したのはDだが、発想自体は別に新しいものじゃないだろ
- 437 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:22:38 ]
- >>435
可変個引数関数のことを言ってるんじゃないよ >>436 そうなのか。作ったタプルを転送して展開して…とか初めて見たとき、何じゃこりゃすげぇと思ったんだけどな〜
- 438 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:24:06 ]
- C++0xを使いこなせる自信がない。
無理だろあんなもの。疲れるだけ。
- 439 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:27:23 ]
- 大丈夫、苦労するのはライブラリ実装者だけだから
- 440 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:31:14 ]
- >>437
> 何じゃこりゃすげぇと思ったんだけどな〜 かわいいねえ。
- 441 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:53:23 ]
- 美少女中学生がいるな・・・
- 442 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:35:28 ]
- auto以外は普通の利用者には関係ないね
- 443 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:24:30 ]
- 「C++0x?D言語最強に決まってんだろwww」って言われたときのためのコピペ作ろうぜw
- 444 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:30:05 ]
- おまえDスレにいるだろ
- 445 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:34:07 ]
- 可変テンプレートは型リストの構文糖衣でいいのに
- 446 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:59:47 ]
- >>442
コンセプトでエラーメッセージがましになることが期待できるってのはないですか? 普通の利用者は自分でコンセプトを定義しないっていう点では関係ないと言えるのかもしれないけど。
- 447 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 02:43:39 ]
- D?
ああ、C++とJavaの悪い所取りした哀れな言語ね
- 448 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 03:01:47 ]
- >>442
(現在STLやboostを利用するレベルの)通常のC++ユーザーにとっては、 ・auto ・initializer_list ・新型for ・lambda ・template typedef ・nullptr くらいは結構書く機会があるのでは? あと、以前も出てましたが、template同様自分で書くことはなくても、 conceptに関してはユーザー全員が理解すべきものと思います。 個人的にはあとdecltypeとそれに伴う新たな関数宣言も。
- 449 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 03:14:42 ]
- まあ、新しい関数宣言は人のソース読むときには知っとかなきゃならんな…
こんなんだよな []main(int argc, char *argv[]) -> int{return 0;} きめえwwwwwwwwww 自分では絶対に書かない
- 450 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 03:53:18 ]
- >>449
これまでのパラダイムから、あまりにもかけ離れすぎてて これだったら無い方がまだマシ
- 451 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 04:58:26 ]
- こういうことしたい時に便利かも。
template <typename T> struct complex { T re; T im; template <typename T2> []operator+(const complex<T2>& rhs) -> complex<decltype(re+rhs.re)>{ /* ... */ } };
- 452 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 05:10:05 ]
- だったらこれ認めるようにすりゃいいじゃないか…
complex<decltype(re+rhs.re)> operator+(const complex<T2>& rhs){ /* ... */ } rhsを宣言より前に使ってるからダメってのはわかってるよ でもそんなの戻り値型は後で解決することにすりゃいいだけじゃん
- 453 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 05:14:15 ]
- 見慣れない以外の欠点が無いならどうでもいいかと
- 454 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 05:57:38 ]
- コンストラクタとかどうなんの
もしかしてこう? []Foo::Foo() -> : a(0) {} オェェェェ
- 455 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 08:47:11 ]
- N2582 って通りそうなん?
>>454 コンストラクタではその書き方はできないだけだと思われ。
- 456 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 10:02:04 ]
- >>449
要は、戻り値は後ろにある方が型推論ができていいってことらしい。 あと、数学でも、関数の宣言って f: 定義域 → 値域 なのよね。 けども、この書式で、C++ でやるとキモいよな。 >>452 C++ 屋さんは LL 文法大好きだから。
- 457 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:21:18 ]
- 言語としての優劣はともかく、コードの視認性では最近のLLに大きく劣ることになるわけだが。
- 458 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:31:32 ]
- LL違うwww
- 459 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:44:26 ]
- C++ がそっちの意味の LL なわけねぇww
- 460 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 13:59:07 ]
- そのうち、Perl みたいに $ とか @ とか出てきそうだw
- 461 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 16:50:02 ]
- >>455
じゃあコンストラクタ、デストラクタ、変換関数は新形式では書けないって事なのかな 書ける関数と書けない関数があるような一貫性のない書き方はダメだなぁ
- 462 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 16:54:41 ]
- $と@は色んな事情で使えないってD&Eで禿が言ってた
- 463 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 16:55:47 ]
- コンストラクタは現時点でも特殊じゃん。
戻り値書かないのはコンストラクタ・デストラクタだけなんだし。 新書式の目的が戻り値の型推論だっていう目的を考えても、 戻り値のないコンストラクタに使えてもしょうがないし。
- 464 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 16:55:52 ]
- もう[]に別の意味を付けるのはやめて!
[]のHPは0よ!
- 465 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 17:02:29 ]
- それを言ったらC++のHPは(ry
- 466 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 17:14:28 ]
- >>448
あとコンストラクタ関係(委譲、default/delete)は便利だと思う >>454 ラムダからの類推で行くと、書けたとしても []Foo::Foo() : a(0) {} となるだけでは? まあそこまで行くと[]つける意味は皆無に等しいけど
- 467 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 17:21:57 ]
- >>463
と、変換関数な []operator int() -> intって書かせることになるのかなぁ
- 468 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 17:25:23 ]
- どういう使われ方想定してるのかな
今まで通り普通は旧形式で書いて、戻り値で型推論したいときだけ特別に使う物なのか それとも旧形式をobsoleteとして新しいプログラムは全部新形式で書かせることを狙ってるのか 後者だとしたら書けない関数があるのはまずい
- 469 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 17:56:04 ]
- >>465
このC++はバージョンアップするたびに規格書の厚みがはるかに増す…
- 470 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 18:13:16 ]
- ttp://cpplover.blogspot.com/2008/09/c0x.html
- 471 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 18:23:39 ]
- n2582はどうなってんの?
- 472 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 18:48:33 ]
- 却下されろとみんなが願ってるけど
例によって祈り空しく採用される流れ
- 473 名前:471 mailto:sage [2008/09/13(土) 18:56:28 ]
- >>470に追記入ったな
というか、n2582でググったらあのブログがトップに出てくるから気になって書き込んだんだが、 知らなかったわけはないので忘れてたってことだろうか 個人的には>>470の追記と同じく、面白いと思うけどな 気持ち悪いのはラムダ関数の構文であって、 それをとりあえず認めるならば、それと統一が取れていてまだマシ
- 474 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 19:01:11 ]
- []が関数を表す予約語ならまだいい感じなんだがな
function main(int argc, char *argv[]) -> int{return 0;} function Foo::Foo() : a(0) {} Cっぽくはないがそれほど悪くない
- 475 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 19:09:05 ]
- いまさらfunctionとかを予約語にするわけにはいかんって話だしなあ
fncdefとかだめですか fncdef main() -> int; fncdef Foo::operator int(); // Wikipediaのラムダの例を改変 // ja.wikipedia.org/wiki/C%2B%2B0x#.E3.83.A9.E3.83.A0.E3.83.80.E9.96.A2.E6.95.B0.E3.81.A8.E3.83.A9.E3.83.A0.E3.83.80.E5.BC.8F int total = 0; int value = 5; fncdef&[value](int x) { total += (x * value) };
- 476 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 19:23:30 ]
- 色々ぐぐってみた
fncdef 14件 funcdef 14500件 fundef 861000件 deffnc 189件 deffunc 12900件 (HSPで使われてる) deffun 1170件 lambdadef 15件 lambdef 2580 lmbdef 8 lmddef 4 lmbddef 1 deflambda 118 deflamb 42 deflmb 24 deflmd 42 うーん、fncdefかな
- 477 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 20:03:43 ]
- 日本語の教科書なら速攻でεπιστημηさんが書いてくれると思う。
- 478 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 20:43:12 ]
- 絶対誰かが思い付いててかつ却下されてそうだけど、
「C++0xの関数定義用記号をUnicodeに追加する」 という案はどうだろう?
- 479 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 20:52:46 ]
- 却下
- 480 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 21:20:41 ]
- 速攻却下されておまたが濡れ濡れになっている美少女中学生がいるな・・・
- 481 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 21:29:54 ]
- >>478
おまえはくさび文字使って60進リテラルでも書いてろw
- 482 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 21:58:42 ]
- _Functionでいいよもう。
それで、<stdfunction>で#define _Function functionしとけ。
- 483 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:40:21 ]
- function をキーワード化でいいじゃん。
え、昔のコード? そんなもん機械的に書き直せばいい。
- 484 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:45:33 ]
- 機械的にリファクタリング出来るほど、素直な言語ならここまで悩む必要はなかったはず。
- 485 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:51:08 ]
- 機械的にコンパイルできる言語が、機械的にリファクタリングできないわけがない。
- 486 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:56:47 ]
- ソースがどっか行っちゃってて書き直せないこともあってだな
そういうのとリンクできないと困ったりするんだよ まあfunctionなんて名前の関数は最低だけどな
- 487 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 22:57:19 ]
- できなくはないけど難しいからツールが発展してこなかった
- 488 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:08:29 ]
- まあここで何をグダグダ言おうとキーワードフォビアの標準化委員会が新予約語なんて取り入れるはずがない
個人的にはfunctionなんかよりconceptだのrequiresだのの方がよっぽど問題起こしやすそうだと思うが
- 489 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:06:05 ]
- むしろなんでそんなにfunctionなりなんなり、記号ではなく言葉でないと嫌なのか。
- 490 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:09:22 ]
- 記号でもいいけど、卑猥なAAみたいな記号は厭だ。w
- 491 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:16:57 ]
- 記号でもいいが今回のは悪趣味
センスのかけらもない
- 492 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:25:25 ]
- 二項!が使われていなかったことに注目してテンプレート引数を!(...)にしたDを見習うべき。
- 493 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:27:20 ]
- cpp_0x_reserved_word_function でいいお
- 494 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 01:42:10 ]
- キーワードにも名前空間が必要かww
- 495 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 02:26:53 ]
- using keyword function = _Core::function;
変態言語を名乗るならこれぐらい出来ないとな
- 496 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 05:31:56 ]
- []とか->って関数と何の繋がりもないからな
予約語もそうだけど同じものに全然違う意味持たせまくると暗号になっちゃう
- 497 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 08:08:56 ]
- 0xまでには間に合いそうにないからC++xxにしろよ。
- 498 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:31:06 ]
- 西暦20xx年とかいうと安っぽいSFみたいだ
- 499 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:32:23 ]
- おっとロックマンの悪口はそこまでだ
- 500 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:41:38 ]
- 可変個引数テンプレートとクロージャのおかげでboostのFunction objects and higher-order programmingがとんでもなくシンプルもしくは不要になるんだな〜
でもいつ仕様が確定するのやら…
- 501 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:47:58 ]
- boost::eggでやってるのが素で、さらにハイパフォーマンスでできるわけですか凄いですね
- 502 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 20:37:08 ]
- 先人の偉大な変態行為を規格化するという
しんどい作業なのでもうちょっと時間がかかります
- 503 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:44:04 ]
- >>497
0F年まであと7年もあるから余裕かと
- 504 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 21:54:44 ]
- >>503
それは八進数リテラルだ
- 505 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:04:05 ]
- 先に2000をHexにしろよw
- 506 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:18:42 ]
- ヲイラが生きている間で勘弁して下さい ><
- 507 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:23:14 ]
- C++くらいのインフラになると変な変更される方が怖い。
- 508 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 22:58:20 ]
- しかし、まともな神経の人が書いたコードは
相当無茶な変更がない限り、ほとんど影響が無い罠
- 509 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:37:54 ]
- 0xが存在しなかったとしても、処理系のバージョンアップでコンパイルできなくなるなんてよくある話。
将来コンパイルが通らなくなったとしても、0xのせいとばかり思われないでほしい。 多少は0xのせいの部分もあるかもしれないけど。
- 510 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 23:58:06 ]
- 0xいらない所は03をずっと使い続ければいいだけの話だしな
0xでないと書けないものが新たに加わる訳じゃないし
- 511 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 00:28:38 ]
- >>507
どうせコンパイルオプションで disable できるから安心ですよw
|

|