1 名前:前々スレ985 mailto:sage [03/12/18 06:52] 理解できないわけないだろ! デザパタも知らずにC++使いの質を下げるC厨には げんあり 前スレ達 難易度:1 pc2.2ch.net/tech/kako/1058/10586/1058675178.html 難易度:2 1pc2.2ch.net/test/read.cgi/tech/1063323615/
403 名前:初期不良 mailto:sage [04/09/15 21:23:16] >>400 モーフィングとフォーミングを勘違いするなら分かるけど フォーリングと勘違いするというのは飛んでるなと思う。 3カウント入れちゃうよ
404 名前:361=別名ポリホ mailto:sage [04/09/15 21:35:53] だからマジtypoだって...。まだいりじるのか...。 本気で恥ずかしいんだからいじめんなよ。
405 名前:361=別名ポリホ mailto:sage [04/09/15 21:36:44] >>いりじる いじるの間違いだ。またtypo。もう嫌...。
406 名前:デフォルトの名無しさん mailto:sage [04/09/15 21:38:17] ていうか、ポリフォーリズムをモリモーフィズムと間違えるのって恥ずかしすぎ。
407 名前:デフォルトの名無しさん [04/09/15 22:06:55] イリジウムのことね
408 名前:デフォルトの名無しさん mailto:sage [04/09/15 22:12:54] はずかしすぎ。 アンテナでかすぎ。
409 名前:デフォルトの名無しさん mailto:sage [04/09/15 22:24:30] どうtypoったらそうなるのか分からん
410 名前:デフォルトの名無しさん mailto:sage [04/09/15 22:47:57] typoだけに突っ込んでいる人は、 そうやって話をはぐらかそうとしている 厨房なので無視するべし。
411 名前:374 mailto:sage [04/09/16 00:56:53] >>394 なんか、どちらかに誤解があるようだな。 >>364 の [依存]ケース2 で言っていることは、 たとえば「あるメソッド」foo について、 foo(T*); というふうに引数の型として生ポインタを使うということじゃないの? それに対して、 foo(T&); のほうが適切ではないかと言う突っ込みを>>374 で入れている。 これは引数の型の話で、確保したインスタンスを 保持するための型は関係ないと思うんだけど、 漏れが>>364 を誤読しているの?
412 名前:374 mailto:sage [04/09/16 00:58:09] レスアンカー間違えた。 >>411 は >>398 宛てね。
413 名前:361=別名ポリホ mailto:sage [04/09/16 08:34:22] >>414 何度も同じようなことを書いてすまんけど、 1.クラス設計時にヒープかスタックか決めている 2.ヒープに確保するオブジェクトは常に(スマートポインタを含めた) ポインタとしてつかいたい 3.参照をつかわないのは参照とポインタが混ざって表記の揺れに なるからという好みの問題 別に参照をつかっちゃまずいっていう決定的な理由はない。 設計ポリシーとしてメソッドの引数は一貫して参照をつかうの であればそれはそれでいいんじゃないでしょうか?っていうか俺が 文句いうことじゃないけど。 逆にちょっと質問。setterのようなあるインスタンスを引数の値とって それをインスタンス変数に保持するメソッドで、かつ削除の権限が そのsetterを持つインスタンスにある場合、これも参照で渡すの? そうだとするとどこかの段階で参照からポインタに変換しないと 削除できないような気がするんですが。それともこの場合は 特別にポインタで渡すんでしょうか?
414 名前:361=別名ポリホ mailto:sage [04/09/16 08:38:54] すまんレスの先が411だった。 質問の意図は指摘しているところで参照をつかうと、 setterうんぬんのケースと一貫性を保とうとすると 無理がある場所がでるんじゃないかってことです。
415 名前:374 mailto:sage [04/09/17 09:34:20] >>413 最初に突っ込みいれた箇所(>>364 の[依存]ケース2)では 「渡されたインスタンスはそのメソッドの中でしかつかわれない」状況となっている。 「インスタンス変数に保持するメソッド」なら状況が違うんじゃないの? これらの異なる二つの状況の間で一貫性なんてあるはずがない。 生ポインタ使う場所の例として挙げられた箇所に 参照のほうが適切だと突っ込みいれたのに、 スマートポインタ使う場所を挙げて反論されても困る。
416 名前:デフォルトの名無しさん mailto:sage [04/09/17 12:25:53] > 削除の権限が そのsetterを持つインスタンスにある場合 どういう状況だかよく分からんが、std::auto_ptrみたいなものを 作ろうとしてるなら、素直にコピーを作成したオブジェクトが責任を持って オブジェクトを破壊すべきだ。 参照渡しされたものを受け取った側で破壊するのは、分かりづらい。 とりあえずスマートポインタ勉強してから出直せ。
417 名前:デフォルトの名無しさん mailto:sage [04/09/17 12:56:51] 漏れはリアルタイム画像処理をよくやるんだけど、 画像のピクセルデータにアクセスするときはなんとなく生ポインタ使っちゃうな。 あったり無かったりするものを引数にしたいとき、T* 型の引数にして 0 渡すと 「無し」みたいなこともたまにやるし。C# や Java のライブラリでも null 渡せる メソッドは結構あるから、実装面ではポインタ型の使いどころはそこそこあるん じゃねーの?
418 名前:デフォルトの名無しさん mailto:sage [04/09/17 15:26:19] まあ、あれだ 参照渡しでもポインタ渡しでもコピー渡しでもなんでもいいけど、 参照剥しをするのは控えた方がいいな。 あとでdeleteするオブジェクトはポインタで保持しとけ。
419 名前:ポリホ [04/09/17 17:46:25] >参照渡しされたものを受け取った側で破壊するのは、分かりづらい。 からポインタつかえっていってんだろ。 >「渡されたインスタンスはそのメソッドの中でしかつかわれない」状況となっている。 >「インスタンス変数に保持するメソッド」なら状況が違うんじゃないの? >これらの異なる二つの状況の間で一貫性なんてあるはずがない。 状況が違うから一貫性がなくてもよいという判断なら別にいい。 自分はポインタにすると2つの状況で整合がとれるから好きなだけだ。 メソッドの引数はポインタうんぬんという話はヒープに確保した インスタンスに限定の話だ。しかもコーディングスタイルの問題 だから人のことはとやかくいうつもりはない。 ヒープに確保したインスタンスの参照剥がしが好きじゃないといったら 根拠を求められるし、好きじゃない理由をいったらなぜか参照剥がしは わかりずらいっていう謎のつっこみが入るし、わけがわかりません。 いったい自分にどうしてもらいたいんだろう。
420 名前:デフォルトの名無しさん mailto:sage [04/09/17 20:42:41] >>411 foo を書いていて引数にnull 値のようなものを許したいとき、 foo(T*) にするか、foo(T&) にして T::Null を提供するかっていうと、 漏れはメンドクサイから大抵前者だけど。
421 名前:デフォルトの名無しさん mailto:sage [04/09/17 21:28:32] >ポリホ もうちっと日本語勉強しろよ
422 名前:デフォルトの名無しさん mailto:sage [04/09/18 11:32:18] >>419 >いったい自分にどうしてもらいたいんだろう。 いじられ役に徹してくだちい。
423 名前:デフォルトの名無しさん mailto:sage [04/09/23 02:34:10] とりあえずC++ではヒープではなく「フリーストア」って呼ぶんじゃなかったっけ? まぁ、データメンバを「メンバ変数って呼んじゃダメなの?」くらいの勢いだけど。
424 名前:デフォルトの名無しさん mailto:sage [04/09/23 22:05:22] int* a,b; と int* a; int* b; って違うんだな・・・
425 名前:デフォルトの名無しさん mailto:sage [04/09/24 00:10:23] >>424 いや、それは違いすぎだから…。 両方ポインタにするなら int* a, *b; じゃないとね。 だけどこういう書き方になるから型の後にアスタを付けるスタイルは好きではない。 int *a, *b; のほうが美しいじゃん。好みの問題かもしれないけど。
426 名前:デフォルトの名無しさん mailto:sage [04/09/24 00:14:44] >>424 所詮C++はC言語のころの呪縛から逃れられてないのよ。 >>425 int* a; int* b; と2行に分けることを推奨。
427 名前:デフォルトの名無しさん mailto:sage [04/09/24 04:48:24] >>426 >所詮C++はC言語のころの呪縛から逃れられてないのよ。 だがそれが(・∀・)イイ!! というか、仕様変更するとコンパイルエラーが発生するレガシーコードが 混在してしまう可能性があるから仕方ないっしょ。 ・・・レガシーという単語を使いたかっただけだ。気にしないでくれ。orz
428 名前:デフォルトの名無しさん [04/09/24 08:39:01] int* をtypedefして違う名前を与える さらにはintを変えられるようにtemplate化
429 名前:デフォルトの名無しさん mailto:sage [04/09/24 09:23:41] C言語の型とは何か。 typedef int *iptr; int *は ptr->int iptrも ptr->int int *[]はarray->ptr->int int (*)();はptr->function as int int *();はfunction as ptr->int struct { int a,b;} *;はptr->struct{int a;int b;} 構造が同じなら互換性があると言う。 iptr a; int *b; a = b; // ok しかし struct { int x,y;} a; struct { int x,y;} b; b = a; // error '=' : 互換性のない型が含まれています。 これはいったい、どうしたことか。
430 名前:デフォルトの名無しさん mailto:sage [04/09/24 10:25:14] >>429 b=a; が b.x=a.x; b.y=a.y; と同義であるとはいえない。 直感的にはそうであるが。 同義であるなら同義であるとoperator=なりで コンパイラに教えなきゃわからん。
431 名前:デフォルトの名無しさん mailto:sage [04/09/24 10:43:24] >>429 struct A { int x,y;} a; struct B { int x,y;} b; 名前を省略しただけの扱いなんだろ。 別々の構造体で、たまたまメンバの並びが同じになっただけで代入ができたら困る。
432 名前:デフォルトの名無しさん mailto:sage [04/09/24 11:45:46] C++スレでC虫臭い話を続けるな
433 名前:デフォルトの名無しさん mailto:sage [04/09/24 17:58:58] >>424-425 こんな解決法もある。 typedef int *PINT; PINT a, b;
434 名前:デフォルトの名無しさん mailto:sage [04/09/24 18:03:42] それ終わってる。 とっくに。
435 名前:デフォルトの名無しさん mailto:sage [04/10/07 00:13:22] >>429 基本的に別の型に代入はできない。当たり前だけど。Java だって C# だってそうでしょ。 typedef は単なる別名で、新しい型を作る訳では無いって、仕様で決まってますから。
436 名前:デフォルトの名無しさん mailto:sage [04/10/26 17:24:17] メンバの並びが同じな別々の構造体を作る必要性はあるのか?
437 名前:デフォルトの名無しさん mailto:sage [04/10/26 18:09:29] あたりまえ
438 名前:デフォルトの名無しさん mailto:sage [04/10/26 19:18:18] >>436 「今はたまたま同じメンバだけど、将来的には拡張されるかも知れない」 ってことはありそう泣きガス
439 名前:デフォルトの名無しさん mailto:sage [04/10/26 19:56:30] >>438 その場合、直接代入できる必然性はないよね。
440 名前:デフォルトの名無しさん mailto:sage [04/10/27 11:48:39] >>439 ふむ。そりゃそうだ。
441 名前:デフォルトの名無しさん mailto:sage [04/10/29 01:42:08] ふと思ったんだけど、構造体やクラスの(データ)メンバを while文のようなループ文でくるくる回しながら順番に取れたら便利かも? 名前とか個数とかデータ型を意識せずにクルクル…。 そういうのってうまいこと出来ないかな?
442 名前:デフォルトの名無しさん mailto:sage [04/10/29 01:46:03] >>441 意味が判らない
443 名前:デフォルトの名無しさん mailto:sage [04/10/29 01:53:58] >>441 型の違うデータメンバのいったい何が取得したいのか? ってことだね。 たとえば各メンバの文字列表現が取得したいのなら そのような関数を用意すればすむ。
444 名前:デフォルトの名無しさん mailto:sage [04/10/30 03:34:49] うっ、わかりにくかったか…。orz 例えば擬似的なコードを書いてしまうと…。 struct TEST_STRUCT { int mInt; long mLong; char mChar[255 + 1]; }; void main() { vector<VARIANTのような型> dstArray; ^^^^^^^^^^^^^^^^^^^^^ TEST_STRUCT srcData; //適当に初期化済みの状態とする int i = 0; while( 1 ) { dstArray.push_back( srcData.○[ i ] ); i++; ^^^^^^ } } こんな感じで、データメンバを「名前ではない方法」でアクセスできれば、 結構便利な使い方ができそうだなぁと思ったのでつ。 「○[ i ]」の部分って必ずデータメンバの名前で指定しなければならないから…。 dstArray.push_back( srcData.mInt ); dstArray.push_back( srcData.mLong ); …のように一つ一つ全部指定しなきゃいけないし、型に「VARIANTのような型」が無い以上、 そういうやり方すら出来ないではないでつか…。 関数にしても結局はすべて名前で指定しなければならないし…。
445 名前:444 mailto:sage [04/10/30 03:37:25] >>444 しまった、ループの脱出条件を書いてないから無限ループケテ〜イだ…。orz まぁ、その辺は突っ込み入れないでちょ。
446 名前:r mailto:sage [04/10/30 08:20:36] >>444 offsetof 使った事無いけど。多分。
447 名前:r mailto:sage [04/10/30 08:25:36] >>444 つーか TEST_STRUCT srcData[] = ...; for( int i = 0; i < ...; i++ ) dstArray.push_back( srcData[i] ); じゃなくて?
448 名前:デフォルトの名無しさん mailto:sage [04/10/30 09:57:07] >>444 実体でなくポインタを維持すればいいなら、 std::vector<void *>dstArray; dstArray.push_back(reinterpret_cast<void *>(&srcData.mInt)); dstArray.push_back(reinterpret_cast<void *>(&srcData.mLong)); dstArray.push_back(reinterpret_cast<void *>(srcData.mChr)); 構造体のメンバの列挙は誰かがやらないといけないからねぇ。 static const unsigned sOffsets[] = { offsetof(TEST_STRUCT, mInt), offsetof(TEST_STRUCT, mLong), offsetof(TEST_STRUCT, mChr), }; for (unsigned i = 0; i < sizeof(sOffsets) / sizeof(*sOffsets); ++i) { dstArray.push_back(reinterpret_cast<void *>(reinterpret_cast<char *>(&srcData) + sOffsets[i])); } これでもなんとかなるかな。
449 名前:デフォルトの名無しさん mailto:sage [04/10/30 19:41:55] >>446 「offsetof」なんて初めて聞いた! …と思ったらひょっとしてC++の言語仕様にはないものですよね? ぐぐってみたらどうやら「.NET Framework」なのかな? >>448 ふむふむ、ポインタを駆使すれば結構なことが出来そうですね。 しかしなんていうか難しいというかちょっぴり複雑に…。(^^; 基本的に私もメンバを一つ一つ指定することになんの抵抗も無かったんですが、 最近職場でBorlandC++Builderに慣れた同僚が、 「構造体のメンバって一つ一つ名前でアクセスしないといけないんですかねぇ? 面倒くさいですねぇ」 …などと話していたので、興味を持った次第でつ。 これができるとどういうメリットがあるかという話ですが、 (C++Builderの話限定になってしまうのですが) DBの不特定なテーブルから、フィールド名を指定せずに 不特定の構造体のメンバにデータを突っ込めるため、 プログラムの汎用性が高まるということらしいです。
450 名前:デフォルトの名無しさん mailto:sage [04/10/30 22:20:56] offsetofを知らないだけならともかく(それも問題だが)、C#って・・・ 絞り込みも出来ない、googleのトップしか見ないで、2番目は無視する人かね
451 名前:448 mailto:sage [04/10/31 01:07:37] >>449 offsetofなんて、Cでもマクロで簡単に書ける代物なんだけど。 標準ヘッダを探してみることもできないのかな?
452 名前:デフォルトの名無しさん mailto:sage [04/10/31 02:37:42] うわ〜ん、そんなにいじめるなぁ〜。ヽ(`Д´)ノ 簡単にできるというのがいいのだよ。 めんどっちいのはイヤ。
453 名前:デフォルトの名無しさん mailto:sage [04/10/31 02:45:31] しかし、とりあえずoffsetofというマクロが 標準的に用意されてることを教えていただき、 ありがとうございますた。m(_ _ )m
454 名前:r mailto:sage [04/10/31 17:05:43] クラスのメンバを、別々に、同じベクタに入れる意味がわからん
455 名前:デフォルトの名無しさん [04/11/25 02:44:24] 最近書き込みがないね。
456 名前:デフォルトの名無しさん mailto:sage [04/11/25 04:01:13] 重複スレだからな。
457 名前:デフォルトの名無しさん mailto:sage [04/11/26 03:07:57] C言語とJavaとRuby使って,そこそこ書きました. 次はC++にチャレンジするかと,プログラミング言語C++を買ってきました. 難しいです.何書いてるのかわかりません. 俺の頭が悪いのが原因でしょうが,C++の難しさに挫けそうです
458 名前:デフォルトの名無しさん mailto:sage [04/11/26 08:15:19] ヽ(冫、)ノズコーッ 何処が難しいか言ってみて。 十分習得出来る知識あるように見えるけど…
459 名前:デフォルトの名無しさん mailto:sage [04/11/26 10:26:54] >>458 >十分習得出来る知識あるように見えるけど… んな事が >>457 読んで解るのか!ESPer でつか?
460 名前:デフォルトの名無しさん mailto:sage [04/11/26 10:52:23] >>459 Yep
461 名前:デフォルトの名無しさん mailto:sage [04/11/26 14:05:17] >>457 CからC++に移ったばかりの人 for (int i = 0; i < 10; i++) { v[i] = 1; } C++を使い慣れてきた人 for (std::vector<int>::iterator it = v.begin(); it != v.end(); it++) { *it = 1; } C++が「使える」と言えるレベルの人 std::fill(v.begin(), v.end(), 1); これでやっと中級に入門です。先は長いです。くじけそうです。
462 名前:デフォルトの名無しさん mailto:sage [04/11/26 14:07:40] C++のことがある程度わかってくると、++、--は前置にするもんです。
463 名前:デフォルトの名無しさん mailto:sage [04/11/26 16:44:04] 運置
464 名前:デフォルトの名無しさん [04/11/26 21:17:08] >>462 どうして?
465 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:20:14] >>464 前置の方がコピーのコストがかからないから
466 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:27:04] >>465 どうして?
467 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:32:47] >>466 More Effective C++の項目6を嫁
468 名前:デフォルトの名無しさん mailto:sage [04/11/26 21:36:34] >>467 読んでみた。ありがとう。 インライン展開されるような場合は別に気にしなくていいね。
469 名前:デフォルトの名無しさん mailto:sage [04/11/26 22:23:28] >>461 それ見てC++の方がタイプ量多い割にたいしたこと出来ない。 Cの方が1000万倍マシと悟った。
470 名前:デフォルトの名無しさん mailto:sage [04/11/26 22:24:18] >>469 それはちょっと勘違いだ。 C++ は C より便利だよ。
471 名前:デフォルトの名無しさん mailto:sage [04/11/26 22:24:53] >>467 んじゃ、これから Effective ++C と書くことにしちくりマンボ
472 名前:デフォルトの名無しさん mailto:sage [04/11/26 22:28:36] >>471 山田君、座布団一枚持ってっちゃって
473 名前:デフォルトの名無しさん mailto:sage [04/11/26 22:32:14] >>468 テンプレートでの汎用プログラミングのために常に 前置にしておくと後々組み込み型をクラスにしたくなった とき修正量が減る。
474 名前:デフォルトの名無しさん mailto:sage [04/11/26 23:07:05] >>473 組み込み型かクラスかは別に関係ないような?
475 名前:デフォルトの名無しさん mailto:sage [04/11/26 23:35:39] >>474 クラスだとテンポラリオブジェクトが生成されるよ。 インライン展開されてもね。
476 名前:457 mailto:sage [04/11/27 02:51:11] 思ったよりレスが…ありがとうございます. >>458 最初は俺も楽勝だろーとか思っていたのですが,何故か頭が受け付けません. >>461 今の俺の書き方だと,モロ最初の書き方ですね…
477 名前:デフォルトの名無しさん mailto:sage [04/11/27 03:07:44] >>461 C++を究めた人はアセンブリに戻る。
478 名前:デフォルトの名無しさん mailto:sage [04/11/27 03:10:04] >>477 そういう内容のメガデモ作品があったな
479 名前:デフォルトの名無しさん mailto:sage [04/11/27 06:47:22] >>461 の二番目みたいに、全く抽象化されてもいないのに 無理やりイテレータ使う意義って、全くないように思えるんだが
480 名前:デフォルトの名無しさん mailto:sage [04/11/27 09:02:51] インポラリ
481 名前:デフォルトの名無しさん mailto:sage [04/11/27 09:22:04] >>457 > C++の難しさに挫けそうです 「プログラミング言語C++」の難しさに挫けそうなだけだろ。
482 名前:デフォルトの名無しさん mailto:sage [04/11/27 09:34:42] >>479 そんなことはない。 少なくともコンテナを差し替えられる。
483 名前:デフォルトの名無しさん mailto:sage [04/11/27 23:14:25] そんなこといったら、最初の書き方ならば vectorを配列にさしかえれるという利点があるなw
484 名前:デフォルトの名無しさん mailto:sage [04/11/27 23:16:08] >>483 vectorを配列に差し替えても、あまり嬉しくはないだろう。
485 名前:デフォルトの名無しさん mailto:sage [04/11/27 23:37:44] 速くなるやん
486 名前:デフォルトの名無しさん mailto:sage [04/11/28 04:04:31] >>485 そういう用途なら、boost::arrayがあるから利点とはならない。
487 名前:デフォルトの名無しさん mailto:sage [04/11/28 04:36:03] boost::rangeでcontainerとbuilt-in arrayが汎用に扱えるようにもなったしね
488 名前:デフォルトの名無しさん mailto:sage [04/11/28 11:09:50] 後からコンテナを差し替えやすいってのが利点。
489 名前:デフォルトの名無しさん mailto:sage [04/11/28 17:27:41] コンテナの差し替えなんかするのか?ホントか? テンプレート引数で型を受け取るときに、 どのコンテナでもOKなのは、確かに意義があるといえるが 前述の例はそういうわけでは全くないし、 正直、三つある例のどの書き方でも、優劣はないと思うが
490 名前:デフォルトの名無しさん mailto:sage [04/11/28 20:57:16] 前述の例だけみればたしかにどれでもいいレベルの話だけど、 意識の持ち方のことを言ってるんじゃないの? できるだけSTLコンテナやSTLアルゴリズムを使おうという。
491 名前:デフォルトの名無しさん mailto:sage [04/11/28 21:39:47] しっかし、組み込み型(intとかdoubleとか)のコンテナならSTLのアルゴリズムは 教科書通りに使えるんだが、クラスになると途端に使い物にならなくなるのは どういうこと? STLの範囲で済ます場合、メンバ関数ならアダプタでなんとかなるが、メンバ変数は 叙述関数・関数オブジェクトを用意しなければならない。 正直、boost::bindやboost::lambdaが無かったらやってられないよ。 でもこれも一長一短で、boost::lambdaは動かないコンパイラもあるし(bcc32)、 boost::bindは遅いし。
492 名前:デフォルトの名無しさん mailto:sage [04/11/28 22:55:18] > boost::bindは遅いし。 なんで?
493 名前:デフォルトの名無しさん mailto:sage [04/11/28 23:17:06] >>492 なんでだろう? 俺が聞きたいよ。 アセンブリコード見たけどよく分からん。あまり最適化されてない様子。 lambdaは早いんだけどな。 単純なlambda式なら、イテレータをループで回すより早かったりする。
494 名前:デフォルトの名無しさん mailto:sage [04/11/28 23:47:31] >>493 テストコード出せる?
495 名前:デフォルトの名無しさん [04/11/28 23:49:47] boostの一部のライブラリを見てると、素直にC++にクロージャを足した 新しい言語を作って使えよと言いたくなる。
496 名前:デフォルトの名無しさん mailto:sage [04/11/28 23:55:10] boost使ってる時点で負け組み
497 名前:デフォルトの名無しさん mailto:sage [04/11/28 23:57:22] >>496 何を使うと勝ち組みになれるの? boost のめざそうとしているものを使わなくてもいいってこと?
498 名前:デフォルトの名無しさん mailto:sage [04/11/29 03:52:25] >>495 C++Builder言語
499 名前:デフォルトの名無しさん [04/11/29 08:41:38] C++が難しいのは、テンプレートのがポリモルフィズムより速いからだと思う。
500 名前:デフォルトの名無しさん [04/11/29 08:55:56] pc5.2ch.net/tech/kako/1058/10586/1058675178.html pc5.2ch.net/test/read.cgi/tech/1063323615/
501 名前:デフォルトの名無しさん [04/11/29 09:53:18] >>495 templateの良し悪しはともかくとして、 言語のコアとしてそういった概念のシンタックスを 持つのではなく、メタプログラミングによって後から 追加できるのっていいなと思うけど。
502 名前:デフォルトの名無しさん [04/11/29 11:15:07] このスレ見てるとげんなりしてくるなw
503 名前:デフォルトの名無しさん mailto:sage [04/11/29 11:19:09] >>501 同感、クロージャーなどを突っ込むよりtemplate機能をもっと整理して この種の機能はライブラリとして実装してもらいたい。 クロージャー以外にもデザパタ一式ガベコレ一式程度は自働ジェネレートできるくらいがいい。 言語のコアはあくまでシンプルで高速な物がいい。