1 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 20:16:30 ] プログラミング言語 D (D Programming Language) について語るスレッドです。 過去スレは >>2 ■本家 ttp://www.digitalmars.com/d/ ttp://www.kmonos.net/alang/d/ (和訳) ■コンパイラ ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家) ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド) ttp://gdcmac.sourceforge.net/ (GDCのmac用バイナリ) ■参考URL ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究) ttp://dsource.org/ (dsource) ttp://www.sun-inet.or.jp/~yaneurao/dlang/ ttp://wisdom.sakura.ne.jp/programming/d/
48 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 20:51:15 ] >>40 これってC++側にvoid deleteD(D*t)用意しないとリークする? それとも、GCされるの?
49 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:05:23 ] C++オブジェクトをDのinterfaceとして取得する発想は盲点だった・・ ちょっと感動中。Cristian Vlasceanuさんとやら天才じゃね? さて、ありがたく和訳を読ませて頂きまする。 # ふつーのテキストが<pre>に包まれて # 横に長ーく表示されちゃってるのは # Dikiの仕様なのかしらん。
50 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:09:23 ] 草取りを除いて翻訳終わりました。>41のアドレスに。 >>40 DからはC++のクラス全体が見えているわけではなく、 ある型のインスタンスポインタと、その型の仮想関数テーブルだけが見えているようです。 したがって、 ・フィールド(メンバ変数) ・staticメンバ ・コンストラクタ、デストラクタ、変換(cast?)オペレータ、演算子オーバーロード、割り当て関数(newとdelete) これらはすべてアクセスできません。 多重継承したC++クラスのインスタンスも怪しいです。 >>48 リークします。 >40のC++側コードに追加するなら、 int removeD(D* obj){ try{ delete obj; } catch(なにがしか) { 例外を受け取ったらエラーコードをreturnする } return 正常; } とするべきでしょう。 多用するなら、D側でラッパとなるクラスを用意して、 そのデストラクタからC++のデストラクタとなる関数を呼び出すようにするしかないかと。 二重deleteの防止などはかなり面倒ですんで、C++側でshared_ptrかGCを用意する対策が必要でしょう。
51 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:12:17 ] >>50 d。 そうすると、既存のC++ライブラリをDから使いたければ、 C++でラッパーを書かないといけないんだな。 ちょっと面倒だね。
52 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:20:34 ] ダサい部分や面倒な部分も、 Dならどんどん解決策が出てくるに違いないとか思える気分だw D 2.0始まったな!
53 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:21:57 ] お前らテンションたけぇなぁ 自分の足の匂いでも嗅いで落ち付けよ ああ臭ェ
54 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 22:47:43 ] 構造体の扱いについていまいち不明な点があったので、訳註に加えました。 構造体扱いならメンバと非仮想関数にアクセスできる?(仮想関数にはアクセスできないが) >>49 # 仕様ではないでしょうか。とりあえずコピペでテキストエディタで折り返すと見やすいかと。 >50に追加。 非仮想関数にもアクセスできません。
55 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:03:40 ] vtblしか見えないのか。ちょっと使い道限られるなあ。
56 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:29:21 ] COMには最適w
57 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 23:35:44 ] DCOMか
58 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:02:23 ] >>57 それは紛らわしすぎw
59 名前:44 [2007/10/07(日) 00:05:02 ] D1.022 にあるこれか Bugzilla 1474: regression: const struct with an initializer not recognized as a valid alias template param これはどういうこと?直ったのか?直ってないけど・・・。 仕様としてだめになったってこと??(regression:回帰、復帰、逆行、退化、退行) フォーラム読んでも結論がよくわからず・・・。誰かわかります?
60 名前:44 [2007/10/07(日) 00:10:33 ] こっちも関連あるかな。 Bugzilla 1456: Cannot use a constant with alias template parameters
61 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:27:53 ] regressionってのは「一回直ったバグが再発したよ」ってことだと思う
62 名前:44 [2007/10/07(日) 01:03:28 ] > 61 なるほど。じゃあいつか直るってことかな。 どうもありがとう。
63 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 10:39:16 ] >>59-62 「「一回直ったバグが再発したよ」っていうバグを直したよ」ていうのが > Bugzilla 1474: regression: const struct with an initializer not recognized as a valid alias template param これなので、直ってないのだったら報告した方がいいかも。 2.005だと直ってるぽいので1.x系の問題かな。
64 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 12:52:36 ] D言語研究、リンクがいくつか変なとこに書き換えられてる? FrontPageの差分を見るとそうっぽいんだけど、携帯からだとよくわからない…
65 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 13:43:15 ] >>64 直してみた
66 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 14:24:52 ] ブラウザの脆弱性を利用してキーロガーをトロイの木馬しようとしているのか 物騒な時代だな
67 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 18:46:37 ] >>65 おおお。ありがとう!
68 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 23:59:49 ] なんかバグ見つけた import std.stdio; void main(){ writefln(join("123", "456")); } string[] join(T ...)(T t){ string[] a; foreach(e; t){ a ~= e; } return a; } joinの返り値が壊れる D2.005
69 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 00:20:05 ] C++のクラスのメンバ変数だけど、無理やり構造体と同じ風にアクセス出来る気がする。 Dのクラスの場合、インスタンスのポインタから+8バイト位置から各メンバ変数並んでいるけど、 C++の場合、+0バイト位置から並んでいるみたい…。
70 名前:68 mailto:sage [2007/10/08(月) 00:30:51 ] 68はバグではなかったです。 お騒がせしました。
71 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 01:01:58 ] >>69 ABIの仕様次第なんじゃないのかそんなん
72 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 01:02:56 ] tango使ってみようと思ったらstringが未定義とか言われてしまった。 付属のdmdは1.0.21だから大丈夫なはずなんだけども。仕様?
73 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 01:38:52 ] stringはdmdじゃなくてtangoのobject.diの中身の問題だとおもうので、tangoの仕様なんじゃないかと。
74 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 10:50:05 ] static if(is(string)) alias char[] string;
75 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 10:56:11 ] >>71 マングリング規則や仮想関数テーブルの位置や順番すら処理系依存なんだから、 この際、特定のコンパイラ向けにとことん特化すべきじゃなかろうか。 dmdならdmc++の出力とだけリンクできればいいと思う。
76 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:15:47 ] いや、C++はpluginって書いてあるから、abiごとにplugin書かないといけないんだろ。 それより、C++から来た例外をどうキャッチするのかが気になる。
77 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:22:02 ] >76 仕様読んでから書け。
78 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:31:52 ] すまん、ちゃんとダメって書いてあったな>例外 pluginも、plugin"で"C++対応じゃなくて、plugin"のために"C++対応するんだな。
79 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 13:33:35 ] DMDScriptをD2.0対応にかきかけたが くじけそう・・・
80 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:22:48 ] Dにもユーザー定義リテラルください。
81 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:36:58 ] ありゃ。C++のマングリング規則ってはっきり決まってたっけ?って 思ってたら、やっぱdmc依存なん? 「C++ではマングリング規則がコンパイラ依存」なんて記述も見つかるし。 そうだとしたら「dmdはC++のマングリングを把握しています」なんて書いてあるけど、 微妙にJARO通報モノだったり? 訳注でも付けとこか。
82 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:37:12 ] stlのlistとかに相当するのって出来合いのあったっけ? boost::multi_indexが欲しいがこれは作るしかなさそう
83 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:45:14 ] >>82 コレクションクラスならtangoに入ってる。
84 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 23:51:47 ] >>81 Linux版のdmdでは以下のに対応してる。Windows版は知らね。 www.codesourcery.com/cxx-abi/
85 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:18:39 ] >>84 ありがとーぉ。dmcはWin32しか無いじゃないかーとか絶望するところだった。 ……でも正直書いてあることの意味がほとんど理解できませぬ。 C++ABIの標準を決めようって活動で、 g++とかはそれに従ったマングリングをすることもできる、って事? Win版に関しては、最後の 「時間がたてば、より多くのC++ ABIの側面が Dから直接アクセスできるようになるでしょう。」の一文に期待するしか?
86 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:22:33 ] >>83 ありがとうございます。 見てみましたがなんか微妙な使い勝手?
87 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:32:52 ] >>85 IA-64向けコンパイラでは標準、それ以外のアーキテクチャ向けでもg++とicpcがこのabiを元にした物を標準で使ってる。
88 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 01:35:09 ] ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E4%BF%AE%E9%A3%BE#.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.A9.E3.81.AB.E3.82.88.E3.82.8B.E5.90.8D.E5.89.8D.E4.BF.AE.E9.A3.BE.E3.81.AE.E7.9B.B8.E9.81.95 dmc++とvcはマングリング規則一緒っぽい。
89 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 04:47:57 ] DMDで64bit版あったらいいのにって思うのは俺だけ?
90 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 07:39:02 ] >>88 Wikipediaそんなのまでのってるのか・・・
91 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 12:37:34 ] オタクがおおい分野はとんでもない内容まで乗ってますよ。 どうせこの板の常連とかが書いた or 訳したんでしょう。
92 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 13:00:16 ] msvcとdmc++のマングリング規則が一緒でも オブジェクトファイルの形式が違うからリンクできないんだよね? C++って案外可搬性ないんだな
93 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 16:04:45 ] うぐぅ。Linux上でのC++との連携がうまくいかない・・。タコですんません。 >>84 で言うLinux版dmdて、 www.kmonos.net/alang/d/dcompiler.html#linux のヤツの事でOK? それともgdcとゆーやつを頑張ってコンパイルしなきゃダメ?
94 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 16:33:32 ] >>93 そのヤツでOKだけど www.digitalmars.com/d/changelog.html#new2_005 から落とさないとバージョン古いよ
95 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 17:50:24 ] インスタンスからstaticメソッドが呼べるのがちょっとううざったいというか、 演算子オーバーロードでstaticなのとそうでないのが区別できないのが困る
96 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:11:32 ] 関数でslice/range表現(x..y)を受け取りたい…… void func(real x..y); と関数を定義したいなあ、と。 タプルでもいいから。 末尾を含むかどうかはx...y表現を認めるかどうかは難しそうだけど。 機能の提案って本家のMLとかに流すんでしたっけ?
97 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:14:05 ] digitalmars.Dでいいと思う
98 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:15:24 ] そもそも range型があってもいいんじゃないかと思う
99 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:16:51 ] 実装されたときにx..yがx, yに展開されるようになると予想
100 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:19:00 ] 1..3 は Tuple!(1,2) じゃないといやだよう
101 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:11:28 ] 1..6はTuple![1,6)
102 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:34:40 ] >>101 対カッコの強調表示がむちゃくちゃになるのが難点
103 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:51:19 ] Tuple!("[1,6)");
104 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:28:19 ] それならTuple!("1..6")にしてやれよww
105 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:37:54 ] 一通りここでの議論を読んで、既出の議論がないか調べてみます。 ttp://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=55946 x..yがx, yに展開されるだけだとsyntax sugerとしてもいまいち弱い感じがしますね。 (x, y]を表現できるリテラルはかなり少ないので、そのへんの書き方で文法を汚さずに追加できれば面白そうなのですが。 以前x<Range<=yと書くとRange型のインスタンスが生成されるクラスをC++で書いたのですが、 opCmpだとそれは許されないんですよねえ。
106 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:55:41 ] >>104 は?
107 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:56:03 ] 触ったらかわいそう
108 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:30:36 ] 先にちょいと提案したいことがあったので、そっちを提案してみる class Foo { enum EnumType { A, B, C } } void func(Foo.EnumType arg); こういう定義のとき、funcに列挙された値を与えるのに func(Foo.EnumType.A) とやたら冗長なので、 func(A) と書いて通るように識別子探索を拡張して欲しいと提案してみる。 これっていまのところ解決策はないですよね?
109 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:36:35 ] >>108 今後のプランの一つに入ってるって、どこかで見た気がする。 カンファレンスのスライドだったかなあ。
110 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:48:10 ] >>109 それはいいねえ。 早めに対応してもらいたい感じだ カンファレンスのログはあったと思うので、探してみる
111 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:54:26 ] だからslice/rangeはRangeオブジェクトリテラルにしようと(ry >>93 死ぬほどありがとう。おかげで悩みまくった数時間が気持ちよく無意味になりますた。 そしてdmdのバージョン出力をよく見てなかった俺めアホが! しかし完全にUTF-8化されているだけあって、Ubuntuじゃ文字化けしねぇなぁ。 Vista買ったのがバカらしくなってきたわい。 >>108 あー。それJavaでもC#でも同じ事思った覚えが。是非是非。
112 名前:111 mailto:sage [2007/10/10(水) 00:02:00 ] て、何自己レスしとんねん。 res[111].replace(">>93 ", ">>94 ");
113 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:20:15 ] >>110 d.puremagic.com/conference2007/speakers.html うぉるたたんのスライドのp35
114 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:29:17 ] 34だた
115 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:42:15 ] enumも今になってみると中途半端というかinvariantとかぶってるよな。 定数関連はinvariantに任せて、enumの方はシンボルってことで識別子名を 簡単に表示できるようになってくれればいいのに。 enum使うとデバッグ作業がめんどくさくて。
116 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:56:51 ] 次の更新→enum廃止
117 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:13:07 ] >>115 ありがとう。 enum以外にも魅力的な拡張が多くて目移りしますね。 第一引数が配列である関数をプロパティ的に扱える機能の拡張はいいですね。 ついでにクラス内の(public)メンバを列挙して、自動で配列プロパティに突っ込むテンプレートがあるとうれしいかも…… ついでにデリゲートもオーバーロードしたかったり >115 struct + invariant配列のほうが便利だったりしますね。パラメタ多いと。
118 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:20:35 ] そういえば、pp27あたりのstructがinterfaceを継承できるという案があるが、 あれはC++のクラスを利用する布石ではないかという希ガス まあ、便利なものはテンプレートの互換性がないと何も使えない気も……
119 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 02:00:48 ] delegateのcovariant/contravariantが早く欲しい その次は(環境を持ち運べる)closureかな
120 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 02:41:24 ] うひょー、D Conference 2007の資料、結構目を引く点山盛りな感じ。 英語未熟でおぼろげにしか解らないけど。 とりあえずヲルタンのを見てみただけだけど、要点だけまとめた簡潔なスライドだし、 翻訳する費用対効果は高いんじゃ、と無責任に言ってみる。 あと疑問ー。 www.kmonos.net/alang/dee/diki/?C%2B%2B%E3%81%A8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%EF%BC%88%E4%BB%AE%E8%A8%B3%EF%BC%89 の「Dのガベージコレクタで確保したメモリへのポインタを渡すには...」のくだり。 GCによる解放対策にだけ触れてる感じだけど、 GCって生きてるオブジェクトでも、移動してポインタ書き換えとかするよね? ほんとに安全にD外にGCポインタ貸し出すなら、GCを停止しないといけないんじゃ?
121 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 09:28:04 ] ttp://d.puremagic.com/conference2007/speakers.html とりあえず、はっておこう
122 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 09:30:02 ] >>120 オブジェクト/クラス単位でガベコレのON/OFFって出来なかったっけ
123 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 11:27:14 ] D Conference 2007.jp開かれないかな
124 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 16:28:12 ] >>122 カスタムアロケータを書くしかなかったと思う。
125 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:34:36 ] import std.stdio; void main(){ auto b = new B(); b.f(); } class A{ void f(){ writefln("A"); } } class B: A{ final void f(){ super.f(); writefln("B"); } } リリースビルドして実行するとBがダブって表示されるのですが、 これは正しい動作なんでしょうか? バグなのでしょうか?
126 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:34:57 ] カスタムアロケータたのCCCCCCCCCCCCCCC
127 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:00:16 ] コンパイル時に整数乱数が欲しいんだが、どうすればいいんじゃろう。
128 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:11:40 ] >>127 つ __TIMESTAMP__
129 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 01:14:30 ] thx そういえばそんなのあったなあ。 だけど文字列なのか…ちょっと厄介だのう
130 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 06:26:34 ] テンプレート内で文字列に変換するとき、迷ったらbox(...).toStringすればいいことに気づいた 便利だなこれ >>120 「開放する」の元の単語ははcollectであってdeleteやfreeじゃないので、 「処理する」「片付ける」のほうがいいかもしれませんね。
131 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 06:48:08 ] >>129 例えばこんな感じ hashの中身は、なるべくばらけが大きくなるような暗号系のアルゴリズムに近いほうがいいかも。 この値をキーにして、立ち上がりの早い擬似乱数生成器にかける方法もある いずれにせよインチキなんで、求める乱数性に応じて適当にやってみてください int hash(in char[] x) { int sum; foreach(c; x) sum^=cast(int)c*3; return sum; } static if( hash(__TIMESTAMP__) == 1 ) { }
132 名前:120 mailto:sage [2007/10/11(木) 10:47:31 ] >>130 おおう、対応どもです。しかしせっかく真摯に対応していただいて申し訳ないのですが、 私の言いたいことは翻訳の仕方に関してでは無く、書いてある内容そのものなのデス。 多分原文でも言ってることは同じで、翻訳には問題なかったんじゃないでしょか。 というわけで、改めて>>120 の疑問を書き直してみたり。 「Dでnewした領域のポインタをC++に渡してやってもいいけど、 途中でGCが走ってその領域がcollectされちゃうと、 いきなりポインタが無効になってC++側が困るよね。 だから以下ほげほげな方法で、GCのcollect対象にならないよう気をつけてね」 ってヲルターは言ってるけど、ポインタが無効になる要因ってcollectだけじゃないよね? www.kmonos.net/alang/d/garbage.html によれば、 > 4. 残ったメモリ領域のデータをコピーして使用領域をまとめる処理 (コピーGCと呼ばれます) が実行される可能性があります。 > ガベージコレクタは、オブジェクトをメモリ上の任意の位置に再配置することがあり... つまりcollect対象でない「生きた」領域を指すポインタだって、GCが走れば再配置によって無効になる可能性がある。 本当は「生かす」だけじゃなく、そのメモリ位置に「固定」する方法が必要なんじゃないか? ……って、アレ? このへん「Cとのインターフェイス」に書いてあることと同じじゃないすか。今気付いた。 今まで問題になったことなかったっけ? 再配置なんて実際には滅多に起こらないとか?
133 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 11:12:23 ] >>132 ・今のPhobosとTangoのGC実装はコピーGCじゃないので、再配置なんて実際には決して起こらない ・もし実装がコピーGCに変わったら、指摘されてる通りの問題は起きる ・そんときは std.gc.fix(void*) みたいな固定するメソッドが追加されるんじゃないかなあ(予想
134 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:11:03 ] Tangoのほうは仕様変更とかないの?
135 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:27:46 ] SDLのD2.0用のポーティングってある?
136 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 12:33:55 ] >>134-135 わかんね
137 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:33:07 ] >>133 managed C++ に、pinっていうのがあったなぁ (ピン止めという意味)
138 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 15:01:05 ] >I think Herb was talking about ADL. D doesn't have ADL, but the next update will include "overload sets" which, although very different, accomplish the same thing. 大風呂敷ktkr。非常にwktk。
139 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 15:28:15 ] だれかよんでくだしい
140 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 16:18:29 ] 私は、Herb(人の名前?)はADLについて話していたと思っている。 DはADLを持ってはいないが、次のアップデートの際には「overload sets」が導入されるだろう。 これはADLとは非常に異なるものの、同じことを実現するものである。
141 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 16:20:54 ] 誤訳や補足があればおながいします
142 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 16:31:43 ] 元の話よんでないけど文脈からして Herb = Herb Sutter (C++のえらいひと) ADL = Argument Dependent Lookup namespace Hoge { class X{}; void foo(X* x){} } foo( new Hoge::X ); // Hoge::foo って書かなくても、引数のクラスと同じ名前空間で // 定義されてるfooを勝手にコンパイラが呼んでくれるC++の機能 // 複数の名前空間にまたがって関数オーバーロード出来る かと。 Walterたんは昔ADLやるとカオスになるからやらないって言ってたけどどうなるんだろう
143 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 17:45:45 ] ネームスペースあえてつぶすようなマネはやめてほしいなぁ。。。 パールのお化けがでるよ?
144 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 17:47:13 ] (new Hoge.X).foo(); に限ってADLを行うようにすればいいんじゃね?
145 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 18:00:09 ] それは、配列のプロパティ的な引っ張り方だねぇ。 うーん。わかる人にはわかるって感じだなぁ。 むー、どうなるんだろうねぇ。
146 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 23:03:02 ] >>143 何にもわかってないなぁ。。。
147 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:05:48 ] >>146 もっとサンプルコードくれくれ。
148 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 19:10:29 ] この問題はこういうのだと把握 //b.d void func(string){} //a.d import b; void func(int){} void main(){ func(10); //オーバーロードと考えてこれを呼べてもいいだろうに //func("hoge"); b.func("hoge"); // 現状フルネームが必要 } ADLあんまり知らないんだが importされたモジュールのシンボルと真の意味で重複しなければ 呼び出し可能にするだけだと思うんだけどややこしいことが必要なの?