D言語 Part26

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語 D (D Programming Language) について語るスレッドです。

■前スレ
http://hibari.2ch.net/test/read.cgi/tech/1281826764/

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
http://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
http://dgcc.sourceforge.net/ (GDC, gccフロントエンド)
http://www.dsource.org/projects/ldc (LDC, バックエンドにLLVM)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/candcpp2d2 (C/C++に疲れた人のD言語2.0)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)
ttp://dusers.dip.jp (D言語友の会)
ttp://www.wish.sakura.ne.jp/desuno/game/Drawing (PrincessDrawing! D言語で作られた横スクロールSTG)
2デフォルトの名無しさん:2010/12/28(火) 10:52:30
31:2010/12/28(火) 10:54:08
Eclipseスレ無くなってるっぽいけど消しても良かったかな…
他にもリンク切れあったらスマソ
4デフォルトの名無しさん:2010/12/28(火) 11:30:17
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
5977:2010/12/28(火) 12:27:17
ここはアイちゃんが来ていい場所ではありません。
6デフォルトの名無しさん:2010/12/28(火) 18:45:14
977 デフォルトの名無しさん [sage] 2010/12/28(火) 12:22:23 ID: Be:
    >>975
    まず、functionじゃなくて、delegateじゃないだろうか?

    次に、テンプレートのインスタンス化の時に、!()には変数の値は渡せないぜ?
    (コンパイル時に決まる、整数型・浮動小数点型・文字列型は除く)

    もし値渡しをやるなら、テンプレートの宣言は、
    void func(F...)(F f) もしくは void func(alias F...)()
    と、するべき。(後者は厳密には値渡しじゃないが)
    今回は後者にすれば解決?
7デフォルトの名無しさん:2010/12/28(火) 21:20:50
下記のCTestのようなクラスでmNumやmTextのみを抽出したいんだけど何か良い方法あります?
allMembersで取り出したタプルに対してisSomeFunctionで判定しようかと思って下記の様に書いたらコンパイルエラーになったのでどうしたものかと。

class CTest{
 int mNum;
 string mText;
 void Function(){}
}

void main(){
 foreach(mem;__traits(allMembers, CTest)){
  static if( !isSomeFunction!(__traits(getMember, CTest, mem)) ){
   // Todo!
  }
 }
}
8デフォルトの名無しさん:2010/12/28(火) 22:45:34
>>7
何でそんなまわりくどい方法でやろうとしてるの?
98:2010/12/29(水) 00:33:32
>>7
もう一度見返してみたけど・・・
とりあえず、static ifを動的に使おうとしてコンパイルエラーになってるのはわかった。

で、やっぱり疑問になるのは、なぜわざわざそんな方法でメンバ関数を特定しようとしてるのか、という所だ。
インターフェイスやデリゲートを使って、使用できる関数を知らせるのじゃダメなのだろうか?

・・・ん?そうじゃなくて、クラスのフィールドを抽出したいの?
だったらもっと簡単な方法があるな。 つ[ .tupleofプロパティ ]
108:2010/12/29(水) 00:40:29
てか、よく見たら__traitsも動的に使えないのな。
11デフォルトの名無しさん:2010/12/29(水) 03:53:02
D言語逆引き作ろうぜ
・コンテナからの追加削除検索
・テンプレート
・実行時型情報
・etc
12デフォルトの名無しさん:2010/12/29(水) 05:44:58
>>前スレ970
ttp://d.puremagic.com/issues/show_bug.cgi?id=5381
switchのバグはtrunkで修正された
13デフォルトの名無しさん:2010/12/29(水) 06:13:26
もう時代は
Windows = C#
Mac = Objective-C
サーバーサイド = Java or PHP
になってて
D言語なんてもう日の目を見ることは
絶対にないから。
14デフォルトの名無しさん:2010/12/29(水) 06:54:45
>>13 は何が言いたいのだろう
15デフォルトの名無しさん:2010/12/29(水) 07:33:28
日の目を見るより破壊的変更をくれ!
16デフォルトの名無しさん:2010/12/29(水) 09:27:23
Dは遅すぎた
17デフォルトの名無しさん:2010/12/29(水) 10:25:24
開発者サイドならともかく、このスレに居る人間って別にDが著名になればいいとか思ってないよねえ。
18デフォルトの名無しさん:2010/12/29(水) 11:05:16
D言語でプログラムを組むことによって
破壊的変更毎にプログラム全体を見直す必要が生ずる。
これにより同じアルゴリズムを何度も眺めることになるのだが、
この行為はプログラマにとってアルゴリズムの反復学習として機能する。
上記より私はD言語の履修を学校教育に強く勧めたい。
19デフォルトの名無しさん:2010/12/29(水) 13:17:57
>>18
マジレスすると先生が大変すぎる。
20デフォルトの名無しさん:2010/12/29(水) 14:24:05
21デフォルトの名無しさん:2010/12/29(水) 15:20:13
>>20
うおぉまじか 立ち上げ乙ー
22デフォルトの名無しさん:2010/12/29(水) 16:41:28
>>7

フィールドの名前なしでいいなら>>8の通り.tupleofを使う、名前ありなら下のコードで可能
class CTest{
 int mNum;
 string mText;
 void Function(){}
}
void main(){
 foreach(mem;__traits(allMembers, CTest)){
  static if (is(typeof(mixin("&CTest." ~ mem))))
   pragma(msg, "f ", mem);
  else
   pragma(msg, "@ ", mem, ", isType = ", mixin("is(CTest." ~ mem ~ ")"));
 }
}
interface Object.Monitorが出てきたのでisType==falseではじく必要がある。

あと、__traitsで取ってきたタプルをforeachで回すと、ループ内のコードはコンパイル時に評価される。
ので、>>7のコードは考えとしては正しい。
23デフォルトの名無しさん:2010/12/29(水) 16:44:42
すまん、書き込むの久しぶりだったのでsage忘れた。
24デフォルトの名無しさん:2010/12/29(水) 23:51:13
毎年恒例の元旦update。楽しみにしてるぜウォルたん
25デフォルトの名無しさん:2010/12/30(木) 00:18:03
3か 3なのか 3が来るのか
26デフォルトの名無しさん:2010/12/30(木) 00:50:03
27デフォルトの名無しさん:2010/12/30(木) 01:07:53
いやそれは喜ぶべきことなのでは
28デフォルトの名無しさん:2010/12/30(木) 08:47:03
外道てw
29デフォルトの名無しさん:2010/12/30(木) 08:53:53
慈善活動のひとか
30デフォルトの名無しさん:2010/12/30(木) 13:18:09
ジェネレータのネーム貼りロジックが甘いようだな
誰か改善してやれよ
31デフォルトの名無しさん:2010/12/30(木) 14:57:58
構造体の継承とインタフェース実装ができればいいのに
32デフォルトの名無しさん:2010/12/30(木) 18:44:29
いや、それは素直にクラス使えよwww
33デフォルトの名無しさん:2010/12/30(木) 19:45:14
構造体をアダプトしてクラス化するテンプレートがあればいい
値型のまま扱いたいのならconceptくさいなにかになるんだろうけど。
34デフォルトの名無しさん:2010/12/30(木) 20:19:58
だからクラス使えってwww
35デフォルトの名無しさん:2010/12/31(金) 22:11:40
2.051落としたらwindows\binに.exeなるファイルが入ってる
なんだこれ
36デフォルトの名無しさん:2010/12/31(金) 22:14:08
dmd2.051.zip                       .exe
37デフォルトの名無しさん:2010/12/31(金) 22:21:13
import std.string;

void main() {
const(string) a = "a";
"a".startsWith(a); // compile error
splitlines(a); // compile error
}

たぶん他の関数もそうなんだろうけど
ちょっと前までは通ってたはずなんだよなぁ…
38デフォルトの名無しさん:2010/12/31(金) 22:47:57
C:\> type w.d
/// ---
/// string foo = ")";
/// ---
void main() {}

C:\> dmd -D -w w.d
w.d(4): Warning: Ddoc: Stray ')'. This may cause incorrect Ddoc output. Use $(RP
AREN) instead for unpaired right parentheses.


おいィ?
39デフォルトの名無しさん:2011/01/01(土) 01:07:20
だーいぶ変更加わってるみたいだね
phobosから.dが消えて.diだけになったのは今回?
40デフォルトの名無しさん:2011/01/01(土) 01:29:44
>>38
) の代わりに $(RPAREN) 使えだとさ
丸カッコ ( ) はDdoc用コメント中では特殊文字扱いだぜ
41デフォルトの名無しさん:2011/01/01(土) 14:08:16
>>40
ああ、そうだったのか
どうせdmdだしと思ってまともにメッセージ読んでなかった
ごめんよ
427:2011/01/01(土) 15:43:11
>>22
おおー、ありがとうございます。
取得したtupleをなんでforeachで回せるのかは疑問だったんだけど、
static foreach的な構文を使わなくてもコンパイル時に実行される
んですね。
43デフォルトの名無しさん:2011/01/01(土) 17:24:45
importとかコメント置く位置によって動作が変わることがあるんだけど。。。
外部ライブラリのクラスのデストラクタが自動で呼び出されないとか。
マニュアルにはimportする順序は動作に関係無いみたいなんだけどなぁ。
44デフォルトの名無しさん:2011/01/01(土) 19:26:06
>>43
ソースを出せ
話はそれからだ
45デフォルトの名無しさん:2011/01/01(土) 23:14:01
そういう意味不明な動作はポインタの操作を間違えて
変な所にアクセスしてるせいかもしれない
最近の言語はそういう事とは無縁だけどDだと発生するから困る
46デフォルトの名無しさん:2011/01/02(日) 22:14:28
D Programming Advent Calendar 2010というのがあったような気がしたがそんなものはなかった
47デフォルトの名無しさん:2011/01/02(日) 23:55:38
今日からAdvent Calendar 2011を始めたら年末までには25人集まるんじゃないだろうか
48デフォルトの名無しさん:2011/01/03(月) 00:18:21
Dプログラマって25人もいるの?
49デフォルトの名無しさん:2011/01/03(月) 00:23:01
技術を発信できるレベルの人が25人も居るかどうか
50デフォルトの名無しさん:2011/01/03(月) 07:08:08
その25ってのは、なんらか意味のある数字なのか?
51デフォルトの名無しさん:2011/01/03(月) 14:27:19
最近流行りのアイドルグループの過半数を超えている
52デフォルトの名無しさん:2011/01/03(月) 15:29:59
なんだっけそれ
A.K.D 48だっけ
53デフォルトの名無しさん:2011/01/05(水) 00:46:42
TDPLの和訳はいつ出版されるのん?
54デフォルトの名無しさん:2011/01/05(水) 02:20:07
残念ながら…

売れないもんなあ
55デフォルトの名無しさん:2011/01/05(水) 02:31:20
ですよねー(´・ω・`)
D友のTDPL第13章和訳みてすごい面白かったから出ないかなぁと思った
Dに留まらず、他の言語にも適用可能な考え方とかも書いてあって結構な良書だと思うんだけどなー
56前スレ977:2011/01/05(水) 11:10:03
>>6
年越しちゃいましたが以下で問題なく動きました。
http://ideone.com/lpyz7
また、さらっとluadの情報を提供いただいた方も助かりました。
ありがとうございました!
57デフォルトの名無しさん:2011/01/06(木) 03:42:54
なんかいきなりほったらかしのライブラリが整理っていうか処分され始めたな
58デフォルトの名無しさん:2011/01/06(木) 16:17:52
traitsを使ってクラスのディープコピー用のcloneメソッドを
作ろうと思ってるのですが、うまくいきません。

http://ideone.com/TCR8r

上記のコードでcloneが実装されているフィールドはclone呼び出し、
それ以外は=で代入という処理をしてます。
これだと組み込み型や配列でないユーザー定義型はディープコピー
できるのですがユーザー定義型の配列のディープコピーができ
ないのですが何か良い方法ありますでしょうか。
59デフォルトの名無しさん:2011/01/06(木) 18:10:48
std.traits.isArrayでtrueだったら新しく配列作って各要素をディープコピー

俺も同じ事やろうとした覚えがあるけどデフォルトコンストラクタの無いクラスで詰んだな
60デフォルトの名無しさん:2011/01/07(金) 18:33:20
おしい・・・
http://ideone.com/rIRgl
61デフォルトの名無しさん:2011/01/07(金) 22:17:12
tangoの存在はさておき出すならとっとと1.0出してくれないかなぁ
62デフォルトの名無しさん:2011/01/07(金) 23:28:10
過去ログのdatを全廃棄するかも、なんて話があるので、
スレの過去ログが必要って人は今のうちに保存しておいたほうがいいかも
63デフォルトの名無しさん:2011/01/08(土) 12:02:21
なんか過去スレ表示されないなぁ
64デフォルトの名無しさん:2011/01/09(日) 03:43:32
987 デフォルトの名無しさん [sage] 2011/01/09(日) 00:48:32 ID: Be:
    >>977
    > http://hibari.2ch.net/test/read.cgi/tech/1290367109/588
    > これ見て思ったけどMartin先生が突然死んじゃったらScalaってどうなるん?

これ見て思ったけどうぉるたんが突然死んじゃったらDってどうなるん?
65デフォルトの名無しさん:2011/01/09(日) 04:07:02
Reiserさんが(社会的に)突然死しちゃったらReiserFSも死んじゃったね。
66デフォルトの名無しさん:2011/01/09(日) 11:11:49
突然Dが完成する
67デフォルトの名無しさん:2011/01/09(日) 11:21:30
打ち切り御免
68デフォルトの名無しさん:2011/01/09(日) 11:45:16
andreiがコンパイラ担当になって大規模に手を入れ始める
69デフォルトの名無しさん:2011/01/09(日) 12:17:56
andreiタソのリミッターが解除されてDがさらに進化するだけだな
70デフォルトの名無しさん:2011/01/09(日) 14:57:56
仕様から消える予定なのってどっち?

1.
scope class A{} ←

2.
class B{}
scope B b; ←
71デフォルトの名無しさん:2011/01/09(日) 17:41:00
2
でも2が消えたら1も消えるんじゃ?
72デフォルトの名無しさん:2011/01/09(日) 19:17:57
3.
Mutex m = new Mutex;
lock(m);
scope(exit) unlock(m);
73デフォルトの名無しさん:2011/01/09(日) 20:05:13
>>72これは消えないって誰か前スレで言ってた気がするよ
74デフォルトの名無しさん:2011/01/09(日) 22:33:09
スコープガード文が無くなったらDを使う理由の3分の1が消えちゃう
75デフォルトの名無しさん:2011/01/13(木) 11:55:09
allMembersで取得した関数がprivateか否かを判断する方法はありますか?
staticとか何とかは見つかるんですが…
76デフォルトの名無しさん:2011/01/13(木) 22:42:28
探しても無いなら無いんじゃねーの。
77デフォルトの名無しさん:2011/01/14(金) 02:17:39
Dって探しても無い機能は結構あるけどな
78デフォルトの名無しさん:2011/01/14(金) 02:43:34
なんのために?
79デフォルトの名無しさん:2011/01/14(金) 03:19:42
仕様変更に対応するために
仕様が確定するまで手を付けないのは
よくあること
8075:2011/01/14(金) 12:36:41
無いかぁ…とりあえずfinalつけて判別しました。
81デフォルトの名無しさん:2011/01/14(金) 12:50:03
ごめん78は75に
82デフォルトの名無しさん:2011/01/14(金) 18:39:29
別モジュールからそのメンバにアクセスするコードを書いて
isで失敗したらprivate…

うん、自分で書いてて無茶だと思った
83デフォルトの名無しさん:2011/01/14(金) 20:35:55
インターフェイス使えばいいのに。
8475:2011/01/15(土) 03:33:24
>>81
今作っているのがLuaを使うプログラムでluadを使用しています。
この子がluaへクラスとメンバ関数を渡す処理を自動化してくれるんですが、
その際allMembersで関数全部を渡してくれると。
d側で使用する関数は渡さないようにしたいわけで、
フツーに考えてprivateだよなぁって流れです。
85デフォルトの名無しさん:2011/01/15(土) 04:42:32
LuaDすごいなこれ。新次元すぎてわろた
86デフォルトの名無しさん:2011/01/15(土) 11:36:16
インターフェイス使えばいいのに。
http://ideone.com/k0ScV
87デフォルトの名無しさん:2011/01/15(土) 12:41:06
なるほどインターフェイス使えばいいのに。
88デフォルトの名無しさん:2011/01/16(日) 00:27:29
dmdがまともなエラーメッセージ出すはずがないと思って読み飛ばしてたら
実は内容も行も正しくて時間無駄にした…
89デフォルトの名無しさん:2011/01/16(日) 02:08:20
>行も正しくて
えっ?!mjd?
90デフォルトの名無しさん:2011/01/16(日) 11:11:32
一体いつの時代の話なんだ。
91デフォルトの名無しさん:2011/01/16(日) 16:52:50
dinstaller.exeでdmdとdmd2を両方を一気にインストール出来たのですが、
dmd2を使うにはどうしたらいいのでしょうか?
92デフォルトの名無しさん:2011/01/16(日) 16:56:25
フルパスでdmdを呼ぶかパス通すといい
93デフォルトの名無しさん:2011/01/16(日) 17:00:36
>>92
コマンドで切り替えられたりしないんでしょうか?
94デフォルトの名無しさん:2011/01/16(日) 17:27:17
普段D1なのでD2をdmd2にリネームして使ってる

DWTさえD2で使えればD1捨てで何の問題も無いのに…
95デフォルトの名無しさん:2011/01/16(日) 17:33:30
D2はD1との連携を考えるべき
96デフォルトの名無しさん:2011/01/16(日) 18:13:40
よく知られている方法はないんでしょうかねぇ?
とりあえず環境変数を切り替えられるwshを作って見ました。
コマンドラインでは出来ないけど、、、。
これをクリックすればバージョン変えられます。xpで動作してます。
envd.wsf
<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="environment">
<?job error="true" debug="true" ?>
<script language="JScript">
<![CDATA[
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
var path = WshSysEnv("PATH");
var m2pos = path.match(/.*\\dmd2\\/)[0].length;
var m1pos = path.match(/.*\\dmd\\/)[0].length;
path= path
.replace(/\\dmd2\\/,"\\dmdtmp\\")
.replace(/\\dmd\\/,"\\dmd2\\")
.replace(/\\dmdtmp\\/,"\\dmd\\");
WshSysEnv("PATH")=path;
if(m2pos < m1pos)
WScript.Echo("change version 2 to 1");
else
WScript.Echo("change version 1 to 2");
]]>
</script>
</job>
</package>
97デフォルトの名無しさん:2011/01/16(日) 18:41:11
んな面倒な今年なくても普通にパス通してsubstで切り替えれば良い
98デフォルトの名無しさん:2011/01/16(日) 18:43:31
俺はdmd1.0はdmd1にaliasして使ってる
dmd2.0を使いたいときはdmd source.d
dmd1.0を使いたいときはdmd1 source.d
99デフォルトの名無しさん:2011/01/16(日) 19:14:08
要は ruby の rvm があるといいなと
100デフォルトの名無しさん:2011/01/16(日) 21:08:26
Dのライブラリって生きてるんだか死んでるんだかよくわからないのが多すぎる
101デフォルトの名無しさん:2011/01/16(日) 23:43:24
半生状態なんじゃ?
102デフォルトの名無しさん:2011/01/17(月) 11:47:30
http://ideone.com/fpS9U

こんな感じで自作のソート関数を使ってSwapStrategy.stableでsortすると落ちてしまうのですが、コード的に何かおかしいとこありますか?
10375:2011/01/17(月) 14:55:27
>>86
一度目は理解できずにすみませんでした。
luadを若干変更することで対応できました。
ありがとうございます。
104デフォルトの名無しさん:2011/01/17(月) 18:40:43
105デフォルトの名無しさん:2011/01/17(月) 20:48:23
>>104
なんと……
106デフォルトの名無しさん:2011/01/17(月) 21:31:45
std.algorithmは好調みたいだな。よかった
107デフォルトの名無しさん:2011/01/19(水) 01:49:52
std.stringが解体されていく
108名無しさん@お腹いっぱい。:2011/01/20(木) 01:29:18
D言語のライバルはGo言語なの?
109デフォルトの名無しさん:2011/01/20(木) 01:57:13
そんなの言われてたこともあったなあ
110デフォルトの名無しさん:2011/01/20(木) 02:55:22
Dのスレってもうここだけになったの?
111デフォルトの名無しさん:2011/01/20(木) 23:44:36
>>108>>110
自分で調べなさい
112デフォルトの名無しさん:2011/01/20(木) 23:47:24
DとGoとではどっちがぐぐりやすいかって話か
113デフォルトの名無しさん:2011/01/22(土) 08:30:54
GoはワクワクしねえDはワクワクするそれだけだ
114デフォルトの名無しさん:2011/01/22(土) 11:26:13
Goは実行速度が遅いからな
それだけで不合格
115デフォルトの名無しさん:2011/01/22(土) 11:39:56
合体してDoとかにならないの
116デフォルトの名無しさん:2011/01/22(土) 11:47:52
それってDoよ
117デフォルトの名無しさん:2011/01/22(土) 12:32:37
GoD言語だろ
118デフォルトの名無しさん:2011/01/22(土) 12:33:30
逆にくっつけてドゴォォ言語とかに
119デフォルトの名無しさん:2011/01/22(土) 14:50:50
アンサイクロペディアに
闇プログラマはDを使うと書かれていましたが
これは本当ですか?
120デフォルトの名無しさん:2011/01/22(土) 15:48:24
闇プログラマ?何じゃそりゃw
121デフォルトの名無しさん:2011/01/22(土) 16:48:17
__TIMESTAMP__の代わりに日時のシリアル値をくれるトークンはないものか
好きなようにフォーマットしたいんよ

いや文字列を解析してシリアル値にしてから改めてフォーマットすればいいのか?
CTFEでやれそうかな
122デフォルトの名無しさん:2011/01/22(土) 18:19:55
functionとdelegateって使い分ける必要あります?
functionはポインタひとつ分節約できるとかそういうレベル?
123デフォルトの名無しさん:2011/01/22(土) 18:41:37
Cなんかとの互換性のためだから普通はdelegate使う
統合されるって話もあった気がする
124デフォルトの名無しさん:2011/01/22(土) 19:09:32
functionとdelegateの互換性制限は緩和されるとか10年くらい前に聞いた気がするな
125デフォルトの名無しさん:2011/01/22(土) 19:13:09
linux64bit版はいつまで工事中なんだ
126デフォルトの名無しさん:2011/01/23(日) 22:07:12
ttp://journal.mycom.co.jp/articles/2010/11/16/laughlin/index.html

いまさらだが、Fedora14にD言語が入ってるらしい。
Phobosは未サポートらしいけど…。
127デフォルトの名無しさん:2011/01/23(日) 22:11:35
またFedoraのバグが大量に増えるのか
128デフォルトの名無しさん:2011/01/23(日) 22:36:02
yum install ldc
129デフォルトの名無しさん:2011/01/24(月) 12:57:36
D言語つったらD1+Tangoに決まってるだろヴォケ
破壊的変更なんぞシラネー

と息まくにわかが増えるのか
130デフォルトの名無しさん:2011/01/24(月) 21:56:29
DFLのD&Dバグの何とかならんかなー
Windowsに特化してるのに GCとめて回避とか納得いかんざき

それとドロップしたファイルがなぜか
たまにデスクトップに移動してることがあるバグもなおs(ry
131デフォルトの名無しさん:2011/01/24(月) 23:02:50
ええい誰かDFLのコミット権を手に入れられんのか
132デフォルトの名無しさん:2011/01/25(火) 00:58:50
DFLってLGPLだから>>131がリポジトリこぴってクローン作ればいいのだ…
133デフォルトの名無しさん:2011/01/25(火) 01:43:11
zlibライセンスでもいいんじゃなかったっけ
134デフォルトの名無しさん:2011/01/25(火) 02:49:08
+オリジナルライセンスのトリプルライセンスだね
135デフォルトの名無しさん:2011/01/25(火) 18:42:57
>>130
d2だとGCとめても・・・
修正パッチどこかに置いておくだけでもいいんじゃないですか?
少なくとも自分は大いに助かる
136デフォルトの名無しさん:2011/01/25(火) 19:51:07
>>132
困っているので手は入れたし
されど全体を見渡すほどの余力もなし
って感じ
137デフォルトの名無しさん:2011/01/25(火) 20:14:49
オプソなんてそんなもんなんじゃないの
気づいた人が報告して、直せる人が直すっていう
138デフォルトの名無しさん:2011/01/25(火) 21:37:26
DFL exampleすらまともに動作しないんですがどうしましょう
139デフォルトの名無しさん:2011/01/26(水) 20:51:11
一部はちょっと手直ししたら動くんだぞ
Dのライブラリとしては上出来じゃないか
140デフォルトの名無しさん:2011/01/26(水) 21:57:41
ドラッグドロップだけはどうにかしてほしい
141デフォルトの名無しさん:2011/01/27(木) 18:45:24
import std.stdio;
void main() {
  auto hoge(T)(T a, T b) { return a~"."~b; }
  auto f = mixin(hoge("12", "34"));
  writeln(typeid(f), ":", f);
}
文字列mixinって値的に使えるんだな。初めて知った。
というかその発想がなかったわー
142デフォルトの名無しさん:2011/01/29(土) 02:26:36
>>141
へーしらなんだ
143デフォルトの名無しさん:2011/01/29(土) 17:30:30
>>142
じゃあ次のアップデートでそれなくします
144デフォルトの名無しさん:2011/01/29(土) 21:06:08
その代わりにどんな断片的な文字列でもmixinできるようにします
145デフォルトの名無しさん:2011/01/30(日) 10:44:25
使わないと思うけどimport式ってのもあったり。
146デフォルトの名無しさん:2011/01/30(日) 14:45:50
画像リソースを取り込んだりするのに使える
147デフォルトの名無しさん:2011/01/30(日) 15:32:32
頭いいな
148デフォルトの名無しさん:2011/01/30(日) 16:17:09
mixin(import("stdio.h"));

void main() {
 printf("hello, world!\n");
}
149デフォルトの名無しさん:2011/01/30(日) 17:09:58
なんてことを・・・
150デフォルトの名無しさん:2011/01/30(日) 19:02:58
コンパイルタイムhtod
151デフォルトの名無しさん:2011/01/30(日) 20:37:26
前スレかなんかで話上がったけどみんなどうぞどうぞ状態で誰もやりたがらなかったやつか・・
152デフォルトの名無しさん:2011/01/30(日) 21:37:24
コンパイル遅くなるのは勘弁なんで、ふつーのhtod欲しいです。
153デフォルトの名無しさん:2011/01/30(日) 21:50:52
>>153
.dも吐くようにして.hと同名の.dがあれば.dをimportするようにすればいいんじゃね
154デフォルトの名無しさん:2011/01/30(日) 22:33:04
>>154
Dの外部ライブラリと比べればCのライブラリを使う方が圧倒的に多いんで
実現できるならぜひ欲しいな
155デフォルトの名無しさん:2011/01/30(日) 22:55:05
>>154
勇者様でしたか
期待しております
156デフォルトの名無しさん:2011/01/30(日) 23:51:40
自己レス流行ってるのか?
157デフォルトの名無しさん:2011/01/31(月) 16:04:47
DMD2.051なんですが、 -inlineの有無でコンパイルが通ったり通らなかったりします。
どのような原因が考えられるでしょうか?

こんな感じのコードなんですが・・・

class Stage {
 Unit[UNIT_ID] unit;
 Unit[ENEMY_ID] enemy;
}
class MyStage : Stage {
 void update() {
  foreach(u; units) {
  }
  foreach(e; enemy) { // ←enemyを使用するとエラー。コメントアウトでコンパイルが通る
  }
 }
}
158157:2011/01/31(月) 16:14:03
すみません、正しくはリンクエラーで undefined reference to となります。
エラー時に指定されている行番号がforeachの行で、
enemyを使用している箇所をコメントアウトするとコンパイルが通ると。。。

元々リリース用ビルドで作成していて、
気がついたらデバッグ(-inline無し)でリンクエラーになるようになっていました。
159デフォルトの名無しさん:2011/01/31(月) 18:36:56
stage.dをコンパイル&リンクしていないんじゃないかな。
mystage.dだけdmdに渡してる場合そういうことになることもあるかと思うが。
160デフォルトの名無しさん:2011/01/31(月) 21:38:55
dmdで-inlineとか-Oとか使うのは勇気ではない
それは無謀というのだ
161デフォルトの名無しさん:2011/01/31(月) 23:12:50
俺無謀だったんだな・・
162デフォルトの名無しさん:2011/02/01(火) 00:01:54
いいじゃない。蛮勇上等!
163デフォルトの名無しさん:2011/02/01(火) 00:28:41
nazomen二等兵の戦死まだ?
164157:2011/02/01(火) 00:41:20
>>159
リンカに存在していることは確認済み、
順序を入れ替えてもNGでした。

>>160
-inline有りでNGならまだ良いんですが、
無しでNGなので困ってます。。。

うーん、階層が深すぎるかなぁ・・・
Java風にco/jp/hoge/app/・・・な感じでmodule切ってるんですが。
165デフォルトの名無しさん:2011/02/01(火) 00:50:47
今俺†階層指向プログラミング†って言葉を発明した
166デフォルトの名無しさん:2011/02/01(火) 11:16:37
うがーーー
luad、本体のGCであぼんorz
167デフォルトの名無しさん:2011/02/04(金) 01:20:32
おすすめの汎用ddocファイルとかどっかに配布されてない?
168デフォルトの名無しさん:2011/02/04(金) 21:27:09
ずっとdwt+d1でGUIやってたけど限界が見えてきた(忍耐力的な意味で)

もう.NETでいいんじゃないかな
169デフォルトの名無しさん:2011/02/04(金) 21:31:05
ネイティブなバイナリであることに拘らないなら
170デフォルトの名無しさん:2011/02/04(金) 22:00:56
D2でGUIライブラリの再発明してる俺乙だな
171デフォルトの名無しさん:2011/02/04(金) 22:01:41
実用面なら.NETだろうけど遊ぶならDだよね・・・
172デフォルトの名無しさん:2011/02/04(金) 22:26:55
Dは下手なスクリプト言語以上に短く書けるのがいい
C#で20行くらいのコードならDなら2行で書けるね。たぶんだけど
173デフォルトの名無しさん:2011/02/04(金) 22:30:59
ネストを深くしないようなスコープガード文って他の言語にあるの?
これが最高でDやめられないんだけど
174デフォルトの名無しさん:2011/02/05(土) 01:33:14
>>168
Qt4 もあるしな
D は色んな意味で遅過ぎた
残念だけど
175デフォルトの名無しさん:2011/02/05(土) 03:47:49
終わった雰囲気出すのは病めようぜ
176デフォルトの名無しさん:2011/02/05(土) 04:15:20
終わってんじゃん
漏れの中ではな
177デフォルトの名無しさん:2011/02/05(土) 12:04:18
まあ、ネイティブコンパイラなんて今後汎用PCでは必要とされないかもね。

D言語は組み込み用途のC言語置き換えを担ってる。
今のところ敵はいないし(Go?)
178デフォルトの名無しさん:2011/02/05(土) 12:52:07
Goはライブラリ揃える人がいないから普及しないよな
DはCの豊富なライブラリが利用できるからこれから流行る  はず・・・
179デフォルトの名無しさん:2011/02/05(土) 13:14:45
GoはGoogle自体普及させる気があるのか判らん
180デフォルトの名無しさん:2011/02/05(土) 13:33:21
     ☆ チン

    ☆ チン  〃  ∧_∧
     ヽ ___\(\・∀・) <DのIDEまだー?
        \_/⊂ ⊂_ )
      / ̄ ̄ ̄ ̄ ̄ ̄ /|
    | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  .|
181デフォルトの名無しさん:2011/02/05(土) 13:42:31
Dほど堂々とC置き換えを宣言した言語はないね。
C++は名前の通り単なる拡張だったし。
182デフォルトの名無しさん:2011/02/05(土) 14:04:53
まあ、やり過ぎて殆ど別の言語になったとも言えるがな → C++
183デフォルトの名無しさん:2011/02/05(土) 14:31:07
流行り廃りもそれなりに意識はするけど、やっぱ触ってて楽しいってのが一番だな
Dほどしっくりくる言語は今のところない
184デフォルトの名無しさん:2011/02/05(土) 16:10:13
Cのライブラリがどんどん使えるから
どれだけDのライブラリ群が使い物にならなかろうと
実はライブラリ面ではあんまり苦労しない

やっぱり問題なのはGUIライブラリみたいな巨大な奴
185デフォルトの名無しさん:2011/02/05(土) 17:01:51
ソース書いてて、ここの処理を後で改良しなきゃ、ってときに
以下の mixin を使って記述しておいてるんだけど、
__FILE__ と __LINE__ を書かなくてもちゃんと mixin した場所を
出力されるようにできないかな?
D2 なら動くはず、と思ってたんだけど、やっぱり駄目みたい。


template CompileMsg(string MSG, string FILE = __FILE__, int LINE = __LINE__)
{
pragma(msg, "CompileMsg = " ~ FILE ~ "(" ~ LINE.stringof ~ "):" ~ MSG);
}

〜ソース中で〜
mixin CompileMsg!("FIXME:bug", __FILE__, __LINE__); ←これならうまくいく。
mixin CompileMsg!("FIXME:bug");←本当はこうやって __FILE__ などを省略したい。
186デフォルトの名無しさん:2011/02/05(土) 17:31:00
__FILE__ と __LINE__ を CompileMsg の引数じゃなくてブロック内で直接使っちゃ駄目なんだっけ?
187デフォルトの名無しさん:2011/02/05(土) 18:24:05
うん、どうしてもテンプレートを定義した場所の情報になってしまう・・・。
188デフォルトの名無しさん:2011/02/05(土) 19:41:58
それ前スレで
「なんで仕様にはテンプレートがインスタンス化された場所の
ファイルと行になるって書いてあるのにならないの?」
「バグだよ」
という流れを見た気がする
189デフォルトの名無しさん:2011/02/05(土) 20:06:01
そりゃ mixin があるから #define いらねーよ、というのを
真っ向から叩き潰すバグだな。
最上級優先で対処すべきD崩壊因子バグだな。
190デフォルトの名無しさん:2011/02/05(土) 22:06:25
>>178
そう言われ続けて何年経った?
191デフォルトの名無しさん:2011/02/06(日) 01:06:16
>>190
一般的な目で見れば、そう言われたことなんてただの一度もないな。
192デフォルトの名無しさん:2011/02/06(日) 01:10:46
D言語やってた層とDelphiやってた層ってなぜか一致するんだよな
193デフォルトの名無しさん:2011/02/06(日) 03:54:43
うそつけ
194デフォルトの名無しさん:2011/02/06(日) 04:40:00
わからんでもない
195デフォルトの名無しさん:2011/02/06(日) 14:40:53
Delphi層はC#に流れてるんじゃないか?別に根拠はないけど。
196デフォルトの名無しさん:2011/02/06(日) 14:48:16
ポトペタのDelphiとポトペタなんて夢のまた夢のDって最も遠い存在じゃないか?
197デフォルトの名無しさん:2011/02/06(日) 15:10:52
言語機能のこと言ってるんじゃないの?
198デフォルトの名無しさん:2011/02/06(日) 16:28:48
Delphiをつくっていたやつが引っこ抜かれてC#つくったとかBorland信者の友人が言ってたな。
199デフォルトの名無しさん:2011/02/06(日) 16:43:11
個人的にDの次によさげなのがC#だけど
凶悪なテンプレートとか考えるとDの方が3歩くらい先を行ってる
C#はすでに崖っぷちだ
200デフォルトの名無しさん:2011/02/06(日) 16:43:29
アンダース・ヘルスバーグ
201デフォルトの名無しさん:2011/02/06(日) 17:25:46
C#は酷いことになってるよね
C++なんて負の遺産を抱えてるから・・・
202デフォルトの名無しさん:2011/02/06(日) 18:11:59
DelphiもDelphiで、TurboPascal時代の古い機能が溜まっていって結構ひどいことになってるけどな。
機能的には関数として書くか式として書くかの違いしか無くて同じように使える関数内関数とクロージャに互換性が無いんだぜ、信じられるか……?
203デフォルトの名無しさん:2011/02/06(日) 19:03:57
Javaは安定してるというがそんなことはない
1.5で予約語が増えたから既存コードが微妙にコンパイルできなくなった
おまけにJ#とかDalvikとか亜種がいて本家とは互換性が無いと来てる
ひどい言語だ
204デフォルトの名無しさん:2011/02/06(日) 20:26:40
もう新しい言語作らないでください。
Dで終わりにしよう
205デフォルトの名無しさん:2011/02/06(日) 20:38:03
D3マダー?
206デフォルトの名無しさん:2011/02/06(日) 21:19:59
D3はプリプロセッサがついて文字列mixinがグレードアップ
クラスを値型としても使えるようにし、多重継承にも対応
そして不評のGCは排除してphobosには標準コンテナライブラリが入る上、
Cのコードを直接書けるようになる
207デフォルトの名無しさん:2011/02/06(日) 21:33:42
びっくりするほどC++!
208デフォルトの名無しさん:2011/02/06(日) 22:38:30
D++ですね。わかります。
209デフォルトの名無しさん:2011/02/07(月) 00:30:13
内部で勝手に new したりしないコンテナライブラリが欲しいなぁ。
210デフォルトの名無しさん:2011/02/07(月) 02:56:57
>>209
ポリシーで分けるようにしたらいいんじゃないかな
211デフォルトの名無しさん:2011/02/07(月) 03:29:13
シンボルが見つからない時のコンパイラさんのサジェスチョンがさり気に性能良くなってるな
212デフォルトの名無しさん:2011/02/07(月) 06:14:28
TypeInfoの値に関して、それがclassかstructかとか判別するにはどうすればいいんでしょうか?
213デフォルトの名無しさん:2011/02/07(月) 07:00:18
bool isClass(TypeInfo info){
 return null !is cast(TypeInfo_Class)info;
}
214デフォルトの名無しさん:2011/02/07(月) 10:43:40
>>209
dcollectionsって自分でアロケータ設定できなかったっけ?
「newしたりしない」ってのがどこまでのこと言ってるのか分からんけども
215デフォルトの名無しさん:2011/02/07(月) 10:49:03
>>209
最近、公式のガベージコレクションのドキュメントに、GCを使うDの操作って項目が追加されてたの知ってた?
まあ、勝手にnewとか言ってる時点で、GCのことよく分って無いんだろうけど。
216デフォルトの名無しさん:2011/02/07(月) 11:06:22
>>212
実は対象の型がどういうものかによって、TypeInfoの型も違ってたりする。
http://ideone.com/KutKu
これを利用して、is式で判定すればいい。

ちなみに、TypeInfoを取得した型の種類を判別するだけなら、is式一つで十分。
217209:2011/02/07(月) 22:23:48
うん、GC のことはいくら説明を読んでも使いこなせる気がしないってのが
正直なところかなぁ。
使わなくなったポインタは null を代入しておけば良い、というのを
読んで、それをやってみたりもするんだけど、微妙な不安感が・・・。
コンテナとは違うけど、std.string はソース見てみるとドンドコ new してる
のを見て不安になったり・・・。

だからゲーム開発でよく使う、固定サイズのバッファを
渡して使うコンテナ、というのはすごく安心できるんだよねぇ。
これ以上追加できないってときには assert で止まってくれていいから!
みたいな。

気持ちの問題かしらん。

dcollections はちょっと見てみます。ありがとう。
218デフォルトの名無しさん:2011/02/08(火) 00:13:27
俺も昔はそうだったから気持ちは分かるが、割り切れ
メモリなんて丁寧に管理してやるよりGCに任せた方が安全だと
219デフォルトの名無しさん:2011/02/08(火) 00:22:48
>>217
固定サイズのバッファを使いたいなら、静的配列使えばいいじゃない。
220209:2011/02/08(火) 08:01:32
趣味で PC 上で動くアプリ書くだけなら割り切った方がいいよね。
仕事でも使えたらなぁ、という妄想をしてしまうけど、
GC にべったりである限りはそれもできなさそう。

>>219
うん、静的配列を使って push とか pop とかできるコンテナを
書いてます・・・。
221デフォルトの名無しさん:2011/02/08(火) 09:29:18
>>220
あんまり難しく考えるなよ!
GCの動作の仕方なんか、以下の3つだけで説明できるんだから。

・GCはメモリが不足した時に動作する。
・どこからも参照されていないメモリを解放する。
・使われているメモリを隙間なく詰め直す。

上の3つを踏まえたうえで、これをもう一度読んでみ。
http://www.kmonos.net/alang/d/2.0/garbage.html

それでも理解できないとか、もう知ってるよ!とか言うなら、まだ難しく考えている証拠だろう。
222デフォルトの名無しさん:2011/02/08(火) 12:46:29
今時GCがない環境での仕事の方が少なそうだけども

D言語はCoWな方針だからstd.stringの実装で基本newなのは仕方ないね
InPlace版かバッファ渡す版を用意すればそれで解決な気もする
223デフォルトの名無しさん:2011/02/08(火) 12:50:08
そのためのRange・・・とか超適当な事言ってみる
224デフォルトの名無しさん:2011/02/08(火) 20:34:44
テンプレートとスコープガード文のあるC言語みたいに使えばいいんじゃね?
225209:2011/02/09(水) 03:08:55
>>221

どうもありがとう。確かに難しく考えすぎかも。
もう一度読み返して勉強してみます。

ちなみに仕事はゲーム機関連で、メモリ管理も
ヒープをどーんと確保してそこから new し、
シーンを移るときはそれを一括で削除
するので、スマートポインタや参照カウンタはおろか、
デストラクタすら書く必要無いような作り方してる。
だからメモリ残量での苦労はあっても
メモリ管理で苦労した記憶はあまりないんだよね。

似たようなことが D 言語でも出来るなら何も問題は無いかも。
226デフォルトの名無しさん:2011/02/09(水) 04:26:11
プレイスメント new が欲しいなぁと思って検索してみたら、
std.conv の emplace がそれに相当するみたいだね。

以下のアンドレイへのインタビュー記事でたどり着けた。
ちなみに記事の内容も少し読んだけど面白かった。
ttp://slashdot.jp/~taro-nishino/journal/514236

227デフォルトの名無しさん:2011/02/09(水) 09:11:12
>>225
GC使ってるからって、大量のメモリを確保できない訳でもなく、大量のメモリを解放出来ない訳でもないから、そこは問題ないね〜。

むしろ、GC自体が使うメモリの消費を許容できるかどうかの方が重要だろう。
228デフォルトの名無しさん:2011/02/09(水) 15:28:40
spawn(&func, socket.accept());
とか出来ないですが、どうすればいいんですか?
229デフォルトの名無しさん:2011/02/09(水) 17:58:43
>>228
エスパーすると、funcの定義が void func(Socket); じゃ無い。

ちゃんと回答が欲しいなら、エラーメッセージを出すべし。
230デフォルトの名無しさん:2011/02/10(木) 10:35:10
↓ これって仕様なの? めまいがするぜ
void main(string[] args)
{
string cba = "CBA";
cba.sort;
writeln(cba); // ABC
assert(cba != "CBA"); // assert failed!
}
231デフォルトの名無しさん:2011/02/10(木) 11:16:14
void main(string[] args)
{
string cba = "CBA"; //←"CBA"への参照を代入
cba.sort; //←"CBA"をソート(未定義動作)
writeln(cba); // ABC(?)
assert(cba != "CBA"); // assert failed!
}

たぶん、これで解決。
string cba = "CBA".dup;

たぶん。
232デフォルトの名無しさん:2011/02/10(木) 13:15:40
char[] cba = "CBA".dup だろ
233デフォルトの名無しさん:2011/02/10(木) 13:41:34
↓ 初学者にはこれを見せてDを学ぶのを思いとどまらせようぜ
void main()
{
string xyz = "XYZ";
assert(xyz.reverse == "ZYX"); // assert success!

string abc = "ABC";
assert(abc.reverse == "ABC"); // assert success!
}
234デフォルトの名無しさん:2011/02/10(木) 15:54:01
>>233
何時の時代の話w
235デフォルトの名無しさん:2011/02/10(木) 22:02:15
D ってやる気無さ杉だろ
そろそろ本気出せよ
236デフォルトの名無しさん:2011/02/10(木) 22:41:33
>>230
dup/idupしなかった場合、醜いことになるんだねぇ
バグなのか仕様なのか…

import std.stdio;
void main(string[] args)
{
string cba = "CBA";
cba.sort;
writeln("cba --- ", cba); // cba --- ABC
assert(cba == "ABC", "a-1"); // assert success!
assert(cba != "CBA", "a-2"); // assert failed!

string x = "CBA";
writeln("x --- ", x); // x --- ABC  おいっ
assert(x == "CBA", "a-3"); // assert success! しかし、sの表示はABCなので、この書き方では正しく評価出来ていない
assert(x.dup.reverse == "ABC", "a-4"); // assert failed!
assert(cba != x, "a-5"); // assert failed!
}
237デフォルトの名無しさん:2011/02/10(木) 23:21:14
sort/reverseはconst/immutableで出来てはいけないはず(自身をソートする)だからバグということで
238デフォルトの名無しさん:2011/02/10(木) 23:37:36
D2だとちゃんと実行時エラー吐いたよ。
239デフォルトの名無しさん:2011/02/10(木) 23:39:38
>>234だけど、思いこみって怖いね!
240デフォルトの名無しさん:2011/02/11(金) 01:07:37
>>238
それ多分Linuxだから
Windowsだとおk
http://www.kmonos.net/alang/d/2.0/dmd-windows.html#differences
241デフォルトの名無しさん:2011/02/14(月) 12:32:58
CTFEでコンパイルエラーが出るとエラー箇所の追跡でハマる
phobosがコンパイラの処理を吸い出す方針なら
我々は望むと望まざるとに関わらず CTFE の輪の中にとらわれ
そこでのコンパイラエラーとの戦いに悩まされる羽目になるであろう

CTFEを言語機能の主要部に置くのと同様
コンパイル時スタックトレース(CTST?)もまた出力されねばならない

auto list = makeXXXlist(); // 関数 は stringを返す
assert(list == ["aaa","bbb","ccc"]); // コンパイルエラー in object.di

な、そう思うだろ?
242デフォルトの名無しさん:2011/02/14(月) 13:12:31
>>241
そう思うだろ? と言われても。

makeXXXlist() が見つからないから、再現できないし。
["aaa","bbb","ccc"] は string[] 型で string 型じゃ無いし。http://ideone.com/AHI9A
テンプレート使うならCTFE必須だし。

こっちとしては、どうしようも無い訳だけども。
243デフォルトの名無しさん:2011/02/14(月) 13:14:38
おっと、CTFEは必須ではないか。
まあ、似たようなもんだけど。
244241:2011/02/14(月) 13:55:09
>>242
すまない
今困ってる訳じゃないんだ
// 関数 は stringを返す
ってのは最後の最後に判明したことで

string と string[] を比較するというお馬鹿なミスのために
大海原の真ん中で object.d のソースに漂着させられたことが問題なんだ

命綱(トレース)をくれ・・・
245デフォルトの名無しさん:2011/02/14(月) 19:48:34
DWT2をphobos2でコンパイルしようと努力してみたが
実行段階まで来て意味不明なアクセス違反連発でくじけた
改めて見渡せば五体満足なGUIライブラリが一つもない
GUIなんて窓から投げ捨てろ
246デフォルトの名無しさん:2011/02/14(月) 22:15:05
>>244
CTFEは pragma(msg,〜〜〜); で、printfデバッグ的なことは出来るよ
247デフォルトの名無しさん:2011/02/14(月) 23:13:46
>>246
おk。ありがと
248デフォルトの名無しさん:2011/02/15(火) 00:12:07
OpenGLのpbufferかFBOを使いたいと思い、GLEWをD言語にポーティングしようとしてます。
htodを使って変換しようとしたところ、__int64とかint64_tとかwchar_tでコケます。
どうするのが安全でスマートなんでせうか?
249デフォルトの名無しさん:2011/02/15(火) 02:30:08
更新の少ないライブラリだし、ある程度手でやってもいいんじゃない?
250デフォルトの名無しさん:2011/02/15(火) 15:16:52
>>244
うーん。 確かにわかりづらいなこれ。
http://ideone.com/XWTiA

別にCTFEに限った事では無かったけど。
http://ideone.com/tpyRt

まあ、改善するまでは、こういうメッセージが出るって、覚えておくしかないね。
251デフォルトの名無しさん:2011/02/16(水) 01:49:24
>>248
GLEWはマクロ使いまくってるからhtodで変換するのは難しいと思う
ひとつひとつAPIエントリを取得したほうがいい
252デフォルトの名無しさん:2011/02/16(水) 12:04:56
>>248
ヘッダが15000行もあるぞ、正気かこれ?w

最初の200行くらいで環境依存のすりあわせをやってるから
自分の環境に合わせて -Dxxxx をいくつかやってやればエラーは止まると思う

Windows 32bitならたとえば
htod glew.d -D_MSC_VER=1200 // Visual C 6.0用の環境定義を流用

スマート(っぽい)けど安全かどうかはわからない
まともに使える物かどうかは試してみてくれw
253デフォルトの名無しさん:2011/02/16(水) 12:36:17
>>252
付け加え
glew.h しか試してない
他のヘッダは形式が全く違うし必要かどうかもわからないのでパス

CALLBACK のところがやっぱりおかしい
alias function 〜で extern (Windows) ※もしくはそれに類するもの
を1行ずつ追加しないといかん
254デフォルトの名無しさん:2011/02/16(水) 13:13:34
Dねえ
255デフォルトの名無しさん:2011/02/16(水) 14:09:39
D姉?
256デフォルトの名無しさん:2011/02/16(水) 15:58:30
出ねぇ(4日目)
257デフォルトの名無しさん:2011/02/16(水) 22:28:59
すみません規制解除されたかテストさせてください
258デフォルトの名無しさん:2011/02/16(水) 22:29:49
解除されてた・・・
恥ずかしい・・・
テストするんじゃなかったorz
259デフォルトの名無しさん:2011/02/16(水) 22:45:44
unittest {
 while(!post2ch());
}
260デフォルトの名無しさん:2011/02/16(水) 23:23:47
>>249
>>251
>>252
ありがとう
glextをポーティングして、毎回APIエントリ取得することにしました。
こっちはほぼhtodそのまま。
ただし、やはり>>253みたいに手動でextern(Windows)する必要ありました。
(試行錯誤で一日使った…。でもこれが楽しいのかな。他言語にするか、と思った途端やる気なくなる)
261デフォルトの名無しさん:2011/02/17(木) 00:11:21
>>259

unittest {
 while(!post2ch()) {}
}
262デフォルトの名無しさん:2011/02/17(木) 01:10:42
>>260
glext.hをhtodする時の備忘録。(Windows32bit)

・htod前
gl.hとglu.hのAPIENTRYとかを全消ししてinclude
wchar_tとかint64_tとか
typedef long int int32_t;
typedef long long int int64_t;
typedef unsigned long long int uint64_t;
typedef unsigned short wchar_t;

・htod後
頭にextern(Windows):
htodで追記されてるextern(C)を削除する
GLsyncとか構造体の宣言は手動でやる必要あり
関数宣言の引数名でrefとinが登場してる

他にもあったかもしれんけど、忘れますた。
アホっぽいところあったら指摘してください。

いやー、ちょっとOpenGL借りたいときFBO便利だー
しかし、wglMakeCurrentしないとwglGetProcAddressできないのは誰が決めたんだろう
263デフォルトの名無しさん:2011/02/18(金) 01:16:40
メンバ関数のデリゲートを作った際に、
デリゲートの.ptrがどの実体を指しているか判定する方法はありますでしょうか。
たとえば

class Inst { void f() {} }
auto inst = new Inst;
auto deli = &(inst.f);

と置いたとき、deli.ptrがinstを指すものかどうか判定したいのですが……
264デフォルトの名無しさん:2011/02/18(金) 06:59:44
deliと&(inst.f)を==で比較すればいいんじゃね?
265デフォルトの名無しさん:2011/02/18(金) 09:56:29
>>263
正しい方法じゃ無いかもしれないが出来た。
http://ideone.com/MSWxU
266デフォルトの名無しさん:2011/02/18(金) 19:57:09
ついにstd.datetimeが来たのか…
267デフォルトの名無しさん:2011/02/18(金) 21:04:20
64bit linux サポート
268デフォルトの名無しさん:2011/02/18(金) 21:17:33
ええいさっき2.051でコンパイルしたwxDがタッチの差で動かなくなってやがる
269デフォルトの名無しさん:2011/02/18(金) 21:50:18
>>268
くそー、ノロケか・・・

俺的にはforeach( ; )をforeach( : )に修正して欲しい
270デフォルトの名無しさん:2011/02/18(金) 22:16:34
class A1{}
class A2 : A1{}
class A3 : A2{}
:

という継承関係があるとき、(n <= m)なクラスAn, Amについて
あるメンバ関数fがAn〜Amの間でオーバーライドされているかの判定は
どのような方法がありますか?

isで比較してみたのですがこの方法ではどうも結果がおかしいです
http://ideone.com/bGbOD
271デフォルトの名無しさん:2011/02/18(金) 22:28:19
予約語invariantは消滅したと思ってたけどcast(invariant)ってまだ利くのな
バグなの?仕様なの?
272デフォルトの名無しさん:2011/02/19(土) 02:13:55
>>271
バグじゃね
273デフォルトの名無しさん:2011/02/19(土) 07:59:49
>>270
void delegate() dg1 = &a1.f;
writeln(dg1.funcptr == dg1.funcptr);
デリゲート変数の関数ポインタを比較で、とりあえず出来るみたいだけど
込み入った事すると、前スレで上がったsuper周りのバグに引っかかって、うまく機能しないかも
274デフォルトの名無しさん:2011/02/19(土) 09:26:38
>>271
class invariantが残ってね?
275デフォルトの名無しさん:2011/02/19(土) 12:41:30
>>273
ありがとうできました
superこわいよsuper
http://ideone.com/gQeVL
276デフォルトの名無しさん:2011/02/19(土) 12:46:06
>>275
private設定で貼ってしまったorz
http://ideone.com/zQiIB
277デフォルトの名無しさん:2011/02/19(土) 13:11:33
DFL が落ちまくってイライラしていたが
常駐ソフト(IME Watcher)が悪さしていたでござる

今までWinXPのタスクバーに抵抗してたのに・・・w
278デフォルトの名無しさん:2011/02/19(土) 13:58:12
>>265
ありがとうございました。
そのコードを参考に組んでみたところ、
なにかうまくいかないので調べていたところ、
interface参照をcast(void*)していたことが原因でした。
http://ideone.com/fJEJ3

cast(Object)で再びアドレスが一致したので、
正解ではないかもしれませんがこれでいけそうです。
ありがとうございました。
279デフォルトの名無しさん:2011/02/19(土) 16:43:57
interfaceといえば

void func(T)(T obj) if (is(T:Object)) {}
interface I {}
void main() {
 I obj = new class I {};
 func(obj);
}

これがエラーになるのって言語仕様的にどうなん?
interfaceを実装するものは確実にObjectも継承すると思うんだが…
280デフォルトの名無しさん:2011/02/19(土) 17:23:33
cast(Object)
281デフォルトの名無しさん:2011/02/19(土) 20:09:55.52
>>278
後で思ったんだけど、writeln()に出力する時にcast(void*)が必要なだけで、
普通の比較にはいらなかった気がするw
282デフォルトの名無しさん:2011/02/19(土) 23:52:14.40
文字列mixinで定義してあるシンボルを選択インポートできない・・・やられた
283デフォルトの名無しさん:2011/02/20(日) 01:59:31.78
>>267
マジだ
284デフォルトの名無しさん:2011/02/20(日) 12:37:09.93
誰がマゾやねん
285デフォルトの名無しさん:2011/02/20(日) 21:47:24.13
>>284
このD使いめッ!
286デフォルトの名無しさん:2011/02/20(日) 23:40:14.46
M言語に名前変えようぜ!
拡張子は.mな
287デフォルトの名無しさん:2011/02/21(月) 00:03:09.29
Dさんの視点で考えろよ
S言語が正解
288デフォルトの名無しさん:2011/02/21(月) 02:40:57.02
saD
289デフォルトの名無しさん:2011/02/21(月) 02:44:27.16
MarsからsaDに改名した訳だ
290デフォルトの名無しさん:2011/02/21(月) 22:58:34.97
一年ぶりくらいに触ったら全く別の言語になってて吹いた
相変わらずだな
291デフォルトの名無しさん:2011/02/21(月) 23:11:34.10
一年前はそんな別物だったか?
292デフォルトの名無しさん:2011/02/21(月) 23:12:05.43
とりあえず予約語がたくさん消えてるのは確認した
293デフォルトの名無しさん:2011/02/22(火) 20:12:27.35
DってSIMD演算はCから使えばいいの?
294デフォルトの名無しさん:2011/02/23(水) 02:08:38.08
mmintrin.h〜xmmintrin.h〜emmintrin.h〜intrin.h〜smmintrin.h〜nmmintrin.hをポートするかインラインアセンブラ使えば良いんじゃないの
295デフォルトの名無しさん:2011/02/24(木) 19:29:36.50
ttp://ideone.com/rcqoQ
std.string.cmpとかpureでnothrowで@safeであるかのように思うだろ?
ところがどっこい……っ!
296デフォルトの名無しさん:2011/02/24(木) 20:10:23.87
>>286
Objective-Cとかぶる。
297デフォルトの名無しさん:2011/02/24(木) 22:33:40.59
298デフォルトの名無しさん:2011/02/24(木) 22:53:14.95
gdcって実は生きてるんだっけ
ldcも復活したって噂は聞いたが
299デフォルトの名無しさん:2011/02/24(木) 23:51:11.05
ttp://bitbucket.org/goshawk/gdc/wiki/Home
これか。コードはともかくGDCの環境整えるのがめんどくさいな。
300デフォルトの名無しさん:2011/02/25(金) 00:04:11.28
MinGWのgccでO3をつけてコンパイルしたのが6秒くらいだった環境で
-O -inlineをつけたdmdでstructでやってみたら8秒くらいだった
classだとvirtualになるからかさらに1.5倍くらいかかる
もうちょっと頑張れ
301デフォルトの名無しさん:2011/02/25(金) 06:15:16.29
dmdだけど、classでもfinalつけると速くなるなあ。
「Dでは全部virtualだけど、オーバライドされてない関数はコンパイラが検出して非virtualにしてくれるよ!」
ってどっかに書いてあった気がしたんだが。

まあ今まであんまりfinalつける癖がなかったから、
「速度的なアドバンテージもあるから、なるたけつけるようにしようね!」
っていうDさんの優しさだと思っとく。
302デフォルトの名無しさん:2011/02/25(金) 06:56:40.29
>「Dでは全部virtualだけど、オーバライドされてない関数はコンパイラが検出して非virtualにしてくれるよ!」

リンカが検出してくれるなら判るが
コンパイラに検出可能なんかね
303デフォルトの名無しさん:2011/02/25(金) 06:59:42.42
finalがついてる関数は検出して非virtualと判定するよ!とかじゃね?w

あとモジュールprivateなクラスはソース内で閉じてるから検出可能とは思うけどどうなんだろう。
304デフォルトの名無しさん:2011/02/25(金) 11:09:35.51
GCの制御に「弱い参照」って作れませんでしょうか。
オブジェクトAとBが相互参照していても
その相互参照以外の参照ルートがなくなるとGCが回収してくれて、
回収時にデストラクタでメッセージングして相互参照を消すコードを書くような形で。
305デフォルトの名無しさん:2011/02/25(金) 11:49:33.35
アク禁のおかげで若干旬が過ぎた気もするけど
2.052であばばばってなった人殆どいないんかな・・・

std.string.replace >> std.array.replace
std.date >> std.datetime

俺はかーなーりー痛かったぞと。
306デフォルトの名無しさん:2011/02/25(金) 17:37:58.59
>>305
そんな痺れるような痛みが大好きなんですよね。わかります。
307デフォルトの名無しさん:2011/02/25(金) 17:43:09.68
gdcってgdbと紛らわしいからやめて欲しい
308デフォルトの名無しさん:2011/02/25(金) 19:43:51.99
>>305
replaceはまだしもstd.datetimeはドキュメントが膨大すぎて途方に暮れざるを得ない
だが翻訳の中の人の痛みに比べたらこの程度…
309デフォルトの名無しさん:2011/02/25(金) 20:07:01.83
言語仕様の破壊的変更が一段落したから
今度はライブラリかー
わくわくが止まらない
310デフォルトの名無しさん:2011/02/25(金) 20:21:28.19
2.051から2.052にしたらアプリサイズが3MBから5MBになたw

それはそうと、Linuxで開発してる側の人間から見ると、
DMDとGDBて同じにしか思えないんだが…何か違うのかなぁ。

2.052のzip内のDMDがlibcのバージョン違いで動かなかったもんで、
ソースをgccでコンパイルしなおしたりしてるんだけど。
311デフォルトの名無しさん:2011/02/25(金) 20:22:17.99
なぜindexOfをグローバルに出したしstd.datetimeェ・・・
private付けてくれよ
312デフォルトの名無しさん:2011/02/25(金) 21:19:13.23
Objectが投げられなくなったのが地味に面倒だった
313デフォルトの名無しさん:2011/02/25(金) 21:34:41.45
>>304
それ、デフォルトの動作じゃね?
DMDは世代型コピーGCなはず。
314デフォルトの名無しさん:2011/02/25(金) 22:27:52.80
2.048からバージョンアップしたけどOpenGLのポーティングがコンパイル通らなくなってて嬉しくなった
315デフォルトの名無しさん:2011/02/26(土) 00:20:38.13
GUIライブラリどうするかな…
コンパイルできる奴が1つも無いというのは置いておくとして
どれが見捨てられてどれに未来があるのかがまったく読めないのが困る
いっそどれが生き延びてもいいようにラッパを書くか?
316デフォルトの名無しさん:2011/02/26(土) 00:45:29.69
Qt on D があると嬉しい
317デフォルトの名無しさん:2011/02/26(土) 00:57:31.75
WindowsTimeZone.getTimeZoneが失敗するな
かなり適当だけど直してみたhttp://codepad.org/6xHhr1vh
getInstalledTZNamesも直さないといけないはずだけど面倒なので誰か任せた
318デフォルトの名無しさん:2011/02/26(土) 02:08:30.35
>>316
あるよ
ttp://www.dsource.org/projects/qtd
頑張れば動くんじゃないかと思う
319デフォルトの名無しさん:2011/02/26(土) 02:34:41.42
いまはもう動かない〜
320デフォルトの名無しさん:2011/02/26(土) 03:58:01.19
へ〜あるんだ
でも9年も前か
残念だけど
話にならんな〜
321デフォルトの名無しさん:2011/02/26(土) 04:39:16.05
>>320
ん?誤爆?
QtDの最終更新は先月だけど
322デフォルトの名無しさん:2011/02/26(土) 08:26:36.62
GUIする時Eventに対するEventArgはEventの種類で親子関係あるから
classにせざるを得ないと思うんだけど、GC付きの言語でこれやると
例えばMouseEventとかマウスが動くたびに大量のnewが発生してGCがバリバリ動いてしまう
ゲームのメイン処理中はプールしたメモリ内をやりくりしてGC動かないように必死なのに
こういうフレームワーク的な部分でGC発動してたら萎えるなと思うんですけど
そういうものと諦めるものなんですか?
323デフォルトの名無しさん:2011/02/26(土) 09:16:27.72
>マウスが動くたびに大量のnewが発生してGCがバリバリ動いてしまう

newは大量だろうけどその都度GCする訳じゃないし
324デフォルトの名無しさん:2011/02/26(土) 10:35:40.43
325デフォルトの名無しさん:2011/02/26(土) 11:51:34.23
マウスをぐりぐり動かすとゲージが伸びて
MAXに到達したらGC発動! ぴきーん!

そんなゲームを作ってくれ
# こういう単純なのが演出しだいでウケるんだよな
326デフォルトの名無しさん:2011/02/26(土) 12:19:09.65
>MAXに到達したらGC発動! ぴきーん!

ここの動作を kwsk
327デフォルトの名無しさん:2011/02/26(土) 12:47:59.19
あれだ
GC過程でWin95時代のデフラグみたいなのが表示されるんだ
328デフォルトの名無しさん:2011/02/26(土) 12:55:52.41
.NETとかGC標準だけどどうやってるんだろうな
PCの性能がよくなってるから速い遅いの感覚があてにならん
329デフォルトの名無しさん:2011/02/26(土) 20:34:06.97
基本ゲーム用に作られたモジュールだけ使うようにして、
残りはオブジェクトプールでなんとかってとこかと
330デフォルトの名無しさん:2011/02/26(土) 20:43:42.76
>>327
デフラグ表示の過程でもnewするだろうから……ゴクリ
331デフォルトの名無しさん:2011/02/26(土) 23:10:08.86
>>322 がGUIライブラリの不満なのか言語に対する不満なのか
よくわからなくなってきた

SDLかわいいよSDL

少し前にSDLでゲーム作ってみたら
テキスト表示するのに毎回フォント→画像イメージ生成する羽目になって
GCについては考えないことにしたw
332デフォルトの名無しさん:2011/02/26(土) 23:34:46.81
>>331
キャッシュ機構作っとくといいよ
333デフォルトの名無しさん:2011/02/27(日) 11:50:21.12
明示的deleteも出来ると言うのに、お前らときたら・・・
334デフォルトの名無しさん:2011/02/27(日) 14:09:48.65
DigitalMarsのmakeって
OBJ = $(SRC:.d=.obj)
みたいなことできないの?
335デフォルトの名無しさん:2011/02/27(日) 15:32:44.39
可能
336デフォルトの名無しさん:2011/02/27(日) 20:07:45.83
マジか…
もうちょっとやり方調べてみるかー
337デフォルトの名無しさん:2011/02/27(日) 21:26:58.11
tamaさん主催でD言語会議、始まるよ!
みんな参加しようぜ
ttp://partake.in/events/feac18f7-0b78-4129-92c5-ad0cce8feafb
338334:2011/02/27(日) 21:32:33.53
うーん、置換できん

ひょっとしてDigitalMarsのmakeって何種類かある?
dmdについくるのはハズレmakeだったりするのか
339デフォルトの名無しさん:2011/02/27(日) 21:42:06.82
何年か前に試したけどできなくて、結局当時からmingw32-make使ってるなあ。
340デフォルトの名無しさん:2011/02/27(日) 22:10:13.89
Windowsならnmakeと相性いいよ。batch-modeはやい
341デフォルトの名無しさん:2011/02/27(日) 22:30:33.39
rdmd myappbuild.d
とかやればいいような気がしてきた
342デフォルトの名無しさん:2011/02/28(月) 19:51:18.72
>>337
東京は遠い…
会社がDのために出張費を出してくれるとか

150%ありえないか
343デフォルトの名無しさん:2011/02/28(月) 19:57:41.61
東京なら日本全国日帰り可能だろ?
どんな僻地に住んでんだよ
344デフォルトの名無しさん:2011/02/28(月) 20:15:25.33
>>343
何を言っとるんだ。
東京「が」僻地なんで遠いんだ。
345デフォルトの名無しさん:2011/02/28(月) 20:17:20.80
平安時代の話?
346デフォルトの名無しさん:2011/02/28(月) 20:27:13.73
極東のさらに東端なんかいちいち行ってられねって
347デフォルトの名無しさん:2011/02/28(月) 20:45:20.26
そっか、残念。世界で一番デカイ都市圏なのにな・・・
348デフォルトの名無しさん:2011/02/28(月) 21:17:08.77
>>343
宝島
349デフォルトの名無しさん:2011/02/28(月) 21:28:30.26
(ただし23区に限る)
350デフォルトの名無しさん:2011/02/28(月) 21:37:07.31
ウォルたん辺りがひょっこり来ないかな
351デフォルトの名無しさん:2011/02/28(月) 23:41:25.57
ニコ生でひとつ
352デフォルトの名無しさん:2011/03/01(火) 02:15:27.09
2.052からかなあ
http://ideone.com/t1LaP
353デフォルトの名無しさん:2011/03/01(火) 02:58:32.75
>>352
2.051 では出ない
2.052 では結合後のlength が 2で返ってきててワロタ

きっとLinux 64bitサポートの恩恵に違いない・・・さて 2.052をアンインスト(ry
354デフォルトの名無しさん:2011/03/01(火) 07:56:45.27
条件演算子は他にもバグるのでやめたほうがいい
左右の型を合わせるよう気をつけたら大丈夫かも
355デフォルトの名無しさん:2011/03/01(火) 09:43:11.00
>>352-353
static assert( ("" ~ '\xE3').length == 1 ); // ver.2.051
static assert( ("" ~ '\xE3').length == 2 ); // ver.2.052

どうみても(ry
356デフォルトの名無しさん:2011/03/01(火) 11:45:44.70
そういうののテストコードはないのかね
357デフォルトの名無しさん:2011/03/01(火) 16:22:55.86
ttp://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=43138
irrlicht engine の D portingやりかけ版を発見(まだ動かない)

起動してもグレー画面だった
中をちらっと見たところ GC? 何それおいしいの? な不安を感じたので
これ以上の探索を断念w (ヘッダの変換だけでいいよもう・・・)

対応環境は windows+OpenGL(derelict) D2
358デフォルトの名無しさん:2011/03/01(火) 18:40:44.06
すみません、リファレンスに詳しく載っていないので心配なんですが、
スレッドセーフな配列を作りたい場合は以下で良いのでしょうか?

synchronized Class[] Array;

それとも要所要所にキチンとsynchronized ブロックするべき?
359デフォルトの名無しさん:2011/03/01(火) 23:00:13.03
いつまでも未完成だから流行んないのか。残念だなぁ。
360デフォルトの名無しさん:2011/03/01(火) 23:19:03.68
>>358
それだと変数宣言がsynchronizedブロックで囲まれるだけじゃないかな
使う時にsynchronizedすべきかと
361デフォルトの名無しさん:2011/03/02(水) 00:11:08.93
ttp://www1.axfc.net/uploader/Sc/so/210314
DWT2のbaseとswt(win32)とswtsnippetsを2.052で動かせたのでパッチ置いとく

というかDWTって何なの?
tioportみたいにSWTからJava to Dで自動変換してるの?
それとも全部手作業で変換してるの?
362デフォルトの名無しさん:2011/03/02(水) 03:25:12.59
それ公式に送ってあげたら?
DFL以外にも生きてるのがあったとは
363デフォルトの名無しさん:2011/03/02(水) 06:05:51.66
これどうしてthis呼ぼうとしてるの?
http://ideone.com/t2oy6
364デフォルトの名無しさん:2011/03/02(水) 06:44:20.97
>>362
問題は100点満点で連続1桁を取るレベルの英語力なんだよ…

小学生から英語やっとくべきだったなぁ
Dを触りだしてからとみにそう思う
365デフォルトの名無しさん:2011/03/02(水) 11:41:10.17
>>363
バグじゃね。
366デフォルトの名無しさん:2011/03/02(水) 16:49:23.27
>>363
なんだこれ
こんなバグあるのか
367デフォルトの名無しさん:2011/03/02(水) 18:21:32.62
>>157 の現象がDMD2.052で通るようになったぞと。
368デフォルトの名無しさん:2011/03/02(水) 18:39:58.23
>>362
gtkDもこないだ 2.050,Windows で試してみたらさっくり動いた
trunkはそれなりに更新されているみたい
369デフォルトの名無しさん:2011/03/02(水) 18:57:07.22
そんな中自力でGUIを作ろうとしてしまった件について
HTML5/CSS3のレンダラを書けばそれでGUI代わりにならね?的な。
370デフォルトの名無しさん:2011/03/02(水) 19:18:15.07
DでGUIライブラリ作るのめっちゃ楽しいです!
371デフォルトの名無しさん:2011/03/02(水) 19:28:30.51
Objective-Cのメッセージに変換される呼び出し規約書けないかなあ。楽しくなると思うんだが。
372デフォルトの名無しさん:2011/03/02(水) 20:24:04.81
オープンソースだから、自分で拡張するという方法も、あるにはある。
373デフォルトの名無しさん:2011/03/02(水) 21:02:29.72
仕方なくへたくそな英文メール書いて
パッチを送る直前まで行ったけど踏ん切りがつかない
英文添削スレとかあるのかと思ったのに無いのか…
374デフォルトの名無しさん:2011/03/02(水) 21:06:00.86
ここに書けばいいと思うよ
このスレは住人の1/4くらいは東大関係者だし
375デフォルトの名無しさん:2011/03/02(水) 21:12:46.97
ええと、1/3くらいは英語で論文を書いている人だと思う。
そういうところで気軽に頼めたりするのが2chのいいところ。
376デフォルトの名無しさん:2011/03/02(水) 21:21:15.50
マジか…さすがDさんはエリート言語だな
ちょっと変な所が無いか見ていただけますでしょうか。スレ汚しごめんなさい

Title: DWT2 patch for D2+Phobos

Dear Jacob Carlborg,
Nice to meet you.
(こんにちははじめまして)
I wrote patch to compile and execute DWT2 with dmd 2.052 (and Tango 0.99.9).
(dmd 2.052とあとTangoでDWT2をコンパイル・実行するためのパッチを書きました)
But target is only base, swt (for win32), and swtsnippets.
(対象はbaseとswt(win32)とswtsnippetsだけです)
And, I fixed bugs in swt for win32:
(あと、swt(win32)のバグをいくつか直しました)
* Access violation in beginning drag at TableItem.
  (TableItemのドラッグ開始時にアクセス違反)
* Garbling multibyte string at CTabItem.
  (CTabItemでマルチバイト文字列が文字化けする)
* FileDialog doesn't become modal.
  (FileDialogがモーダルにならない)
* to_path() problem in rakefile.
  (rakefileのto_path()の問題)
My patch include these.
(これらの修正もパッチに入れてます)
Please use it if it is good.
(よろしければお使い下さい)
My English unskilled, sorry.
(私は英語が下手くそです。すいません)

Best regards,
(署名)
377デフォルトの名無しさん:2011/03/02(水) 21:35:57.35
開発系のフォーラムでそこまで形式ばった書き方する人あまり見たことないな。
Hi, Jacob! とかで初めて、 Thanks! とかでしめるのをよく見る。
あと My English unskilled, sorry. とかは不要じゃない?
378デフォルトの名無しさん:2011/03/02(水) 22:02:25.37
俺も英語得意じゃないけど Please はかなり強い謙遜だから
気軽に使わない方がいいって聞いたことがある
379デフォルトの名無しさん:2011/03/02(水) 22:06:09.81
そんなの人それぞれ。

俺は丁寧で気持ちの良いコミュニケーションが好きだから、

could you kindly ~ please?

みたいなのは普通に使うぞ。
380デフォルトの名無しさん:2011/03/02(水) 22:15:06.40
むむむ。please以外の書き方がわかんね

最初だから多少堅めの方がいいんじゃないかなと思っていますが
開発系の常識だと軽い方がいいのかなぁ
とりあえず「英語下手です」とかは外す事にします
なぁに、今はいい翻訳ソフトもあるんだから何とかなるさ

アドバイスありがとうございます
381デフォルトの名無しさん:2011/03/02(水) 22:24:34.52
このスレみとったらオラもD言語やりたくなった
382デフォルトの名無しさん:2011/03/02(水) 22:29:09.76
まあ意味は取れる文だからいいんではないかなと。
語感的に
I wrote a patch for DWT2(base, swt-win32, and swtsnippets) to compiling it with dmd 2.052 (and Tango 0.99.9).
Additionally, I fixed some bugs in swt-win32:
みたいなほうが落ち着くけど、
前置詞とかネイティブでも迷う時があるらしいし。
383デフォルトの名無しさん:2011/03/02(水) 23:04:06.41
>>376
Hi Jacob,

I've written a patch which allows dmd(2.052) and
Tango(0.99.9) to compile and execute DWT2.
It works for base, swt on win32 and swtsnippets.

Also, it fixes some bugs of swt/win32.

Bugs fixed in my patch are:
- An access violation that occurs at the beginning of dragging a TabletItem.
- Multibyte strings are garbled on CTabItem.
- Sometimes it's unable to set FileDialog to be modal.
- to_path() problem in rakefile.

Could you please have a look at it?
I hope it will be included in D.

Thanks,

you name

バグについてはもっと詳細に具体的な情報を書いた方が良いと思われ。
もし既知のバグなら関連する URL とか、発生するタイミングとか。
384デフォルトの名無しさん:2011/03/02(水) 23:06:40.56
D はあまり詳しくないのと、>>376 さんのパッチについても
よく理解していないので、おかしな文書だったらスマソ。
385デフォルトの名無しさん:2011/03/02(水) 23:28:32.04
添削してもらって完璧な英文になって英語できる奴だと勘違いされると割とマジでまずいw
意味さえ伝わればおkくらいの勢いで、添削していただいた文を参考に書き直して送ってみます
後は野となれ灰となれロストなれ

スレ占有失礼しました。ありがとう!
386デフォルトの名無しさん:2011/03/02(水) 23:33:53.73
ガンガレ!
387デフォルトの名無しさん:2011/03/03(木) 06:30:32.26
tangoのFileSystem.rootsに該当する機能ってphobosにはまだ無いのかな
388デフォルトの名無しさん:2011/03/03(木) 17:18:37.84
公式サイトどぞー
389デフォルトの名無しさん:2011/03/03(木) 20:21:20.41
ねんがんのswig の D対応と
irrlicht のインターフェースファイルをてにいれたぞ!

あと1年はやく出会いたかったぜ・・・
390デフォルトの名無しさん:2011/03/03(木) 21:43:40.60
C++とのインターフェイスがしっかりしてれば、こんな問題起きないのに!
391デフォルトの名無しさん:2011/03/03(木) 21:48:17.98
C++の言語仕様が糞だから簡単にコンパイラを実装できるものを目指してDが作られたのに
C++とのIFをしっかり盛り込んだら本末が転倒しちゃう!
392デフォルトの名無しさん:2011/03/03(木) 21:51:35.63
ウォルたん「C++コンパイラの実装できるやつなんてこの世に存在しねーよ
      だから完璧なインタフェースも無理だよ」
393デフォルトの名無しさん:2011/03/03(木) 21:55:13.88
マングリング規則を揃えるだけじゃん?
394デフォルトの名無しさん:2011/03/03(木) 22:17:04.50
>>393
portingェ・・・
395デフォルトの名無しさん:2011/03/03(木) 22:24:03.97
wxDの努力には涙ぐましいものがある
396デフォルトの名無しさん:2011/03/03(木) 22:29:34.96
.NET的なフォーマット関数("{:0X}"みたいなの)ってまだ無いよね
書こうかな

と思ったところでstd.dateの二の舞になるから誰も書かないだけだと気づいた
397デフォルトの名無しさん:2011/03/03(木) 22:48:03.69
>>396
馬鹿な、tangoは.NETスタイルだぞ
398デフォルトの名無しさん:2011/03/03(木) 23:22:53.83
僕のライブラリに至ってはobject.Error: Access Violationが出てまともに動かないスタイルだぞ!
399デフォルトの名無しさん:2011/03/04(金) 00:24:57.36
いや、そういうスタイルならまともかどうかは関係ない

僕のはイカスAVが出るスタイルさ と言うべき
400デフォルトの名無しさん:2011/03/04(金) 01:51:28.61
T enforce(T)(T value, lazy Exception ex);
って定義なのに
enforce!sizet(line.length, new IOException);
じゃなくて
enforce(line.length, new IOException);
で呼び出せるのってどんな仕組み?
401デフォルトの名無しさん:2011/03/04(金) 02:18:19.07
http://www.kmonos.net/alang/d/2.0/template.html
関数テンプレート の暗黙型推論
402デフォルトの名無しさん:2011/03/04(金) 11:54:11.30
const(Object)refとかマジで欲しいんだけど

const(Foo) foo = getFoo1();
  :
foo = getFoo2();

とかやりたいときにいちいち
import std.typecons
とやって
Rebindable!(Foo) foo = getFoo1();
とやるなんて狂気の沙汰だぜ
autoすら使えない…
おまけに演算子オーバーロードとか無効化されるし
403デフォルトの名無しさん:2011/03/04(金) 14:38:54.51
int c;
int[] arr;
std.algorithm.countUntil(arr, c); // OK

int cc;
const(int[]) carr;
std.algorithm.countUntil(carr, cc); // だめ

うーん、通ってほしい…
404デフォルトの名無しさん:2011/03/04(金) 15:14:57.88
immutable COMMA = ",";
std.string.split("a,b,c", ","); // OK
std.string.split("a,b,c", COMMA); // (immutable(char)[], immutable(char[]))だから駄目と言われる

templateの引数チェックが鬼すぎるんだ
405デフォルトの名無しさん:2011/03/04(金) 22:04:11.01
あああもうDラヴ!D大好き!D愛してる!!
Dのない生活なんて考えただけで・・・

やだー!!
406デフォルトの名無しさん:2011/03/04(金) 22:51:12.24
407デフォルトの名無しさん:2011/03/04(金) 22:54:55.30
>>406
よせ、それはまだ極秘のプロジェクトだ
かかわると消されるぞ
408デフォルトの名無しさん:2011/03/05(土) 00:14:25.09
ところで std.zip や std.zlib の void[] ってどんなもんだとイメージすればいいの?
ubyte[] はイメージしやすいけど、似たようなもん?
409デフォルトの名無しさん:2011/03/05(土) 00:16:26.69
import std.regex;
void main() {
 .replace("a", .regex("a"), "b"); // ok
 .replace("a"w, .regex("a"w), "b"w); // compile error
 .replace("a"d, .regex("a"d), "b"d); // compile error
}

Dって楽しいなァアーハハハアハアハアハ
410デフォルトの名無しさん:2011/03/05(土) 00:22:01.25
>>void[]
有名進学塾に通う塾生達かな
空っぽの心で勉強だけひたすらしてるイメージ
411デフォルトの名無しさん:2011/03/05(土) 12:52:18.95
そろそろD言語で何か作ろうか
412デフォルトの名無しさん:2011/03/05(土) 13:39:22.72
>>ubyte[]
こっちは学校のトイレでタバコ吸ってるDQN達か。
噛み付くぞてめぇ!って粋がってるイメージ
413デフォルトの名無しさん:2011/03/05(土) 14:25:07.68
>>411
Dのプロジェクトなんて無数にあるぜ!
でも心の綺麗な人にしか見えないんだ
414デフォルトの名無しさん:2011/03/05(土) 14:35:04.70
415デフォルトの名無しさん:2011/03/05(土) 15:53:42.34
心のきたない俺は
空に瞬いている星と地に墜ちた星を見分けられる
ようになりたい
416デフォルトの名無しさん:2011/03/05(土) 16:10:17.11
必死になってD1からD2に移植してきたアプリがまともに動くようになってしまった
コンパイルエラーが出ない
const関係で詰んだりしない
unittestが意味不明な理由で失敗しない
循環static thisで落ちたりしない
どこからともなくHiddenFuncErrorが投げられたりしない
よくわからない箇所でアクセス違反が発生したりしない

虚しい…
417デフォルトの名無しさん:2011/03/05(土) 16:39:15.03
じゃあ次は >>414 に登録して星になるんだ
418デフォルトの名無しさん:2011/03/05(土) 16:47:57.97
D言語の人ってエディタ何使ってるんですか?
419デフォルトの名無しさん:2011/03/05(土) 16:53:22.99
サクラエディタにキーワード登録して使ってる
420デフォルトの名無しさん:2011/03/05(土) 17:02:55.72
emacsかVisualD
421デフォルトの名無しさん:2011/03/05(土) 17:32:44.81
DFL+scintillaで自作エディタ
422デフォルトの名無しさん:2011/03/05(土) 17:34:11.47
サクラエディタがもう一人。
VisualDはutf-8で保存してくれるようになったんかな。
423デフォルトの名無しさん:2011/03/05(土) 18:32:53.98
秀丸とマクロ
424デフォルトの名無しさん:2011/03/05(土) 18:40:03.66
VisualDうまく入れられなかった。
画像付きで解説してるところないですか?
あるいは誰か解説をしてもらえると幸いです。
425デフォルトの名無しさん:2011/03/05(土) 18:47:06.85
VisualD をGoogleの画像検索すると、1番上にそれらしいのが出るぞ
426デフォルトの名無しさん:2011/03/05(土) 18:59:34.66
サクラエディタ
Dの1_234.56みたいな数値定数とr""を認識してくれる設定ファイルが欲しい・・・
427デフォルトの名無しさん:2011/03/05(土) 19:07:17.03
>>424
VS2003〜2010のどれかをインストールしてる状態でVisualDをインストールしてDMDのフォルダを指定するだけじゃん
VS立ち上がったままでやったら駄目だぞ?
428デフォルトの名無しさん:2011/03/05(土) 19:15:14.70
>>426
`\"`とかやると変になるよな
正規表現キーワードとかで何とかなるのかしらん
429デフォルトの名無しさん:2011/03/05(土) 19:18:51.42
>>426
うまく機能してるか不安だけど

/(?<!\w)0[xX][\da-fA-F_]*(\.[\da-fA-F_]+)?([pP][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([\d_]+\.([\d_]+)?|([\d_]+)?\.[\d_]+)([eE][\+\-]?[\d_]+)?[fFL]?i?(?!\w)/k
/(?<!\w)([1-9][0-9_]*|0[bB][01_]+|0[xX][0-9A-Fa-f_]+|0[0-7_]*)(L|u|U|Lu|LU|uL|UL)?(?!\w)/k

/(`[^`]*`|(?<!\w)r"[^"]*"|(?<!\w)q"[^"]*")[cwd]?/k
430デフォルトの名無しさん:2011/03/05(土) 19:32:19.31
おっと、通常の""文字列と''の文字定数も必要なんだった
/((?<!\w)x"[\s0-9A-Fa-f]*"|(?<!r)"([^"\\\r\n]|\\.)*?")[cwd]?/k
/'[^']+'/k

標準機能の""と''の色付けは無効にして、全部正規表現キーワードでやってる
431デフォルトの名無しさん:2011/03/05(土) 19:32:30.51
おお、8進数まで認識する…
GJ
432デフォルトの名無しさん:2011/03/05(土) 20:37:02.75
正規表現キーワードは複数行対応したら神なんだが
433デフォルトの名無しさん:2011/03/05(土) 21:48:46.23
よし、サクラエディタはオープンソースなんだからD言語で実装し直そうぜ
434デフォルトの名無しさん:2011/03/05(土) 21:59:52.22
それはやらないのがDスタイルだろ?
435デフォルトの名無しさん:2011/03/05(土) 22:23:57.23
サクラエディタの描画周りのコードの汚さェ・・・
436デフォルトの名無しさん:2011/03/05(土) 22:27:40.81
今まで@propertyをメソッドの一行上に書くスタイルで書いてたんだが、

class Test
{
  @property
  void delegate() func()
  {
    return _func;
  }
  private void delegate() _func;
}
がコンパイル通らなくてびっくりした。

void delegate() @propertyっていう型に認識されてるっぽいんだが、そんなものあるのか?
まぁ今後はvoid delegate() func() @propertyって後置しようと思ってるから良いんだけど…
437デフォルトの名無しさん:2011/03/05(土) 22:42:55.96
後置ってそのためだったのか
438デフォルトの名無しさん:2011/03/05(土) 22:54:55.62
その@は句読点じゃなくてatという単語だったのかw
@property ってアノテーションと同じ感覚で書きたくなるよなあ
439デフォルトの名無しさん:2011/03/05(土) 23:06:13.31
Javaのアノテーションとpythonのデコレータも同じような書き方で全然意味が違ってややこしいのに
これ以上@に変な意味与えるのやめて
440デフォルトの名無しさん:2011/03/05(土) 23:17:33.18
@propertyとかを別の行に書くとgrepして検索した時に
プロパティってすぐ分からないから1行に書きたくなる俺は異端?
441デフォルトの名無しさん:2011/03/06(日) 06:26:20.24
前置の@propertyが高階関数に付けられなくても困らないかな?
442デフォルトの名無しさん:2011/03/06(日) 18:58:03.40
>>422
文字コードの話ならエディタでDのソースコードを開いている状態で
VSのファイルメニュー→「保存オプションの詳細設定」で変えられるぞ
ソリューションエクスプローラで.dファイルを選択しているだけだと出てこないのが罠
443デフォルトの名無しさん:2011/03/06(日) 20:54:45.48
128 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 05:21:24
VisualDがutf-8で保存してくれない……。

129 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 11:32:49
日本語が使えなくなるだけだと思えば許せる。
VisualDはVS2010のデバッガが使えるってだけで最高だけど、やっぱりインテリセンスがなぁ。

130 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/14(火) 17:42:21
ファイル→保存オプションの詳細設定でUTF-8に変えてくれる
デフォでUTF-8にして欲しいけどな

131 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 00:58:23
簡単に解決できそうな気がするけど。問題として認識されてないんだろうなあ。

132 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/15(水) 01:00:25
いつものパターンか
444デフォルトの名無しさん:2011/03/06(日) 21:02:38.90
>>443
VSの仕様って良く分からんけど、アドオン側からデフォルトの保存コードを変更できるもんなの?
VS本体でも変えられないのに
445デフォルトの名無しさん:2011/03/06(日) 21:29:46.06
俺もよくわからんが、VS本体でも変えられないってのはよくわからん。
保存オプションからコードは変えられるんだろ?
新規作成かなんかの時にアドオンからutf8にしてくれるなら、
別にVSの「デフォルトの保存コード」を変更する必要はなくね?
いや、そういうことができるのかはわからんし、結論としてはよくわからんが。
446デフォルトの名無しさん:2011/03/06(日) 21:32:29.56
メモ帳でBOMつき空ファイル作って
Visual D の新規ファイルのテンプレートに
突っ込んでやればいいんじゃないかな
447デフォルトの名無しさん:2011/03/07(月) 05:55:31.67
>>427
なんか、前はなぜまともにいかなかったのかわからないほどあっさりでけたw
これ、メソッドのインテリセンスはなし?
448デフォルトの名無しさん:2011/03/07(月) 10:50:50.27
Eclipse使い('A`)ノ
449デフォルトの名無しさん:2011/03/07(月) 14:11:28.12
インラインアセンブラのコンパイルエラー文が
標準出力に出ると気づかずに時間を無駄にした・・・統一して orz

コンパイラ     →エラー出力
インラインアセンブラ→標準出力
リンカ       →標準出力
450デフォルトの名無しさん:2011/03/07(月) 20:17:26.02
DWT2 with D2、何とか動くけどたまに異常に長時間固まるなぁ
どこを直せばいいことやら…
451デフォルトの名無しさん:2011/03/07(月) 20:56:17.87
>>450
dmd
452デフォルトの名無しさん:2011/03/07(月) 21:52:38.89
確かにphobosよりはdmdっぽい
453デフォルトの名無しさん:2011/03/07(月) 22:38:49.62
GCが悪さしてるとかじゃなくて?
454デフォルトの名無しさん:2011/03/07(月) 22:59:08.75
今core.sync.*ってまともに動くの?
455デフォルトの名無しさん:2011/03/08(火) 02:37:21.81
多分動く
456デフォルトの名無しさん:2011/03/08(火) 06:09:17.48
課題が山積過ぎて今何やってるのかさっぱりわからんのだが
457デフォルトの名無しさん:2011/03/08(火) 23:52:27.11
大丈夫だ。Dのコミュニティには船頭クラスの人材がゴロゴロいるからな
458デフォルトの名無しさん:2011/03/09(水) 00:04:09.01
船頭多くして山に登る・・・?
459デフォルトの名無しさん:2011/03/09(水) 00:08:55.70
船頭多くしてTIOBEランキングを登ってくれると良いんだが
460デフォルトの名無しさん:2011/03/09(水) 00:10:34.66
委員会設計と独裁者設計の悪いとこどりしてね?w
461デフォルトの名無しさん:2011/03/09(水) 01:08:10.12
クラスのポインタ取るのって void* でキャストとかすればよかったのね。。。
クラスは参照だっていうから、C++ のように & してたけどうまくいかなんだ。
emplace のソース見てはじめて知ったけど、常識?
462デフォルトの名無しさん:2011/03/09(水) 01:09:21.34
面接でD言語使ってますとアピールしたら不思議がられた。
463デフォルトの名無しさん:2011/03/09(水) 01:15:08.22
会社にもよるが、元々DelphiやらHaskellやらScalaやらを使ってます!みたいなところでもないかぎり
むしろ言わないほうがいいと思うぞ。
普通の会社はプログラミング言語といえばC系とJavaとC#とPHPぐらいしか選択肢がない。
464デフォルトの名無しさん:2011/03/09(水) 13:40:29.21
日本語訳サイトの更新キター と思ったら std.datetimeが英語だw
これは誰か翻訳手伝ってくれということだな・・・
465デフォルトの名無しさん:2011/03/09(水) 19:25:49.64
日本語サイトの中の人はたまに英文のまま公開してからゆっくり翻訳してる事があるから
つまり手伝ってあげて
466デフォルトの名無しさん:2011/03/09(水) 23:13:25.42
そういえば自分も構造体の継承が欲しかったんだけど、
alias this すれば近い感じで使えるのね。便利便利。
467デフォルトの名無しさん:2011/03/10(木) 10:58:53.05
だからクラス使おうぜ・・・
468デフォルトの名無しさん:2011/03/10(木) 13:59:19.02
Phobosにも構造体で実装されてるのが結構あるから、
そういう既存のものに自分機能をつけたいことはあるかもしれない。
469デフォルトの名無しさん:2011/03/10(木) 19:49:49.59
機能の追加には興味ないけど一つの配列に種類の異なるものを入れたりすることには興味ある
Variant使えばいいのか?
470デフォルトの名無しさん:2011/03/10(木) 20:04:22.60
この前たまたま見つけたんだけど
http://www.kmonos.net/alang/d/2.0/phobos/std_typecons.htmlのstruct Tupleのとこ
使えるのか?
471デフォルトの名無しさん:2011/03/10(木) 20:34:30.39
コンパイル時に型が決定してる必要がある
472デフォルトの名無しさん:2011/03/11(金) 10:58:32.61
>>469
継承
タプル
variant型

お好きなのをどうぞ。
473デフォルトの名無しさん:2011/03/11(金) 11:54:04.50
継承→事前定義の必要あり
タプル→型の順番はコンパイル時に決まる。その場で定義できる構造体に等しい。
variant→実行時に何でも入るが、実行時処理が増えるのと、値取り出しの型に関する処理が面倒。
って感じか。
474デフォルトの名無しさん:2011/03/11(金) 12:15:18.10
ああ、もう二つあった。
共用体
void*型
475デフォルトの名無しさん:2011/03/11(金) 12:46:56.80
variantは共用体やvoid*型に実行時型情報を加えた構造体ですな。
476デフォルトの名無しさん:2011/03/11(金) 12:52:01.96
誰か日本語シンボルを扱えるデバッガをつくってくれ

ローカルシンボルをすべて日本語で記述して
漢字かな混じり文の伝統を継ぐガラパゴス文化を創造するのだ

なに、全角英数が使えないだと・・・?
477デフォルトの名無しさん:2011/03/11(金) 13:02:08.85
>>476
言い出しっぺの法則。
478デフォルトの名無しさん:2011/03/11(金) 18:51:07.71
boxer それなりに便利だったんだけど、消滅する運命になってしまったね・・・。
なんでだろ。
ちなみに今使おうとするとコンパイラが落ちた気がする。

>>476
前お遊びでやってみたんだけど、いちいち日本語に切り替えるのが
めんどくさくてやめてしまった・・・。
全てを全角でかけないときついね。


地震怖かったー・・・!
479デフォルトの名無しさん:2011/03/11(金) 21:22:07.39
boxはvariantに置き換えられるだけでしょう
コンパイル時型情報を生かした高速なやつ
480デフォルトの名無しさん:2011/03/11(金) 21:27:43.79
地震後にD言語友の会が死んでてひやっとしたけど
中の人は神回避したらしい
481デフォルトの名無しさん:2011/03/12(土) 00:59:02.79
地震に巻き込まれて命を落とされたD言語利用者の御冥福をお祈りします
482デフォルトの名無しさん:2011/03/12(土) 01:41:34.72
itkz が ついったでデマ流したとかで叩かれてる
どのくらい関わっている人かよく知らんけど
483デフォルトの名無しさん:2011/03/12(土) 14:06:38.74
Visual D の更新が活発だ
ううむ、これは困ったぞw
484デフォルトの名無しさん:2011/03/12(土) 20:09:50.07
クラスのgetterからクラス内の配列をconstにして返してもらって
その配列をdupでコピーすると配列のメンバに変更を加えることができる
理屈としては問題ないんだろうけどなんか気持ち悪いなぁ…
485デフォルトの名無しさん:2011/03/12(土) 20:13:29.13
状況がよくわからんけどオリジナルに変更加えられるわけじゃないんでしょ?
変更したくないなら dup を const で受け取ったりすればいいのかな?
486デフォルトの名無しさん:2011/03/12(土) 20:34:48.92
>>485
>>484 は配列の要素がクラスの時じゃないか?
ttp://ideone.com/epioS

たしかにこれは気持ち悪いな
487デフォルトの名無しさん:2011/03/12(土) 21:11:29.93
>>486
なるほど、クラスか・・・。
これは気持ち悪い。
488デフォルトの名無しさん:2011/03/12(土) 21:32:09.28
推移的constが推移しないんだよな
489デフォルトの名無しさん:2011/03/12(土) 22:29:09.44
よくわからんが、const([]T) をdupしたら []T になっちゃうってことか?
本当は[]const(T)になってほしい、と。
490デフォルトの名無しさん:2011/03/12(土) 22:29:32.02
[]の位置が逆だ……ごめん。
491デフォルトの名無しさん:2011/03/12(土) 22:55:45.12
クラスの場合const(T)==const(void*)かmutable(T)==mutable(void*)かしか定義できない
const(void)*にあたるものがない
492デフォルトの名無しさん:2011/03/13(日) 00:53:53.49
http://ideone.com/8I6aK
http://ideone.com/hwZln
http://ideone.com/INckh

これを見る限りだと、単純にdupのバグっぽいな。
493デフォルトの名無しさん:2011/03/13(日) 06:26:28.93
>>409
パッチ上げられてたぞ
完全に直ってるのかしらんけど
494デフォルトの名無しさん:2011/03/13(日) 12:33:06.67
ifでテンプレート引数を絞り込むのって乱用するべきじゃないな
細かくやりすぎると>>409みたいに想定漏れを招く
どうせテンプレート内でエラーになるんだから通してしまえばいい
495494:2011/03/13(日) 12:33:57.11
>>404だった…
404だから見えなかったんだ
496デフォルトの名無しさん:2011/03/13(日) 15:11:09.55
>>494
これ、まさにコンセプトでも懸念されてたことなんじゃないか
497デフォルトの名無しさん:2011/03/13(日) 15:56:47.22
static if で実現できることはそっちでやった方がいいお

Constraint のシンタックスハイライトに対応するIDEは登場するのかなー?
498デフォルトの名無しさん:2011/03/13(日) 18:17:04.16
テンプレート制約って&&で繋げるよりもifの行を増やす方向の方がいいなあ
&&を使った今の状況だとどの条件に引っかかったかが長々と表示されてすげー分かりにくい
499デフォルトの名無しさん:2011/03/13(日) 19:39:02.33
プリプロセッサを無くした代わりにポストプロセッサが必要になりました、と
500デフォルトの名無しさん:2011/03/13(日) 20:13:11.61
>>498
というと、どうかく?
501デフォルトの名無しさん:2011/03/13(日) 20:22:39.33
>>500
std.container.SList.thisで例えれば、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff
    && isImplicitlyConvertible!(ElementType!Stuff, T)
    && !is(Stuff == T[]))
{
これを、
this(Stuff)(Stuff stuff)
if (isInputRange!Stuff)
if (isImplicitlyConvertible!(ElementType!Stuff, T)
if (!is(Stuff == T[])
{
こう書いて、引っかかったifを示してくれればいいなあとか思う
502デフォルトの名無しさん:2011/03/13(日) 20:35:55.68
>>501
いいかも
503デフォルトの名無しさん:2011/03/13(日) 20:47:43.33
ubyte* p;があるとして
ubyte[] r = p[0..n];したときのrってスタック上に確保されないで
ヒープ上でnewされてRangeかなんかのインスタンスになっちゃいます?
504デフォルトの名無しさん:2011/03/13(日) 21:39:08.41
それだけでは、内容のコピーはされない。pの示す先を直接参照する格好
r ~= 0; などすればコピーされるけど
505デフォルトの名無しさん:2011/03/13(日) 22:20:08.61
>>504
rの持ってる情報ってpへのポインタとlengthくらいだと思うんですけど
これはスタック上かGC管理のヒープ上のどちらに確保されるんでしょうか
506デフォルトの名無しさん:2011/03/13(日) 22:33:36.37
>>503の例だと新たに確保はされず、「共有」される
507デフォルトの名無しさん:2011/03/13(日) 22:51:20.65
>>506
ありがとうございます
508デフォルトの名無しさん:2011/03/13(日) 22:53:34.34
lengthどこ行った?
509デフォルトの名無しさん:2011/03/13(日) 23:00:33.68
こういうソース見て目からウロコが落ちた、と思った
union{
 wchar[] dstring;
 DStringW filename; // 配列ヘッダの構造体
}
struct DStringW{
 uint length;
 wchar* pointer;
}
510デフォルトの名無しさん:2011/03/13(日) 23:23:15.97
特に珍しい構造でもあるまい
511デフォルトの名無しさん:2011/03/14(月) 10:01:45.79
>>505
コンパイラによる。
でもそもそも、本当にそんなことを気にしないといけないプログラムを作っているのか?
512デフォルトの名無しさん:2011/03/14(月) 19:42:01.87
>>492
ttp://ideone.com/9H6Mn
合法な節税を積み重ねてたら税務署に怒られたIBMの気分だぜ
513デフォルトの名無しさん:2011/03/14(月) 19:59:37.65
immutableとクラスは今かなり水と油だなあ
514デフォルトの名無しさん:2011/03/14(月) 20:07:54.19
>>512
プログラムの内容が現象とマッチしていてすばらしいw
515デフォルトの名無しさん:2011/03/14(月) 20:24:22.92
>>513
いや、ただ単にdupが酷いだけ。
516デフォルトの名無しさん:2011/03/15(火) 07:36:03.45
そういえばコンパイル時乱数、なんてできんのかな??
かぶらない変数名の定義とかに使いたい(__LINE__ がうまく動けばそれで良い話だが・・・)。
517デフォルトの名無しさん:2011/03/15(火) 09:27:41.90
むしろ乱数だったら希少な確率で被って、再現性のないコンパイルエラーになるんでは。
もう一回コンパイルしたら何故か通る。
518デフォルトの名無しさん:2011/03/15(火) 11:54:27.50
>>516
配列使えよ・・・
519デフォルトの名無しさん:2011/03/15(火) 15:19:13.69
>>517
そこはあれですよ。種を変えてその場をしのぐ。

>>518
乱数もそうだけど、配列にしてもどこかで状態を保持しないといけないね。
やり方わからん。。。
520デフォルトの名無しさん:2011/03/15(火) 15:32:34.88
予めファイルに乱数列を書きだしておいてimport()で読み込むとかどうッスか
521デフォルトの名無しさん:2011/03/15(火) 15:45:13.11
>>519
環境変数とかどう
522デフォルトの名無しさん:2011/03/15(火) 16:38:51.09
セシウムをデクリメントするスーパープログラムはないのかっ!
523デフォルトの名無しさん:2011/03/15(火) 16:52:10.76
おまえら、乱数で変数名を決めるとか、愚策だって分ってるんだよな?
524デフォルトの名無しさん:2011/03/15(火) 17:16:17.84
ええ、そりゃもう分かってますw
525デフォルトの名無しさん:2011/03/15(火) 17:17:21.81
__LINE__ がちゃんと動けばそれでいい。けど動かないから・・・。
526デフォルトの名無しさん:2011/03/15(火) 17:32:30.12
__RANDOM__
527デフォルトの名無しさん:2011/03/15(火) 17:34:13.27
使い込むと数百回に一回しかコンパイルが通らない神コードが出来ます
528デフォルトの名無しさん:2011/03/15(火) 17:39:23.84
ストカスティックプログラミング!
529デフォルトの名無しさん:2011/03/15(火) 19:25:42.77
Dにもgensymだと……?
530デフォルトの名無しさん:2011/03/15(火) 19:27:17.52
やはりプリプロセッサを
531デフォルトの名無しさん:2011/03/15(火) 21:50:05.37
>>520
そういやdmd本体もまずソースコードを生成するプログラムを作ってから
そいつで生成したコードを改めてコンパイルしてた気がする

makeの話題で build.d 書けば、みたいな話が出てたし
一つのソースに収まらない事を気にしなければ簡単にできそうだ
532デフォルトの名無しさん:2011/03/15(火) 22:58:56.70
コンパイル時にこういうの使えない?

import std.process;
import std.conv;

string getUniqID()
{
    string id = environment["uniq_id"];
    environment["uniq_id"] = to!string(to!int(id) + 1);
    return id;
}
533デフォルトの名無しさん:2011/03/16(水) 13:12:43.75
>>532
コンパイル時に環境変数を書き変える・・・?

まあたぶん、これでやりたいことは出来るだろう。
http://www.kmonos.net/alang/d/2.0/rdmd.html
534デフォルトの名無しさん:2011/03/16(水) 13:16:35.52
ああそれとも、コンパイル時にバージョン番号を自動的に+1させたいのかな?
そういうツール、探せばあると思うけど。(Dでも使える無料のが。自分で作ってみるのも一興。)
535516:2011/03/16(水) 14:36:35.00
みなさんすいません。
やりたいことは RAII を使ったクラスに対して new するような
テンプレートミックスインを作って運用したいんだけど、
入れ子にしたときに変数名がかぶるのを避けたい、ということです。
例えば

template Hoge()
{
mixin("scope auto hoge = new ScopeHoge();");
}

を使って

{
mixin Hoge!();
〜処理〜
{
mixin Hoge!(); // 変数名衝突?
}
}

ていう使い方も出来るようにしたいんです。
行番号を変数名にくっつけられれば避けられるんですけど、
現状それができないなぁ、という感じです。
今は mixin Hoge!(__LINE__) というように使えばいいか。
536516:2011/03/16(水) 14:36:49.78
と思ったんですけど、あれ?
今やってみたらコンパイル通りました。

mixin template Hoge()
{
scope auto hoge = new ScopeHoge();
}

でも普通にコンパイル通りますね。意図通りに動いているかどうかは
まだ確認していないですけど。。。
537デフォルトの名無しさん:2011/03/16(水) 14:52:00.10
rdmdて使ったこと無いんだけど、
ソースが書き換わらない場合でdmdの実行と比較して、
やっぱり遅いよね?
普通に考えればソースファイルのチェックしなきゃだし。
538デフォルトの名無しさん:2011/03/16(水) 17:46:41.54
>>536
http://www.kmonos.net/alang/d/2.0/template-mixin.html
>Mixinの中の宣言は、周囲のスコープに 'import' されます。 Mixinの中の宣言と同じ名前の宣言が周囲のスコープに存在した場合、 周囲のスコープの宣言が、 Mixinのそれを上書きします
らしい。

>>537
別に重くても問題無いでしょ。
539516:2011/03/16(水) 18:10:00.70
>>538
どうもありがとう。
もう __LINE__ を渡すようにしてやってみるわ・・・。
今は何故かスコープクラスのデストラクタが呼ばれないことがあるのを調査中・・・。

ちなみに処理計測のスコープクラスです。
540516:2011/03/16(水) 20:20:40.82
わーお。
テンプレートでミックスインしてその中で new したスコープクラスの
デストラクタ呼ばれないっぽい。
素直に new と書くか・・・。
541デフォルトの名無しさん:2011/03/16(水) 20:36:51.32
>>539
そんなことするなよ。
代わりに、aliasパラメタを使って何とかしようぜ。
テンプレートの外で宣言したシンボルを、テンプレートに渡すんだ。
たぶんいける。
542516:2011/03/16(水) 21:00:10.02
>>541
aliasパラメタね。やってみる。ありがとう。
543デフォルトの名無しさん:2011/03/16(水) 22:08:16.09
>>542
aliasじゃ無いが、文字列ミックスインを使った方法でやってみた。
http://ideone.com/mQRdZ
544デフォルトの名無しさん:2011/03/16(水) 22:15:36.80
>>542
もっと簡単な方法を見逃していたww
http://ideone.com/xHCQa
545516:2011/03/16(水) 22:20:10.22
>>543
ありがとう。
自分も文字列ミックスインでスコープクラスの new まで
出来たんだけど、スコープ抜けてもデストラクタが呼ばれなくて・・・。

alias パラメタって、外部のパラメタ渡すということは外部の宣言を
渡すのかな?
なかなか出来ないんだけど、そもそも1行でかけないと意義薄いかも・・・。
546516:2011/03/16(水) 22:21:29.64
>>544
おっと!やってみる!
547516:2011/03/16(水) 22:28:06.18
>>544
出来たけど出来ない・・・!
デストラクタ、仕事しろ!

最新の dmd で試してみる。不具合報告が多かったから
躊躇してたんだけど。
548デフォルトの名無しさん:2011/03/16(水) 22:32:11.16
newとペアで
scope(exit)delete xx;
もmixinしてみたら?
549デフォルトの名無しさん:2011/03/16(水) 22:34:42.21
あともうひとつ。
ストレージクラスのscopeは今後廃止されるかもしれないので、
scope(exit)文でdeleteするのが無難かもしれない。
550516:2011/03/16(水) 22:40:40.53
>>549
なるほど、ありがとう!試してみる。
ちょっと気になるのが、scope クラスの new って
スタックへのクラスインスタンス割り当てだったと思うので
無くなったら効率面でちょっと気になるな・・・。

ちなみに最新にしたら std.datetime がすごい行数になって
コンパイルも通らない・・・!
ワクワクしてきた!

そして地震にハラハラ。
551デフォルトの名無しさん:2011/03/16(水) 22:41:10.37
本当にデストラクタ呼び出されないの?
552516:2011/03/16(水) 22:53:08.91
>>551
デストラクタで writeln しておいて、普通に new した場合は
コンソール出力されるけど、テンプレートミックスインすると何もされない。。。

最新では試せてないけど。
553デフォルトの名無しさん:2011/03/16(水) 23:03:24.06
あれ?なんでtemplate mixin挟むとコンパイル通らないんだろう・・
どこかおかしいですか?

http://ideone.com/J6M6n
http://ideone.com/uGibM
554デフォルトの名無しさん:2011/03/16(水) 23:20:16.08
>>553
そのコードだけで言うなら、mixin templateにし忘れている。
555デフォルトの名無しさん:2011/03/16(水) 23:20:42.02
>>553
template test() -> mixin template test()
とか?
556デフォルトの名無しさん:2011/03/16(水) 23:24:09.68
>>552
逆転の発想もあるけどね
http://ideone.com/D52RZ
557デフォルトの名無しさん:2011/03/16(水) 23:27:46.82
>>552
アド貼り間違えた・・
http://ideone.com/UusDr

>>554, 555
だめぽい・・
http://ideone.com/Tg0kV
558516:2011/03/16(水) 23:30:13.44
>>556
あー、なるほど!おもしろい。
ちょっと検証してみる。
ありがとうです。
559デフォルトの名無しさん:2011/03/16(水) 23:40:24.70
>>557
バグだあ!
560デフォルトの名無しさん:2011/03/16(水) 23:47:34.10
>>559
うむ、うれしそうだ
561デフォルトの名無しさん:2011/03/17(木) 00:06:48.57
mixinで scope(exit)をねじこむだと・・・!?
俺がウォルたんならそんな使い方は蹴る。てか泣いて謝る
562デフォルトの名無しさん:2011/03/17(木) 00:27:41.99
>>556
void watcher(void delegate() f)

void watcher(scope void delegate() f)
に変えると最適化が効いて普通の関数呼び出しと同じくらいの速さになるらしいよ
563デフォルトの名無しさん:2011/03/17(木) 00:31:12.32
何その scope ・・・!
知らなかった。
ってか、scope って意味が多すぎ。
564516:2011/03/17(木) 00:39:36.53
最新でやっと動くようになったけど、相変わらずデストラクタ呼ばれなく、

mixin template Foo()
{
 scope auto rec = new Foo();
 scope (exit) delete rec;
}

ってやると
>>557
と同じコンパイルエラーが出る。。。
565デフォルトの名無しさん:2011/03/17(木) 00:45:27.81
Scopedじゃ駄目なのか?
566デフォルトの名無しさん:2011/03/17(木) 01:05:53.40
>>564
mixin template の中は宣言しか書けない

class Foo
{
 scope auto rec = new Foo();
 scope (exit) delete rec;
}
とやって書けないのと同じ

文字列ミックスインでねじこめないのも同じ
567516:2011/03/17(木) 01:16:29.30
そもそも

mixin template Foo()
{
 scope auto rec = new Foo();
}
と書けてしまうのがおかしい?

まぁ諦めて普通に書きます。
みなさんありがとう。
568516:2011/03/17(木) 05:47:03.81
っつーか、RAII なら構造体使えばいいことに気付いた・・・。
scope とか new とか書かなくていいし。
注意するのは引数無しのコンストラクタが使えないくらいか。

ストレージクラスのscopeが無くなるのは構造体使えばいいからなのかな。
569デフォルトの名無しさん:2011/03/17(木) 07:55:41.31
>>568
しかし構造体の一時オブジェクトはデストラクタが呼ばれないバグがあるらしい
570デフォルトの名無しさん:2011/03/17(木) 13:59:09.89
もう、関数テンプレートでいいや。
http://ideone.com/WJPZe

ていうか、関数テンプレート使えばよかったんじゃね?
571デフォルトの名無しさん:2011/03/17(木) 14:10:21.09
572516:2011/03/17(木) 17:36:35.36
>>569
なんと!?今のところ大丈夫そうだけど・・・。
念のためユニットテスト用意してチェックしておく。
バグも調べてみます。ありがとう。

>>570-571
使う側から見て、シンプルにできるのかな。
1行で書けると見通しがいいので、やっぱり RAII が便利だなぁ。

でもありがとう。覚えておきます。
573デフォルトの名無しさん:2011/03/17(木) 17:49:40.87
http://ideone.com/S1TMB
こういうことがあるので構造体は毎回ちゃんとした変数にいれたほうがいい
574516:2011/03/17(木) 17:54:21.07
>>573
なるほど。
確かにちゃんと変数に入れてた。だから大丈夫だったのか。
重ね重ねどうもありがとう。
575デフォルトの名無しさん:2011/03/17(木) 18:07:44.46
>>573
なにこれこわい
576デフォルトの名無しさん:2011/03/17(木) 18:24:37.27
ほんと直して欲しい
577デフォルトの名無しさん:2011/03/17(木) 18:28:33.44
578デフォルトの名無しさん:2011/03/17(木) 19:43:30.04
>>572
プログラムを理解するのに必要なコードが、変に分散したり、複雑に絡みあったりしなければ読みやすい。
行は関係ない。
579516:2011/03/17(木) 19:57:52.46
>>578
でも同じことするのに1行で書ける方法があるならそっちがいい。
コピペしなくてもいいように mixin とかできるならいいかもしれない。

ということで RAII で最低限満たしているから今のところそれでいいかなと。
580デフォルトの名無しさん:2011/03/17(木) 20:23:24.75
>>579
結局の所、何かやりたいのかよく分からないから、曖昧なレスしか出来ないんだよね。
なんでmixinの中でscope付ける必要があるんだろう?
581516:2011/03/17(木) 20:53:02.70
>>580
元々は C++ で実装していたようなことを D で実現したくて、
書き方も似たようなシンプルなものにしたかったのね。
んでマクロは無いけどテンプレートとか使えばできるかなぁと
やってみたんだけど、色々無理そうなことがわかった、という感じかな・・・。

みなさんどうもありがとう。勉強になりました。
そろそろ消えようと思います。
582デフォルトの名無しさん:2011/03/17(木) 20:55:21.79
マクロ的な事なら文字列mixinがおすすめよ
583デフォルトの名無しさん:2011/03/17(木) 20:59:44.74
C++でいうところのこういうの作りたいんだとエスパー

class Time
{
  time_t t_;
public:
  Time(){t_ = time(NULL);}
  ~Time(){printf("処理時間:%d\n", time(NULL) - t);}
};

int main(){
  Time t0;
  {
    Time t1; // この変数名がかぶらないようにmixinで変数名を自動割り当てしたい
    doSomething1();
  }
  doSomething0();
  return 0;
}
584デフォルトの名無しさん:2011/03/18(金) 12:19:22.97
>>582
文字列 mixin は試したみたいよ。
585デフォルトの名無しさん:2011/03/19(土) 16:42:40.32
テキストファイル読み込みをUTF-8エンコーディングしながら読みたいんですけど
std.encodingってどうやって使うんでしょうか

それとBufferdFileでファイルを開いてreadLineしたものをstd.encodingで
stringにして使おうと思ってるんですけどこのやり方って一般的ですか?
586デフォルトの名無しさん:2011/03/19(土) 16:45:40.29
std.encodingは使えないモジュールNo1候補だよ
使い方も意味不明だしもちろんMS932ことshift jisには対応してないよ
587デフォルトの名無しさん:2011/03/19(土) 16:48:02.62
>>586
まじですか、なんという・・・
588デフォルトの名無しさん:2011/03/19(土) 16:49:48.47
str = std.c.windows.charset.fromMBSz((str ~ "\0").ptr)
とかやればSJISからUTF-8に変換できるかな?
589デフォルトの名無しさん:2011/03/19(土) 17:23:22.21
Windowsのコードページに従って変換したいのか、SJIS決め打ちで変換したいのかは一考しろよ
590デフォルトの名無しさん:2011/03/19(土) 17:30:02.78
一応貼っとく。コンパイル通るのかは知らんが。
http://www.wikihouse.com/sakurai/index.php?DJcode
591デフォルトの名無しさん:2011/03/19(土) 18:42:54.96
>>589
Shift-JIS/JIS/EUC/UTFに関わらずテキストファイルを読み込んだ時点で
UTF-8として読み込むようなイメージです

>>590
まさにJCodeですね ありがとうございます試してみます
592デフォルトの名無しさん:2011/03/19(土) 23:30:18.85
jcode使って自動判別させるなら一行ずつ渡すと誤判定ありそうだし、
頭から何百バイトか渡して判別だけして、あとは毎行変換って感じになる?
なら、個人的にはファイル読み込みが二度手間になるのが嫌な感じなんで、
std.file.readで一気に読み込んで変換してstd.string.splitlinesかなあ。
まあ凄いデカいファイルを想定してる場合はしゃーないが。
593デフォルトの名無しさん:2011/03/20(日) 00:24:46.91
>>355あたりのバグさっさと直んないかなあ
dateからdatetimeに直したからもう戻れねえ・・・
594デフォルトの名無しさん:2011/03/20(日) 01:19:41.25
パッチが出てるから先に当てればいいよ
595デフォルトの名無しさん:2011/03/20(日) 06:28:45.86
>>594
ありがとう
bugzillaとか使いこなせる人が羨ましいなあ
596デフォルトの名無しさん:2011/03/20(日) 17:11:56.14
splitlinesいいね
foreachと組み合わせて手軽に行毎の処理できるんだ
597デフォルトの名無しさん:2011/03/21(月) 01:05:37.17
>>357
の irrlichtポーティングがとりあえず動くようになってた

一方 swigは書式がよくわからん上に
インタフェースファイル修正→変換が遅くてやってられん 頭痛くなったorz
598デフォルトの名無しさん:2011/03/21(月) 10:44:14.20
すみません・・・これなんでしょう?
http://ideone.com/Ks6qI

・デストラクタのthis参照がだめ?
・それ以外に不正なコードがある?
・std.convがダメ?
・GCがダメ?
・その他?

csv設定ファイルをキャッシュする処理に連想配列を使ったら、
やけに落ちるなーと思って追いかけてったらこんな感じですっごく困ってます。
599デフォルトの名無しさん:2011/03/21(月) 11:27:12.11
>>598
D2.052+Windows だとコンパイルエラーもなく
実行できてそれなりのログも出た

そこのツールはD2.042

結局どこで困ってるのかわからん
600デフォルトの名無しさん:2011/03/21(月) 11:29:28.39
>>598
text関数って内部でto!string()してるからcast(void*)とかしちゃだめじゃない?
void*ってto!string()できないから。
http://ideone.com/THXpl

>>599が最新のdmdだといけるって言ってるからstd.convのバグだろうね
とりあえずcast(ubyte*)thisにすれば2.042でも回避できる。
601デフォルトの名無しさん:2011/03/21(月) 11:41:28.39
2.042→2.052間でconv.dめちゃくちゃ修正入ってるけどここ直したら行けた

【誤】
/**
Pointer to string conversions prints the pointer as a $(D size_t) value.
*/
T toImpl(T, S)(S value)
if (isPointer!S && !isSomeChar!(typeof(*S.init)) && isSomeString!T)
{
return to!T(cast(size_t) value, 16u);
}



【正】
/**
Pointer to string conversions prints the pointer as a $(D size_t) value.
*/
T toImpl(T, S)(S value)
if (isPointer!S && (!is(typeof(*S.init)) || !isSomeChar!(typeof(*S.init)))
&& isSomeString!T)
{
return to!T(cast(size_t) value, 16u);
}
602598:2011/03/21(月) 11:45:47.85
Linux DMD2.052/2.051で再現してます。

cast(void*)が未定義だとかで悪いんなら良いんですが、
どうもそうでなさそうな感じなんですが・・・
先のソースも"remove test:"の箇所を若干書き換えるだけで
再現したりしなかったりします。

問題なのは、同じく文字列の連想配列を持つcsvの設定ファイルを
キャッシュるクラスが頻繁にクラッシュしてまして。
※元のソースはcast(void*)はありませんでした。

ダンプを取ったらconvの中だったり、utf.encodeの中だったりで
メモリアクセス関連か、convなのかと思っていましたが・・・
原因がわからない状態だと、対処もできず困ってます。
603デフォルトの名無しさん:2011/03/21(月) 11:51:41.81
>>602
GCによる解放順序は未定義なのでデストラクタではクラスメンバのインスタンスだろうがアクセスするのはアウト
デストラクタの中でハッシュにアクセスしたりしてないですか?
604デフォルトの名無しさん:2011/03/21(月) 12:08:26.78
>>602
C++の感覚でデストラクタ使っちゃだめ
http://ideone.com/7XXFl
605デフォルトの名無しさん:2011/03/21(月) 12:43:59.57
メモリ解放系の後処理を放棄してGCに任せるか
明示的にdeleteやらdisposeを作って呼ぶってことか
scope(exit)と組み合わせて何とかなるのかな
606デフォルトの名無しさん:2011/03/21(月) 12:50:53.12
今は標準ライブラリの中でGC依存してるから努力しても無駄な気もする
607598:2011/03/21(月) 12:51:51.93
ありがとうございます。
デストラクタはthisのキャスト以外してなかったと思いますが、
デバッグの過程で色々とやり過ぎたかもしれません。
デストラクタ中心にもうちょい追ってみます。
608598:2011/03/21(月) 13:54:50.14
全力のデストラクタ全消しで安定しましたorz

デバッグのログ出力に問題があったということか…
ありがとうございました。
609デフォルトの名無しさん:2011/03/21(月) 20:37:07.95
const int i = 0;
auto j = i;

これだとjの型はconst intと推論されるらしいのですが、
intと推論して欲しいときはどう書けば良いのでしょうか。
C++の型推論と同じかと思っていたら違っていたので驚きました。
610デフォルトの名無しさん:2011/03/21(月) 20:51:31.17
>>609で型推論からconstを外して欲しい局面が思いつかない
この場合は普通に宣言する

逆にconst外れちゃうようじゃ安全性に問題あるよね?
const A a = new A;
auto b = a;
とかbを通してaの中身触れちゃうし
611デフォルトの名無しさん:2011/03/21(月) 20:52:51.78
それはもうautoじゃなくてintって書くしかないんじゃないか。
どうしても推論させたいなら
auto j = cast(int)i;
とか、とにかくintって具体的な型名書きたくないなら
Unqual!(typeof(i)) j = i;
とか。
612デフォルトの名無しさん:2011/03/21(月) 21:06:54.73
Unqualで
613デフォルトの名無しさん:2011/03/21(月) 21:27:01.99
const int i = 0;
const int j = 0;
auto k = i + j; //const int

実際はimmutableな値とimmutableな値の和をmutableな変数に入れたかったのですが
これもだめみたいなので。

auto l = i + j + 0; // int
抜け道を見つけたのでしばらくこれでごまかしておきます。

それとcodepadだと>>609のjはintと推論されてしまうみたいですね。
614デフォルトの名無しさん:2011/03/21(月) 23:02:08.85
codepadってD1だっけ
615デフォルトの名無しさん:2011/03/21(月) 23:09:51.80
ちょっと古いD2だったと思う

2.042くらいだったかな
10×10個くらいは破壊的変更が入ってることになりますね
616デフォルトの名無しさん:2011/03/21(月) 23:16:49.39
残念ながらD1.026
http://codepad.org/7fhqL4n4
617福盛俊明:2011/03/22(火) 00:42:43.06
アハ〜♪”
618デフォルトの名無しさん:2011/03/22(火) 02:36:45.27
2.042なのはcodepadじゃなくてideoneだな
619デフォルトの名無しさん:2011/03/22(火) 04:19:43.78
620デフォルトの名無しさん:2011/03/22(火) 06:48:19.26
>>616
>>618
本当だ
勘違いすまぬ
621デフォルトの名無しさん:2011/03/22(火) 06:48:52.44
>>613見て思ったけど、constな左辺値がconstに推論されるのに、
constではない右辺値がconstではなく推論されるのは……いいんだろうけどどうなんだ。
622デフォルトの名無しさん:2011/03/22(火) 09:59:52.45
>>613
抜け道というか、落とし穴になりそうだな
623デフォルトの名無しさん:2011/03/22(火) 13:15:59.11
D3っていつ出るの?
624デフォルトの名無しさん:2011/03/22(火) 13:40:57.28
引数の宣言のように
 inout k = i + j;
でimmutable, constを引き継いで
 auto k = i + j; // mutable
 const k = i + j; // const
とかなってくれたら分かりやすい気がするがなぁ…
625デフォルトの名無しさん:2011/03/22(火) 13:43:11.84
明日
626デフォルトの名無しさん:2011/03/22(火) 19:12:19.79
明日っていつ?
627デフォルトの名無しさん:2011/03/22(火) 21:05:06.91
なんかD3が出て今のD2が安定版扱いになるのって、
結局のところ複数のバージョンに対応するライブラリ作ってる人の手間が増えるだけじゃねえの? って気がする。
628デフォルトの名無しさん:2011/03/22(火) 21:21:58.24
普通は安定版になったら喜ぶんだけどな
安定版を死骸と同一視するマゾのなんと多いことか
629デフォルトの名無しさん:2011/03/22(火) 21:40:12.70
安定版になるには、bugzillaの消化ペースをもっと上げないとなあ
630デフォルトの名無しさん:2011/03/22(火) 23:08:30.48
D1が安定しているという幻想をぶち壊す
631デフォルトの名無しさん:2011/03/23(水) 08:05:55.28
                       ヘ(^o^)ヘ いいぜ
                         |∧  
                     /  /
                 (^o^)/ てめえがD1が
                /(  )    安定しているというなら
       (^o^) 三  / / >
 \     (\\ 三
 (/o^)  < \ 三 
 ( /
 / く  まずはそのふざけた
       幻想をぶち壊す
632デフォルトの名無しさん:2011/03/23(水) 14:46:59.21
上のほうで使ってる人に触発されてluad触ってるんだが、構造体渡そうとするとdmd落ちた。
渡そうとしてた構造体の中のunittest消したら通ったんで、
すげえ釈然としないが同じ症状で悩んでる人のためにメモ。
633デフォルトの名無しさん:2011/03/23(水) 14:57:38.87
luad内の"__traits(allMembers"付近をいじってunittestを無視するようにすれば解決するかもしれない
634デフォルトの名無しさん:2011/03/23(水) 19:07:41.91
datetimeのunittestが通らない件
Windows
635デフォルトの名無しさん:2011/03/23(水) 21:10:52.29
ubuntu64bitにインストールできません。
debファイルは「amd64用じゃない」と怒られるし、zipの方は「librtが無い」と怒られる(あるのに)。
やり方知っている方いたら助言お願いいたします。
636デフォルトの名無しさん:2011/03/23(水) 21:32:55.25
gcc-multilibをインストールしたらdmdできるようになりました
debファイルの方はやっぱりインストール怒られる
637デフォルトの名無しさん:2011/03/23(水) 21:55:40.91
いや、コンパイル時にdmd -m64 すればいいだけでした。(zipからインストールの時)
debファイルはアーキテクチャ無視のインストールでいけるのかな。
638デフォルトの名無しさん:2011/03/23(水) 22:00:50.26
64bitマシンとOSは手に入れたが-m64はこわくて試せない
639デフォルトの名無しさん:2011/03/23(水) 22:09:27.76
君はそれでもDゲンガーかね
640デフォルトの名無しさん:2011/03/23(水) 22:20:47.47
なるほど、デフォルトでは常に32bitコードとしてコンパイルするのね。
641デフォルトの名無しさん:2011/03/23(水) 22:49:37.29
せいぜいDゴース
642デフォルトの名無しさん:2011/03/24(木) 00:08:44.99
D言語からperlとかのスクリプトを実行したいんですけど、
どうすれば良いですか?
643デフォルトの名無しさん:2011/03/24(木) 00:57:27.69
http://www.kmonos.net/alang/d/2.0/phobos/phobos.htmlを見て
プロセスに関係ありそうなのはstd.processかな・・・みたいに見当を付けるんだ
644デフォルトの名無しさん:2011/03/24(木) 01:14:34.36
>>643
どうもありがとう
645デフォルトの名無しさん:2011/03/24(木) 13:35:46.22
perl.dを書くところからかと思った。
646デフォルトの名無しさん:2011/03/24(木) 14:49:11.76
libperlってC++だったよな…
647デフォルトの名無しさん:2011/03/24(木) 15:12:22.85
テキストボックスのクリックされた行を知りたい

クリックされるとワードが選択状態になるので
選択範囲の位置とテキスト全体から改行文字を数えよう

日本語を含む場合に行ズレが

テキストボックス:SJIS 2バイト
文字列データ: UTF8 3バイト

orz       今ココ
ハジメテ シッタゼ
648デフォルトの名無しさん:2011/03/24(木) 15:21:15.19
Windowsと仮定して、なんでGetWindowTextWとwcharを使わないんだ?
649647:2011/03/24(木) 16:45:16.28
文字位置から行数を取得というのは解決。ちゃんとAPIを探すべきだった。

wcharか・・・まあ考えておきまひょ
650デフォルトの名無しさん:2011/03/24(木) 18:59:08.21
テキストボックスだと?
DでGUIプログラミングをやるような覇王級の猛者がまだいたのか…
651デフォルトの名無しさん:2011/03/24(木) 19:52:33.44
DWT2 のD2対応が更新されてるな
たぶん今月頭に誰かがパッチを送った内容だと思うけど

さあみんな、これで安心してGUIプログラミングできるな!!!
652デフォルトの名無しさん:2011/03/24(木) 20:14:07.12
うわマジだ
パッチ送ってから色々あって一週間くらいやり取りが途絶えてたからてっきり忘れられてるものだと
ここの人達に感謝

DLL不要で/機能が揃っていて/マルチプラットフォームで/コードがDネイティヴで
という条件をつけるとDWTが唯一のGUIライブラリになっちゃうから何とか生存してほしいなぁ
653デフォルトの名無しさん:2011/03/24(木) 23:48:37.57
DWTのライセンスってここ見ると「おそらくCPL」って書いてあるけど
実際のところ何なんですか?
http://dusers.dip.jp/modules/wiki/?Libraries%2FDWT

CPLって
・ソースの無断変更はNG
・無保証
・ライブラリを使用して作ったバイナリにはライセンスは適用しない
って認識でOK?
654デフォルトの名無しさん:2011/03/24(木) 23:53:47.55
>>653
実際にはコード中にEPLと書かれてる
ttp://sourceforge.jp/projects/opensource/wiki/licenses%2FEclipse_Public_License
ttp://ja.wikipedia.org/wiki/Eclipse_Public_License

GPLと互換性が無いんだよな…
655デフォルトの名無しさん:2011/03/25(金) 00:13:20.59
>>654
読みましたd
ライブラリ使用者側としては「DWTを使ってるけど何かあってもDWT作成者には責任はないです」
っていうのをDWTのリンクに添えて書いておけばソース開示なしで商用利用も可能って感じかな
間違ってたら突っ込みお願いします
656デフォルトの名無しさん:2011/03/25(金) 01:08:41.32
Cのソースを手っ取り早くDに書き直すとき、
exit(0)とかはとりあえずthrow new Exception("exit(0)")してるんですが、
もっとそれっぽいのありますか。
657デフォルトの名無しさん:2011/03/25(金) 01:39:29.24
std.c.stdlib.exit(0);
658デフォルトの名無しさん:2011/03/25(金) 05:51:23.20
// s.d
struct S { private int n; }

// main.d
import s;
void main() { S s; s.tupleof[0] = 10; }

が通っちゃうらめえ。
659デフォルトの名無しさん:2011/03/25(金) 07:03:40.65
tupleofでprivateメンバにアクセスできるのかー
またバグなのか仕様なのかよくわからない動作なのか
660デフォルトの名無しさん:2011/03/25(金) 09:35:56.30
private とか static とか deprecated とか この辺はバグ満載な感じ
修正優先度も低そうだし
661デフォルトの名無しさん:2011/03/25(金) 10:53:28.69
-m64であえなく玉砕。
リンカが通らないorz
662デフォルトの名無しさん:2011/03/26(土) 05:03:56.50
これ何か間違ったことしてます?
http://ideone.com/OHI9o
663デフォルトの名無しさん:2011/03/26(土) 06:05:47.20
テンプレート関数はまだオーバーロードできなかった気がする
664デフォルトの名無しさん:2011/03/26(土) 08:07:10.82
>>658見て気づいたが、構造体リテラルでprivateメンバも設定できるのな。
privateメンバあるなら大抵コンストラクタもあるだろうから問題はないだろうけど、なんか微妙に気持ち悪い感じ。
665デフォルトの名無しさん:2011/03/26(土) 12:17:31.60
>>664
>>658の場合は

auto s = S(42);

ができるんだよなぁ
privateは見えない建前だから、その42はどこ行くの?っていう
666デフォルトの名無しさん:2011/03/26(土) 13:51:32.38
単に代入するだけのコンストラクタが自動的に定義されてるだけと考えるとわりといける
リテラルだと思うときもいけど
667デフォルトの名無しさん:2011/03/26(土) 15:54:24.70
privateは読み飛ばしたらいいかな
668デフォルトの名無しさん:2011/03/26(土) 16:10:55.89
not accessibleでコンパイルエラーが自然じゃね。
669デフォルトの名無しさん:2011/03/26(土) 19:50:41.91
opCall()をオーバーロードすればいいんじゃね?
670デフォルトの名無しさん:2011/03/26(土) 21:22:10.38
a += b;

a =+ b;
を間違えて30分くらいハマった
こういう文法を持つC言語は邪悪すぎる
みんなでDに移行しようぜ
671デフォルトの名無しさん:2011/03/26(土) 22:53:51.65
>>666
privateと指定することができないじゃん
672デフォルトの名無しさん:2011/03/26(土) 22:58:34.30
>>669
なんの為?
673デフォルトの名無しさん:2011/03/27(日) 00:02:46.84
半年ぶりに戻ってきてdmdのバージョンを上げてコンパイルしたらエラーが沢山
イヒヒイイヒヒ
674デフォルトの名無しさん:2011/03/27(日) 00:19:54.40
半年くらいならCとBASIC程度の違いで済むのかな
675デフォルトの名無しさん:2011/03/27(日) 00:45:38.95
修正ではなく移植と申したか。
676デフォルトの名無しさん:2011/03/27(日) 09:59:11.22
Lua使ってる人がいるみたいだけど、squirrel.dってどっかにあるのかな
Bindingsにあるのかと思ったら古かったんで自分で書こうかと思ってるんだが
677デフォルトの名無しさん:2011/03/27(日) 11:47:13.40
importファイルだけならhtod使えば30分くらいでできたよ
678デフォルトの名無しさん:2011/03/27(日) 12:49:10.03
自動変換して30分とかDさんぱねぇっす

というかhtodってメンテされてんの?
679デフォルトの名無しさん:2011/03/27(日) 12:51:29.44
いやある程度自動変換させといてエラー出るところだけ自分で修正するんだけどね・・・
680デフォルトの名無しさん:2011/03/27(日) 14:49:57.93
htodはconst char*をchar*に変換してくれるのを初めだいぶ使えない子
「エラー出るとこだけ修正」だと↑とかマクロがっつりコメントアウトしちゃうとことか修正できないし
ぶっちゃけ手書きとあんま変わらん
681デフォルトの名無しさん:2011/03/28(月) 19:46:38.75
682デフォルトの名無しさん:2011/03/29(火) 06:43:10.90
exportってどういうときに使うんでしょうか?
なんだか無くても動いてるような気がするんですが。
683デフォルトの名無しさん:2011/03/29(火) 17:41:55.15
dmd2.052 -m64にてコンパイル…

struct st_list {
alias st_list *prev;
alias st_list *next;
void *data;
};
assert(st_list.sizeof == 8); // safe

どういうことだってばよ?
684デフォルトの名無しさん:2011/03/29(火) 18:20:48.38
aliasを何だと思ってるんだ?
685デフォルトの名無しさん:2011/03/29(火) 18:31:18.33
prevというメンバがいるんじゃなくて、prevというalias型を定義しただけだから問題ない
686デフォルトの名無しさん:2011/03/29(火) 19:28:09.21
ごめん、古いソースだったもんでこうなってたんだ。
こりゃ32bitでもダメっぽいな。失礼しました。
687デフォルトの名無しさん:2011/03/29(火) 19:43:05.63
gtkDも生きてたか
688デフォルトの名無しさん:2011/03/29(火) 19:47:41.95
dflの中の人が動き出したんですか?
689デフォルトの名無しさん:2011/03/29(火) 20:22:11.67
>>686
いやなんか完璧に勘違いしてない?
690デフォルトの名無しさん:2011/03/29(火) 20:26:09.64
>>688
上のリンクは本家とは無関係
691デフォルトの名無しさん:2011/03/29(火) 20:35:16.44
auto f = to!float("0"); // 落ちる

えええ・・
692デフォルトの名無しさん:2011/03/29(火) 21:55:02.69
>>691
落ちない
Ubuntu 10.10 64 bit
693デフォルトの名無しさん:2011/03/29(火) 21:57:08.17
落ちない
win7-64bit dmd 2.052

ちゃんと落ちないなんてどうしちゃったのうちのdmd…
694デフォルトの名無しさん:2011/03/30(水) 00:33:41.18
struct Foo(T){
 T i;
 this(T i) pure
 {
  this.i = i;
 }
}

を-Hスイッチでdiファイルにするとpureが消えますが、これはdmd2.052の仕様ですか。


Foo!(T) bar(T)(T i) pure
{
 return typeof(return)(i);
}

とか出来なくなる。SciDやろうとしてハマった。
695694:2011/03/30(水) 00:37:02.76
ちなみに
>>691は落ちなかった。
ubuntu 10.04 64bit
696デフォルトの名無しさん:2011/03/30(水) 02:00:53.73
>>691
2.048で落ちた小数点を探しに行ってなんとなく落ちるぽい動作だな
最新版だと直ってる
697デフォルトの名無しさん:2011/03/30(水) 10:42:05.11
>>689
http://www.steinmole.de/d/
こいつの中の人に言ってくれよ・・。
少し前まで(32bitで)12になって動いてて、そのまま気づかなかったんだよ。

-m64で構造体のサイズがmysql.hの定義とズレまくって
大変だったと言いたかっただけなんだorz
698デフォルトの名無しさん:2011/03/31(木) 23:33:20.05
void main(){
 int i;
 int* p = &i;
 writeln(i.sizeof); //-m32でも-64でも4
 writeln(p.sizeof); //-m32だと4で-m64だと8
}

これが原因でSDLでセグメンテーションエラーとか出る。
具体的には-m64で
auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
すると、screen.format以降がずれずれ。
こういうのってどうしようもないの?
699デフォルトの名無しさん:2011/03/31(木) 23:47:30.12
そもそもDのintはCと連動してない。ビット数固定だったはず。
700デフォルトの名無しさん:2011/03/31(木) 23:47:51.89
言語側にint_ptrみたいな汎用整数型が欲しかったな
というかなんでないんだろう
701デフォルトの名無しさん:2011/04/01(金) 00:06:09.10
よくわからんけどSDLが64ビット対応してないんじゃね?
702デフォルトの名無しさん:2011/04/01(金) 06:58:37.29
alias std.traits.Signed!size_t int_ptr;
extern(C) SDL_Surface* SDL_SetVideoMode(int_ptr, int_ptr, int_ptr, Uint32);

auto screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);

これでどうだろ?
まあSDLが64bit対応してなかったらどっちにしろ詰むわけだが
703デフォルトの名無しさん:2011/04/01(金) 08:30:33.81
intptr_tとかの型ならstd.stdintにあるよん
704デフォルトの名無しさん:2011/04/01(金) 15:26:57.53
// c/c++ -m64
printf("%d", sizeof(MYSQL)); => 1248

// D MySQL Driver + DMD2.052 -m64
writeln(MYSQL.sizeof); => 1040

( ゚д゚)…

  !
(゚д゚ )

version(X86_64) {
struct MYSQL { byte[1248] a; }
}

今は反省してない。
705デフォルトの名無しさん:2011/04/01(金) 19:28:24.07
>>703
おおマジか…
sizediff_tとかhash_tみたいな意味不明の型は何もimportしないでも使えるというのにどうしてそんな差別を
706デフォルトの名無しさん:2011/04/01(金) 21:06:04.68
>>698
構造体の定義を全部64bit用に調整してやるしかないんじゃないかな
大丈夫だSDLの構造体はそんなにいっぱいない
707デフォルトの名無しさん:2011/04/01(金) 21:28:07.78
64bit対応に詳しくないんだけどそもそもSDLのDLLを64bitでコンパイルしちゃえばサイズ合う、なんてことはないの?
708デフォルトの名無しさん:2011/04/01(金) 21:34:09.12
言語以前のことで悩んでるとしか
709デフォルトの名無しさん:2011/04/01(金) 21:49:54.34
そもそも64bitなんて必要あるのかから議論をしようか
マーケティングに踊らされていないか
オール電化に似た負のイメージしかない
710デフォルトの名無しさん:2011/04/01(金) 21:53:43.46
いや、その議論は他所でやろうぜ。
711デフォルトの名無しさん:2011/04/01(金) 22:00:23.80
単にメモリが増えるという意味での64bit化は要らんけど、
x86の場合はレジスタ数が増える恩恵のほうがでかいし、各プラットフォームともにここぞとばかりにABIを改良してたりするからなあ

……という話をしようと思えば他所にいくべきですねわかりましたごめんなさい
712デフォルトの名無しさん:2011/04/01(金) 23:02:45.40
>>698
64bit対応のことはよくわからんけど
・SDLのバイナリが64bitで構築されているか?
・ヘッダが64bitのラッパーになっているか?(htodは対応してないはず)
・import libが64bit用で生成されているか?(またOMF変換とか一手間かかるの?)
・Dアプリを64bitで記述・コンパイルしているか?( -m64の部分 )

あとWinでSDL使ったらSDL_ImageだのSDL_mixerだのさらにzlibだの
依存が多くてうんざりしたがそいつらみんな64bitなの? とか
derelictは対応してるの? とか

1つ1つ潰してみては
713デフォルトの名無しさん:2011/04/01(金) 23:06:14.43
いや、ここまで読む限り、単にD版ヘッダーがおかしいだけでしょ
714デフォルトの名無しさん:2011/04/01(金) 23:49:35.03
linuxならいいんだろうけどwinだと64bit版のDLLそろえるのがめんどくさそうだなー
715デフォルトの名無しさん:2011/04/02(土) 00:04:31.05
いや、自分でコンパイルしようとしたら面倒だけど、どっかにあるのを取ってくるならそうでもないだろ。
一応Windowsはバイナリ互換性が保証されてるわけだし。
716デフォルトの名無しさん:2011/04/02(土) 09:54:52.90
当方ubuntu 10.04 64bit。
デフォルトのリポジトリにあったlibsdlを入れてるから、64bit版で間違いはないはず。

で、使ってるDインポートファイルの抜粋↓

align(4)
struct SDL_Surface
{
 Uint32 flags;
 SDL_PixelFormat* format;
 int w, h;
 Uint16 pitch;
 void* pixels;
 int offset;
 private_hwdata* hwdata;
 SDL_Rect clip_rect;
 Uint32 unused1;
 Uint32 locked;
 SDL_BlitMap* map;
 uint format_version;
 int refcount;
}

extern(C) SDL_Surface* SDL_SetVideoMode(int width, int height, int bpp, Uint32 flags);

これをどうすれば
717デフォルトの名無しさん:2011/04/02(土) 10:03:48.10
sage忘れた

if (SDL_Init(SDL_INIT_VIDEO) < 0)
 throw new Error("SDL_Init failed.");
scope(exit) SDL_Quit();

SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
if (screen is null)
 throw new Error("SDL_SetVideoMode failed.");

writeln(screen.fags);// 0
writeln(screen.format);// XXXXXXXXFFFFFFFF ← !!
writeln(screen.w);// 0 ← あー
writeln(screen.h);// 640 ← はいズレたー
718デフォルトの名無しさん:2011/04/02(土) 10:04:22.21
すまんまた忘れた
719デフォルトの名無しさん:2011/04/02(土) 10:08:00.02
ちなみに、Dソース中でscreen.??を呼ばない限りははうまく動く。(ように見える)
720デフォルトの名無しさん:2011/04/02(土) 10:31:22.49
あ!! alignか?
くそー、今試せない
721デフォルトの名無しさん:2011/04/02(土) 11:03:15.36
>>720
たぶんそう
SDLの構造体はVC、CodeWarrior、Borlandだと4Byteアライメントが指定されてるけど他はないっぽい
ubuntuならたぶんGCCだろうからalign(4)だとずれるかもしれない。特に64bit

SDLのヘッダに、「ディスクからロードした時の為に4Byteで揃えてます」みたいに書いてあるけど
これは嘘ってことだな

722デフォルトの名無しさん:2011/04/02(土) 15:16:57.92
まずC/C++ 64bitと、D言語64bit、の双方で
SDL_Surface構造体の各メンバの配置位置とサイズを確認すべきじゃない?
配置位置は、構造体先頭ポインタとメンバのポインタの差から
サイズは、sizeofで
723 ◆LLLLLLLLL. :2011/04/03(日) 08:53:57.07
| ̄:/ : : /: : : : : : : :i: : : i: :\ : :\    \
|: / : : : / : : : : :.i: : : : |: : : :|: : : |: : : i     '
: :|: : : : |: : i: : : :|: : : /i|: : :|:| : : :|: : : |     |
: :|: : : : |: :.|:斗 十‐/ i|: :∧-‐ト|: : : |     |
: :|: : : : |イ|: :|:/ |:/   |:/ |ハ: : |: : : |  \_,ノ
: :|: : : : | レヤ示ト     rテv|:./|: : : :|
ヽ|: : : : |/{:::::::i }     トイ レ: :|/|/   関東地方 
( |: : : : 代c::ノソ     レリ |: : : : |       東北地方 北海道地方
.〈.|: : : : |x`¨       、¨x.|: : : i:|    にいる
\|i: : : :|        ,   /|: : : i:|      すべての 愛すべき 国民へ 告ぐ
∨リ\: :iト 、      `´ ィ  |: : /|リ      
‐┴―\|- 〈 >rァ 爪|V  |/
:::::::::::::::::::::::ヽ \ リ
::::::::::::::::::::::::__\
:::::::::::::::/ ::r――‐へ      rっr‐-、_
:::::::::/ :://      ∧. | ̄ ̄ ̄| | | | | ̄ ̄ ̄ ̄ ̄ ̄ ̄|
:::/ ::/ /          ヽ|.    L|_|_ト'           |
/ ::::/  /         \   ただちに 逃げろ    |
. :::/ |/           |                 |.........
724デフォルトの名無しさん:2011/04/03(日) 14:09:44.24
725デフォルトの名無しさん:2011/04/03(日) 16:30:25.07
DのIDEがあるの無いのという話を聞くたびに思う
D2でIDEを作れないことの方が問題だと

でもDFLのforkといいgtkDの復活といい状況よくなってきてるな
726デフォルトの名無しさん:2011/04/03(日) 16:47:29.73
D-IDEは.NETのポートだけじゃなくて全部C++なの?
727デフォルトの名無しさん:2011/04/03(日) 16:47:58.93
VisualDはD製だぜ
728デフォルトの名無しさん:2011/04/03(日) 17:39:48.80
PoseidonはDWTだったか
729デフォルトの名無しさん:2011/04/03(日) 18:13:22.36
むしろDMDと同じくDを使わずにIDEを作るほうが
はるかに楽な気もするが

文字列ミックスインがにくい!
CTFEがにくい!
DMDのよくわからない挙動が(ry
730デフォルトの名無しさん:2011/04/03(日) 18:14:45.21
全部愛しいですけど何か?
731デフォルトの名無しさん:2011/04/03(日) 18:50:00.48
多分 729 はツンデレ
732デフォルトの名無しさん:2011/04/03(日) 18:54:03.98
万能すぎのis文が一等こわい
733デフォルトの名無しさん:2011/04/03(日) 20:54:21.16
D言語でまどかマギカのアクションゲーム作ろうず
734デフォルトの名無しさん:2011/04/03(日) 21:00:16.87
>>733
DXlibでやるならば手伝う。
735デフォルトの名無しさん:2011/04/03(日) 21:03:21.32
絵と音楽を用意してくれるなら手伝う
736デフォルトの名無しさん:2011/04/03(日) 21:10:56.26
手伝い方教えてくれたら手伝う
737デフォルトの名無しさん:2011/04/03(日) 21:17:03.56
ええい早くgithubなりbitbucketなりのリポジトリを作るんだ
738デフォルトの名無しさん:2011/04/03(日) 21:33:27.60
DXlibってDで使えたのか
739デフォルトの名無しさん:2011/04/03(日) 21:35:14.00
dxlib4dってのがある
740デフォルトの名無しさん:2011/04/03(日) 21:38:28.52
なんか新しい流れw
741デフォルトの名無しさん:2011/04/03(日) 21:39:04.12
リポジトリまだか?
俺は本気で手伝うぞ
742デフォルトの名無しさん:2011/04/03(日) 21:42:44.84
まずシステムをどうするかだな・・
743デフォルトの名無しさん:2011/04/03(日) 21:53:12.35
2Dアクションか3Dアクションか。
2Dでいいとも思うけど。
744デフォルトの名無しさん:2011/04/03(日) 22:06:53.75
DXライブラリならニコニコのMMD使えるからフリーで短期決戦ならそっちが良くね?
745デフォルトの名無しさん:2011/04/03(日) 22:09:14.58
そういえばニコニコにも自作ゲームタグってのがあるな
芝が生えるゲームどこ行ってもうたんや…
746デフォルトの名無しさん:2011/04/03(日) 22:13:00.30
システムやジャンルを決める前に、作る側の役割を決めないと。
チームでゲームを作る上でもっとも大切なのはポジショニング。
747デフォルトの名無しさん:2011/04/03(日) 22:17:29.80
まどかマギカなんかほっとこうぜ。
それよりD言語でD言語のマスコットキャラの育成ゲーム作ろうずwww
748デフォルトの名無しさん:2011/04/03(日) 22:18:46.14
特にD使うような奴が、何もかも全部一人で決める魅力を放棄できるとは思えんw
749デフォルトの名無しさん:2011/04/03(日) 22:19:30.49
あんなマスコットを育成するくらいならC++使うほうを選ぶわ
750デフォルトの名無しさん:2011/04/03(日) 22:26:04.15
>>748
あるあ……あるあるwww
751デフォルトの名無しさん:2011/04/03(日) 22:33:01.62
じゃあ間を取って、Dのマスコットキャラのアクションゲームだな。
752デフォルトの名無しさん:2011/04/03(日) 22:41:24.16
Dマスコットアクションに清き一票を
753デフォルトの名無しさん:2011/04/03(日) 23:01:20.66
じゃあFPSでDマスコットが撃たれると
うざいポーズでよけまくるゲームを
754デフォルトの名無しさん:2011/04/03(日) 23:01:27.96
破壊的変甲グレートDのマスコットキャラ
755デフォルトの名無しさん:2011/04/03(日) 23:04:42.20
Dマスコットのエロゲ
756デフォルトの名無しさん:2011/04/03(日) 23:11:31.98
こうしてこの話は雲散霧消していくのだった・・・
757デフォルトの名無しさん:2011/04/03(日) 23:20:57.83
―235年後―
758デフォルトの名無しさん:2011/04/03(日) 23:25:54.31
D2の仕様っていつ固まるの?
759デフォルトの名無しさん:2011/04/04(月) 01:20:38.55
235年してもD2仕様固まんないのかよ…
760デフォルトの名無しさん:2011/04/04(月) 01:35:51.32
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < D3まだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん |/
761デフォルトの名無しさん:2011/04/04(月) 10:20:12.20
その前に D2.01.0001 が出るのがスジだろ
762デフォルトの名無しさん:2011/04/04(月) 19:20:15.52
ttp://www.ku6.jp/report/11.html
>2011年04月03日 23時52分
はえーよ
763デフォルトの名無しさん:2011/04/05(火) 01:16:49.63
おお、SDLとOpenGLのインポートファイル使わせていただいております
DXも使ってみようかな
協力して一緒に覚え酔う
764デフォルトの名無しさん:2011/04/05(火) 05:22:45.74
マスコットアクションw
765デフォルトの名無しさん:2011/04/05(火) 20:02:50.60
西日本も福島原発の放射能に曝される。

4/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
766デフォルトの名無しさん:2011/04/05(火) 20:12:48.85
何の話かと思ったら確かにDの形をしてるな
767デフォルトの名無しさん:2011/04/05(火) 21:56:33.30
dmdのmをひっくり返してdwdか…
>>721
確認遅くなったが、align(4)を全部消したら普通に動いたので一応報告。
769デフォルトの名無しさん:2011/04/06(水) 14:42:52.21
Portable C Compiler 1.0登場ってすごいな

Dも うかうかしてられない
うぉるたんにもっと開発スピードを落としてもらわないと
770デフォルトの名無しさん:2011/04/06(水) 20:11:05.73
俺が空気の悪い職場に缶詰になってる間にD forumに物凄いGUIツリーができてるなぁ
DによるDのためのGUIライブラリって本気で欲しいのは欲しいんだがDFLスルーされすぎワロタ
771デフォルトの名無しさん:2011/04/06(水) 23:01:10.57
なぜだ…DFLは素直じゃないか…
772デフォルトの名無しさん:2011/04/06(水) 23:05:05.43
つまり素直なライブラリなど要らぬと
773デフォルトの名無しさん:2011/04/06(水) 23:24:58.82
素直が一番いいんだよーう
774デフォルトの名無しさん:2011/04/06(水) 23:36:40.49
誰かBoostライセンスなGUIライブラリを・・
775デフォルトの名無しさん:2011/04/06(水) 23:49:55.55
DFLってなんでそんなにスルーされてんの?
776デフォルトの名無しさん:2011/04/07(木) 00:04:12.63
DFL==.NETライク
.NETライク==MS的
MS的==悪い
DFL==悪い

ということだったりして

Windows版だけならあとレイアウト関係とgraphics関係の機能が揃えば
ほぼ完璧ってくらいまで来てると思うんだけどな
777デフォルトの名無しさん:2011/04/07(木) 00:07:21.80
DFLってあまりにも普通に使えすぎて大した話題にもならないんだよね。
778デフォルトの名無しさん:2011/04/07(木) 00:36:05.30
そもそもWindows使ってないとか
外国のPC事情なんて知らないけど
779デフォルトの名無しさん:2011/04/07(木) 08:06:51.93
DFLのマルチプラットフォーム対応は
Gtkの上に実装しようとしてたが
頓挫してるんだよねー。
780デフォルトの名無しさん:2011/04/07(木) 09:26:19.46
っていうかWindows専用で.NETライクでってことならもうそれ.NETでいいじゃん。
781デフォルトの名無しさん:2011/04/07(木) 15:54:44.07
D.NETは欲しいなあ。GCの意味なくなるけど。
782デフォルトの名無しさん:2011/04/07(木) 16:24:30.18
すみません。
DでMMO鯖アプリケーションを作成しているのですが、
同時接続人数10人程度でCPU負荷5%前後、
5%のうち3割近くをGCの処理だけに持って行かれています。

メモリ使用量が増えるにつれ、GCの処理も遅くなる傾向があるようで、
このまま公開に至ると100人程度でパンクしそうな感触なんですが、
このあたり皆様どう対処しているでしょうか?

カスタムnewとフローリストの組み合わせあたりが妥当でしょうか。。。
783デフォルトの名無しさん:2011/04/07(木) 18:58:44.30
>メモリ使用量が増えるにつれ、GCの処理も遅くなる傾向があるようで、
これあるなぁ
大量にデータを作って大量に捨てるソフトで
3割どころか8割近くGCの処理時間だったことがある
今のDのGCは出来がよくないって聞いたような気もする

その時はクラスを廃して構造体だけにしたら格段に早くなったけど
GCされるのはクラスだけじゃないよね
784デフォルトの名無しさん:2011/04/07(木) 21:53:16.65
まだ古典的なMark&Sweepなのかね?
何にせよJVMのように膨大なリソースを投入されているわけではないからなあ
785デフォルトの名無しさん:2011/04/07(木) 22:14:07.89
メモリ使いすぎるとGCが重くなっちゃうとかかわいい///
786デフォルトの名無しさん:2011/04/07(木) 22:21:52.02
787デフォルトの名無しさん:2011/04/07(木) 22:30:45.12
dmdは世代型コピーGCなはず。

>>782
とりあえず、メモリの確保と解放が最小限になるプログラムを作ろうか。
目標は、プレイヤーのログインとログアウト、ゲームの状態や場面の切り替えの時だけで、確保と解放をする。

...それとも、既にそんな感じ?
788デフォルトの名無しさん:2011/04/07(木) 22:33:57.90
std.typeconf.RefCountedタソにも頑張って欲しいんだが
こっちも構造体デストラクタのバグのせいでドジッ娘なんだっけ。
789デフォルトの名無しさん:2011/04/07(木) 22:35:57.69
ABA Gamesの人だったかが昔
「なるべく注意してnewも使わずリソースがその場限りで
開放されるようにしてるのにそれでもGCが走ッちまうぜ」
みたいな愚痴を言ってたような気がする
790デフォルトの名無しさん:2011/04/07(木) 22:46:51.01
D1がメンテナンスモードに入ってる現在、GCの実装が糞とは考えにくいけどなあ。
Dの標準ライブラリが糞な可能性は、今も高いけど。
791デフォルトの名無しさん:2011/04/08(金) 00:01:51.93
揺れたー。
DのGCへの信頼が揺らいだと思ったら地面も揺れた。
792デフォルトの名無しさん:2011/04/08(金) 00:25:15.40
公式の説明を素直に読めば世代コピーみたいな高度なことなんかしてなくて
普通に全スキャンするイマイチなGCのままじゃない?
793782:2011/04/08(金) 01:45:36.75
>>783
ちゃんとログを取っていなかったので数値を出さなかったのですが、
30人ログインさせた際CPU負荷30%付近(瞬間的に100%近く)で、
メインループは5%前後だったので残りは・・・

クラスを廃して構造体ってのは参照で少々痛い目に遭ったので控えたいなぁ。
refを使い出すと一時変数の参照を受けたりしてc++より厄介に感じました。

>>787
PCはそんな感じですが、
他は後から調整するつもりで(というかもう少しGCがいい子と期待していた…)
敵やマップの生成、破棄がそこそこ多いかもです。
一番newが多いのはAIのLuaDと通信周りなので、このあたり詰めてみます。
794デフォルトの名無しさん:2011/04/08(金) 02:04:50.20
世代別GCじゃなくてまだ単なるM&Sだよ
オブジェクトが増えるとGCに掛かる時間が増えるのも認識されてて,Davidがパッチ投げてる(正確なヒープスキャンとはまた別)
あと,forkがある環境向けに並行Markとか行う実装もブランチはある(テスターが全然いないから取り込まれる予定は今の所無し)
795デフォルトの名無しさん:2011/04/08(金) 11:45:53.83
>>792
公式の説明を素直に読むなら・・・

1.GCで確保された領域を指す 'root' ポインタを全て列挙します。
2.rootから指されている領域内から、 再帰的にGCメモリ領域内を指しているポインタを探索します。
3.GCで割り当てられた領域のうち、 生きたポインタで指されていないことが分かった領域を全て解放します。
4.残ったメモリ領域のデータをコピーして使用領域をまとめる処理 (コピーGCと呼ばれます) が実行される可能性があります。

1~3で少なくともマーク&スイープが実装されていることがわかり、
4で少なくともコピーGCが実装されていることがわかる。

これやっぱり世代型コピーGCだろ。
796デフォルトの名無しさん:2011/04/08(金) 12:15:36.24
「可能性があります」ってのは「各処理系はそのように実装してもよい」程度の意味じゃね?
DMDの実際がどうなのかは知らないけど別の事のような気がする
797デフォルトの名無しさん:2011/04/08(金) 12:18:29.55
説明見るとそうだけど、現在のGCは単純なマーク&スイープで実装されてるってのも前に見たが・・・
798デフォルトの名無しさん:2011/04/08(金) 12:51:44.72
>>796
1~3までに、メモリが十分に空いたら、実行しないかも? ということじゃね。

>>797
何時の話か書いてくれないと、コメントのしようが無いって言う。
799デフォルトの名無しさん:2011/04/08(金) 13:05:45.98
将来コピーGCを実装するかもしれないから
メモリ領域が移動されないことを前提としたコーディングはしないでね!ってことだよ
800デフォルトの名無しさん:2011/04/08(金) 13:09:41.20
だいぶ古い話なんでソースが見つからなかったんだけど、コピー&コンパクションはコストの問題で非現実的なので
実際は単純なマーク&スイープに留めてあるよって言う話があってふーんそうかって思ってたんだよね。

一応こんなの出てきたけど俺が見たのとは違う。 ttp://goo.gl/8Ci3Z
801デフォルトの名無しさん:2011/04/08(金) 13:19:41.16
つーかソース嫁
802デフォルトの名無しさん:2011/04/08(金) 13:24:23.63
>>800
古いのかよ。

むう、せめてGCのソースが見つかれば・・・(見つけられない俺)
803デフォルトの名無しさん:2011/04/08(金) 13:35:45.42
tangoなんかは独自にGC組み込んでるんだよねえ
804デフォルトの名無しさん:2011/04/08(金) 14:19:02.26
>>796,799だろうなあ。
GCの実装変えたよなんて話あったらもっと話題になってるっつーの。
805デフォルトの名無しさん:2011/04/08(金) 16:09:45.51
やっぱGCって遅いんだなあ
806デフォルトの名無しさん:2011/04/08(金) 17:05:48.03
>>802
tk\mem.cかなあ
807デフォルトの名無しさん:2011/04/08(金) 17:12:08.65
あーでももしかしたらtrunkの中じゃなくて公式リリースのsrc\druntime\src\gc\gcx.dかも
808デフォルトの名無しさん:2011/04/09(土) 02:30:22.38
DのGCはクソ、というのは読めばわかる
初歩的なGCを素直に実装しただけなので、他のGC実装(boehmとか)に比べれば簡単で読みやすい
GCの仕組みを知る入門用として読むのはおすすめ
しかしlispやjavaが営々と積み上げてきた高速化技術がなんもはいってないので実用的にはクソ

>>800
「俺が見たのとは違う」って俺が見たのはどのバージョン?

4年ぶりに2.052確認したけど変わってないと思う
809デフォルトの名無しさん:2011/04/09(土) 02:44:36.44
やはりDはだめな子なのか!?
誰かナイスなGC実装してくれよ
810デフォルトの名無しさん:2011/04/09(土) 03:02:25.37
モダンなGCにはオブジェクトの移動が不可欠で、オブジェクトを移動するにはある値がDオブジェクトのポインタ(移動可)なのか数値やC由来のポインタ(移動不可)なのか区別できる必要があり、その情報をコンパイラが吐いてくれないことにはライブラリだけでは実装できない
811デフォルトの名無しさん:2011/04/09(土) 03:20:37.89
>>809
ぶっちゃけるとネイティブでかつランタイムに大きな負担をかけずに
JavaレベルのGCを搭載するのはかなり厳しい(実際そんなGC見た事無い)
コンパイラを弄ってランタイムとの関係をもっと密にすれば行けるかもしれないけど
そうするとJavaみたいに環境の差を吸収する基盤のないD言語だとそこで死ぬ
勿論タスクを分解して,処理の並列度を上げるという逃げ道はあるけども

region inference的なものを入れれるのであれば新しい道が開ける可能性もあるが
どこまで実用で使えるのか分からんしなぁ
812デフォルトの名無しさん:2011/04/09(土) 03:42:49.04
>>810
immutableの仲間が増えそうな気がするな

fixed(char *) c = malloc(10);
char *d = new char[10]; //movable

c = d; // error!
d = c; // ok
813デフォルトの名無しさん:2011/04/09(土) 04:16:51.30
よく知らんのだけど、ポインタがありながらexact GCを許すために
C#はそんなようなトリックを使ってるんだっけ?
814デフォルトの名無しさん:2011/04/09(土) 04:36:14.83
C#はunsafeを明示してポインタを使うと、そのブロック内では対象オブジェクトは移動をロックされる。
>>812はそうではなくて、D言語風に、素のポインタはいつの間にか移動するポインタ、
fixedを付けると移動しないポインタ、ぐらいのつもりで書いた。細かいことは考えてない。

今思ったんだがポインタ演算中に別スレッドでgc走ってポインタが移動すると結果が狂うんじゃ……
815デフォルトの名無しさん:2011/04/09(土) 08:45:26.93
>>808
ソースの場所おしえてくれ〜
816デフォルトの名無しさん:2011/04/09(土) 09:49:33.49
質問なんだけど
interface A{}
class foo{}
class bar: foo , A{}
class baz: foo, A {}
があって
foo[] array
に、fooとbarとbazが混在してるとして
arrayのうちinterface Aを継承してるものをピックアップなんてできないよね?
書いてるうちに、出来るわけねーじゃんって思ったけど一応質問してみる・・・
817デフォルトの名無しさん:2011/04/09(土) 10:29:58.53
Is式は全能
818デフォルトの名無しさん:2011/04/09(土) 10:55:09.91
immutableとconstは統一してほしい、inoutがダサい
Cとのインターフェイスでもこの辺りや文字列でイラっとくることがある
819デフォルトの名無しさん:2011/04/09(土) 12:16:41.32
GCのやり方はプログラマがえらべるよってのがDのスタンスのはずだ
仮想マシンもないのにGCにごりごり依存してる標準ライブラリの存在がネック
だとすると・・・ピコーン

alias std!FooGC std;
820デフォルトの名無しさん:2011/04/09(土) 12:19:22.67
void* p = std!fooGC.stdlib.mallloc();
std!barGC.stdlib.free(p);

('A`)
821デフォルトの名無しさん:2011/04/09(土) 12:19:37.15
>>816
出来る
822デフォルトの名無しさん:2011/04/09(土) 13:34:50.45
SDLつかえねええええええ

SDL\SDL_audio.d(45): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
SDL\SDL_audio.d(77): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
SDL\SDL_rwops.d(31): C-style function pointer and pointer to array syntax is dep
recated. Use 'function' to declare function pointers
823デフォルトの名無しさん:2011/04/09(土) 13:56:39.00
>>822
int (*fp)(int, int); //C-Style

int function(int, int) fp; //D-Style
824デフォルトの名無しさん:2011/04/09(土) 14:09:50.10
つ DerelictSDL

main() の頭でDLL初期化が必要なので注意
DerelictSDL.load(); // SDLのそれぞれのDLLに対してこういう初期化文を追加
825デフォルトの名無しさん:2011/04/09(土) 14:53:10.39
構造体のinitのオーバーライドどうやってやります?
826デフォルトの名無しさん:2011/04/09(土) 15:39:35.07
>>823,824

thx!
とりあえず>>823の変換をちまちまやってみるが
うまい正規表現とかないですか
おとなしくDerelictSDLにしといたほうがいいですか
827デフォルトの名無しさん:2011/04/09(土) 15:43:51.46
$1とか使って置換すればそんな難しくないと思われる
828デフォルトの名無しさん:2011/04/09(土) 15:46:20.24
undefined indentifer bitとか\(^o^)/
bitって廃止になったんじゃなかったか
DerelictSDLしてくる
829デフォルトの名無しさん:2011/04/09(土) 16:16:02.17
ttp://www.ku6.jp/keyword6/1.html
ちょっと前にURL載ってるけどここのじゃじゃダメなん?
日付見る限りCスタイルの関数宣言とかbit使ってるってことなさそうだが……
830デフォルトの名無しさん:2011/04/09(土) 16:28:59.65
>>825
継承関連はクラスでどうぞ。
831デフォルトの名無しさん:2011/04/09(土) 19:09:39.90
>>830
Cとのインターフェースで使う構造体で初期値が固定なものがあって
それを使うたびに自前で毎回全メンバーに決まった値入れたり
initXXX()みたいな関数呼び出したりするのが自明すぎだし書き忘れたらバグの元だしで嫌なんだ
initを使えれば見た目もすっきりしていいんだけど・・・
832デフォルトの名無しさん:2011/04/09(土) 19:25:35.91
struct S { int i=10; }
とかするとS.init.iは10になった気がするんだけど、使えそう?
833デフォルトの名無しさん:2011/04/09(土) 20:00:57.47
今日からDはじめました
勉強のためにほかの人が書いたプログラムを写経しようと思ってます
初心者でも理解できるような物があれば教えてください
834デフォルトの名無しさん:2011/04/09(土) 20:43:25.94
>>832
dほんとだできますた
835デフォルトの名無しさん:2011/04/09(土) 21:39:09.69
>>832, 834
それホントに出来た?
自分は出来なかった・・・。
例えばこんな。

struct Hoge
{
int a = 30;
unittest
{
static assert(Hoge.a.init == 30); // 0 == 30 となり失敗する
}
}

ttp://www.kmonos.net/alang/d/2.0/property.html#init
には書いてあるけど、あるときを境にこれが出来なくなったと理解してる。
いつかの更新履歴に書いてあったような・・・。
836835:2011/04/09(土) 21:41:55.63
ごめん、Hoge.a.init ではなく Hoge.init.a と書けばいいのか!
できたー!サンクス!
837デフォルトの名無しさん:2011/04/09(土) 22:08:28.85
>>833
D公式のトップにあるやつとか?
ただ、もしあなたがプログラミング自体の初心者なら、別の言語から始めることをお勧めする。(とりあえずjavaでいい)
838デフォルトの名無しさん:2011/04/09(土) 22:09:00.89
839デフォルトの名無しさん:2011/04/09(土) 22:17:15.95
えと、何か言いたい?
840デフォルトの名無しさん:2011/04/09(土) 22:21:26.23
T.init.s.a とか?
841デフォルトの名無しさん:2011/04/09(土) 22:36:24.84
842デフォルトの名無しさん:2011/04/09(土) 23:09:05.26
そーいや今日の会議はどうだったのかなっと
843デフォルトの名無しさん:2011/04/09(土) 23:17:48.86
会議行った人、感想ちょーだい
844デフォルトの名無しさん:2011/04/10(日) 00:06:23.65
845デフォルトの名無しさん:2011/04/10(日) 10:15:34.11
>>844
把握
846デフォルトの名無しさん:2011/04/10(日) 12:08:58.76
>>844
FU○K
847デフォルトの名無しさん:2011/04/10(日) 12:12:03.79
実際Phobosは妙な機能は充実してるけど基本的な機能が足りない気がするんだよね
Locale周りとか…dwt2使ってて国別のリソース取るところではたと困ったし
848デフォルトの名無しさん:2011/04/10(日) 13:06:48.26
そういえばちょっとまえに、テンプレートの型推論で、静的配列の要素数もちゃんと推論してくれる事に感動した俺。
http://ideone.com/em1tO
849デフォルトの名無しさん:2011/04/10(日) 17:14:21.43
こっちがまとめとしてふさわしい
ttp://twitter.com/mono_shoo/statuses/56567451500023808
850デフォルトの名無しさん:2011/04/10(日) 17:36:51.97
「こんなに沢山いたのか」「非実在D言語er」「僕は一人じゃなかったんだ」
とかお前ら人数に感動しすぎww
851デフォルトの名無しさん:2011/04/10(日) 17:39:54.89
>>848
こんなこと出来たのかw
テンプレートとか苦手なロートルだけどこういうの見るとやってみたくなるな
852デフォルトの名無しさん:2011/04/10(日) 18:13:51.39
動画撮ってたりしないのかな?
853デフォルトの名無しさん:2011/04/10(日) 18:51:47.78
動画を撮るプログラムをDで書くのが間に合わなかったらしい
854デフォルトの名無しさん:2011/04/10(日) 19:31:20.55
完成してたはずなのに、当日コンパイルできなくなってたんですね、わかります
855デフォルトの名無しさん:2011/04/10(日) 19:44:21.19
昨日はpushがあったからな(笑)
破壊的なのかはしらんが
856デフォルトの名無しさん:2011/04/11(月) 02:40:00.43
いやースコープガード文スタイリッシュだー。
最新dmdにスリルを求めてしまう事の次にD言語使ってる感が出る。
857デフォルトの名無しさん:2011/04/11(月) 08:09:51.69
一応いっとくとDのGCが特にクソな訳ではなく
rubyとかのスクリプト言語のもたいていクソなんだが
メインの実行が遅いので、メインとGCの比率で見ると目立たないだけ
858デフォルトの名無しさん:2011/04/11(月) 08:10:57.23
859デフォルトの名無しさん:2011/04/11(月) 16:48:24.40
すみません、>>794のGCのパッチは何処にあるでしょう?
GCも何とかなるなら何とかしたい。
860デフォルトの名無しさん:2011/04/11(月) 17:08:40.34
ttp://www.digitalmars.com/d/2.0/struct.html#ConstStruct
t = s; // ok, t.a is now 3 -> ウソ、cannot modify const (dmd2.052 win)

ドキュメントの方がおかしいような気がしなくもないがどうなんだろう
861デフォルトの名無しさん:2011/04/11(月) 20:42:09.42
大量のバグをかかえているdmdよりも、ドキュメントを疑うのかよ
862デフォルトの名無しさん:2011/04/11(月) 20:45:40.30
dmdは常に正しい
863デフォルトの名無しさん:2011/04/11(月) 21:13:27.77
値型がconstなら初期化以外変更不可
そう、貴様は同じ場所に留まって、もがき続けるしかないのだ!
864デフォルトの名無しさん:2011/04/11(月) 22:02:27.30
言語仕様書は、dmdの挙動の説明書ではない
865デフォルトの名無しさん:2011/04/12(火) 01:50:14.40
dmdの挙動が言語仕様を決定する
866デフォルトの名無しさん:2011/04/12(火) 02:08:02.14
つまり、挙動不審なんですね、わかります。
867デフォルトの名無しさん:2011/04/12(火) 04:28:06.83
なあ、いいこと思いついたんだ聞いてくれ

scope class を、scope class のメンバ変数としても存在出来るようにするんだ。
で、scope class はデストラクタ終了後に自分の scope class メンバ変数を delete する。

ちょっと突破口の香りしね?
868デフォルトの名無しさん:2011/04/12(火) 07:57:51.76
面白いと思うけど、何に対する突破口?
光魔術に対する突破口?
869デフォルトの名無しさん:2011/04/12(火) 12:49:44.82
闇プログラマーとしての突破口か。
870デフォルトの名無しさん:2011/04/12(火) 13:14:39.46
↓こういうのを一つにまとめて
if (nodeSrc == node.parent
|| nodeRes == node.parent
|| nodeExt == node.parent) { 〜以下省略

↓みたいに書けそうな気がするけどなにか簡単な書き方ないかな?
if (node.parent in [nodeSrc,nodeRes,nodeExt]) { 〜以下省略
871デフォルトの名無しさん:2011/04/12(火) 14:16:10.25
つ template
872デフォルトの名無しさん:2011/04/12(火) 14:43:23.48
http://ideone.com/l5ee8
こんな感じ?
873デフォルトの名無しさん:2011/04/12(火) 15:05:48.32
てかこれでいいわ。
void*[T] include(T)(T[] a...)
{
void*[T] bar;
foreach(o;a)
{
bar[o] = null;
}
return bar;
}

を定義しといて

if(node.parent in include(nodeSrc,nodeRes,nodeExt) ){〜以下略
874デフォルトの名無しさん:2011/04/12(火) 17:10:33.22
>>873
なかなか。ありがと
875デフォルトの名無しさん:2011/04/12(火) 20:19:12.98
C/C++でいう、
〜前略〜
int i;
int a[256];
char b[1024];
〜中略〜
int *ap = a;
char *abp = (char *)ap;

for(i = 0; i < 1024; i++) abp[i] = b[i];
〜後略〜

とか、

struct test_s{
int a;
char b[16];
};
〜中略〜
test_s a;
char b[20];
〜中略〜
test_s *ap = a;
char *abp = (char *)ap;

for(i = 0; i < 20; i++) abp[i] = b[i];
〜後略〜

とか、できますか?
876デフォルトの名無しさん:2011/04/12(火) 21:35:03.91
つ asm
877デフォルトの名無しさん:2011/04/12(火) 21:37:45.40
相変わらず、趣味で遊ぶにはいいね、ってとこから進んでないのなw
878デフォルトの名無しさん:2011/04/12(火) 21:43:17.91
どゆこと?普通にできるでしょ
879デフォルトの名無しさん:2011/04/12(火) 21:55:15.65
>>875
int[256] a;
char[1024] b;
(cast(char*)a.ptr)[0 .. 1024] = b[];

test_s a;
char[20] b;
(cast(char*)&a)[0 .. 20] = b[];
880デフォルトの名無しさん:2011/04/12(火) 21:57:16.66
え、バイト列から構造体や型の違うデータを取り出すのに、アセンブラが必要なわけ・・・?
881デフォルトの名無しさん:2011/04/12(火) 21:59:40.10
>>879
おぉ、これはずいぶん簡潔に・・・・。
こうすれば出来るんですね。ありがとうございます。
882デフォルトの名無しさん:2011/04/12(火) 22:07:38.87
int[256] a;
char[1024] b;
(cast(char[])a)[] = b[];

これでもいける
883デフォルトの名無しさん:2011/04/12(火) 22:30:46.95
D2 + DFL のサンプルコード探しているのですが
GUI部分とメイン処理を別スレッドでやるのに、参考になるもの何処かにないでしょうか?
884デフォルトの名無しさん:2011/04/13(水) 00:16:37.15
可変個引数 (...) な関数の内部で、可変個引数 (...) な関数に
引数をまるまるスルーパスすることってできます?
885デフォルトの名無しさん:2011/04/13(水) 01:29:03.82
>>883
C#(というか.net)で、やりたい事書いているサンプル探して、それと同じ様な
クラスやメソッドがDFLにないか、探してみるといいよ
enticeのヘルプにクラスの一覧みたいなのがあったと思う
886デフォルトの名無しさん:2011/04/13(水) 01:34:36.08
>>883
サンプルじゃないけどココがひっかかる所かもしれない(コメント欄)
ttp://d.hatena.ne.jp/haru-s/20090716/1247730305
887デフォルトの名無しさん:2011/04/13(水) 02:09:41.01
>>884
void f(T...)(T args){ g(t); }
void g(T...)(T args){}
888デフォルトの名無しさん:2011/04/13(水) 02:16:04.24
889デフォルトの名無しさん:2011/04/13(水) 02:43:09.07
>>884
C/Dスタイル可変個引数だと出来そうにない。
代わりに、テンプレートのタプルパラメタを使えば出来るはず。(>>887と同じ方法)
void foo(...) を void foo(T...)(T t)に変えて、tをそのまま渡す。(渡す先はC/Dスタイル可変個引数でもおkなはず)

型安全可変個引数だと、受け取った配列(またはクラス)をそのまま渡せばよさそうだ。
890デフォルトの名無しさん:2011/04/13(水) 03:09:43.10
WindowsのコマンドプロンプトでもPowerShellでも、標準出力でascii外の文字
を使うと、正しく表示されないのが困ったもんだ。何でUTF-8なんか使うんだ。
891884:2011/04/13(水) 03:09:52.72
>>887, 889

なるほどなるほど。試してみます。
ありがとうございました。
892デフォルトの名無しさん:2011/04/13(水) 03:36:25.52
D言語コンパイラをCentOSにインストール出来ない・・・。
893デフォルトの名無しさん:2011/04/13(水) 04:20:56.19
なんかニューカマー多い?
894デフォルトの名無しさん:2011/04/13(水) 06:53:46.58
CentOSでDMDがなぜ動かないのかと思ったら、gccが4.1.2に巻き戻っていた・・・。
make長げー・・・。
895デフォルトの名無しさん:2011/04/13(水) 07:01:37.88
ついにD言語が一大流行をはじめたか
896デフォルトの名無しさん:2011/04/13(水) 07:48:38.19
>>890
コマンドプロンプトの文字コードは変えられる
897デフォルトの名無しさん:2011/04/13(水) 08:08:21.50
>>895
多分、流行ってない。
けど、思ったよりだいぶマトモな仕様だし、
有名なソフトに使われればその日も近いかも。
898デフォルトの名無しさん:2011/04/13(水) 08:09:10.54
本来ならPhobosがOSのロケールを見て出力(入力もか)文字コードを変えるべきなんだよな
内部UTF-8と決め打って、なおかつ他の箇所では適切に(なるまで時間かかった気もするけど)変換してるんだから
899デフォルトの名無しさん:2011/04/13(水) 08:35:56.80
>>895,897に見る新参と古参の温度差
900デフォルトの名無しさん:2011/04/13(水) 11:10:31.87
むう、std.encodingを拡張して、SHIFT-JISに変換するプログラムを組めないだろうか?

http://www.kmonos.net/alang/d/2.0/phobos/std_encoding.html
http://site.icu-project.org/

・・・もしかしたら出来るかもしれない。
901デフォルトの名無しさん:2011/04/13(水) 13:36:09.00
>>900
頼んだぞ
902デフォルトの名無しさん:2011/04/13(水) 13:38:02.95
や、やっぱり俺なのか!?
903デフォルトの名無しさん:2011/04/13(水) 14:37:28.23
ライブラリじゃなくてフィルタ(SJIS->UTF, UTF->SJISの2つ)があれば
パイプであれこれ柔軟にできるんじゃないかと思うが
探してもうまく見つけられなかった
904デフォルトの名無しさん:2011/04/13(水) 16:17:38.71
nkfとか?
905デフォルトの名無しさん:2011/04/13(水) 17:56:48.00
本家につながらないー
906デフォルトの名無しさん:2011/04/13(水) 18:03:36.46
ホントだ。
907デフォルトの名無しさん:2011/04/13(水) 18:52:02.07
節電のためサーバを落とします
908デフォルトの名無しさん:2011/04/13(水) 19:06:14.63
東電エリアなのかよ
909デフォルトの名無しさん:2011/04/13(水) 20:03:56.47
>>897
キラーアプリがあればとみんな待ち望んで誰も動こうとしないのもまたD。
そろそろすごいもの作りませう >>910-
910デフォルトの名無しさん:2011/04/13(水) 20:06:59.16
やっとつながった
911デフォルトの名無しさん:2011/04/13(水) 20:07:24.53
上の方のD言語使いがみんなして「俺がスゴイの出すからちょっと待ってろ」って言ってるんだもん
912883:2011/04/13(水) 20:12:55.82
>>885 >>886 >>888
ありがとうございます
おかげで、なんとかなりそうです
913デフォルトの名無しさん:2011/04/13(水) 20:21:50.76
キラーアプリキラー それがD
914デフォルトの名無しさん:2011/04/13(水) 21:36:50.99
いま俺がやってる、ってのはいつまでも出ないフラグ
無視して先に出すべ
915デフォルトの名無しさん:2011/04/13(水) 21:39:48.68
>>913
破壊的変更があるからねw
916デフォルトの名無しさん:2011/04/13(水) 21:43:16.85
Dマスコットアクションの敵にキラーが必要だな
917デフォルトの名無しさん:2011/04/13(水) 22:12:45.42
真の敵は自分自身だ


スパイダーマン3みたいだな
918デフォルトの名無しさん:2011/04/13(水) 22:28:46.90
spy Der man

Derの中にC++のスパイが?
919デフォルトの名無しさん:2011/04/13(水) 23:04:07.34
luad には未来を感じた
誰か似たようなインタフェースのSquirrel版を作ってくれまいか



Squirrel使ったことないけどw
920デフォルトの名無しさん:2011/04/13(水) 23:19:42.05
現状だと構造体のインスタンス保存してないからメソッド呼べなかったりとかで
(つか中でthis参照するとめちゃくちゃな値が返ってくる)
使い物にならん感じだったなあluad

自分でも作ろうとしてみたが、>>75もいってるprivate判定とかで面倒になってる。
__traits(compiles)で呼び出すコード書いて通るか否かでやってるんだが、
・特殊関数(__ctorとか__unittest*とか)
・静的変数と普通の変数
・static関数と普通の関数
・↑の各種オーバライド
とか判定してたら条件分岐多すぎて閉じ括弧の量がlispみたいになっちまって今書き直してるとこw
921デフォルトの名無しさん:2011/04/14(木) 01:56:06.88
はぁ・・・。DMDがCentOS5.6で動いてくれない・・・。
gcc-4.5.2にアップしたのに、4.2.3よりバージョンが低いと言われた・・・死にたい。
そもそも、なんでgccが必要なんだよ・・・。
922デフォルトの名無しさん:2011/04/14(木) 01:59:06.51
dmcじゃダメなんだね
923デフォルトの名無しさん:2011/04/14(木) 06:11:31.55
うちはいけてる
924920:2011/04/14(木) 07:42:10.66
なんか寝る前に書き込む時違和感あったんだがオーバーライドじゃなくてオーバーロードだった。
はじゅかしい。
925デフォルトの名無しさん:2011/04/14(木) 08:01:19.12
>>140
再現コードないの
926デフォルトの名無しさん:2011/04/14(木) 08:21:00.72
>>900
各自で作るのはいいけど、
作ったらPhobosに入れて欲しい
927デフォルトの名無しさん:2011/04/14(木) 13:49:21.62
>>926
おおおおおおおお俺は、つつつつつつつ作らないぞ!???????????????
928デフォルトの名無しさん:2011/04/14(木) 19:42:31.95
>>921
標準のリンカがgcc
929デフォルトの名無しさん:2011/04/14(木) 19:56:00.94
>>921
良く分からないけどgccって名前のプログラム作って引数を変換してdmcに渡すとかじゃだめなの?
930デフォルトの名無しさん:2011/04/14(木) 20:33:18.76
gdbがd言語に対応してたことに今気づいた

ddbgの完成度にもどかしさを感じてたので
mingw環境(3つ目)をまた入れてみるか
931デフォルトの名無しさん:2011/04/14(木) 20:43:39.21
dmcはwindow用しかないでしょ
932デフォルトの名無しさん:2011/04/14(木) 20:43:50.35
windows
933デフォルトの名無しさん:2011/04/14(木) 20:45:44.91
>>925
ttp://wiki.dprogramming.com/Dfl/Snapshots
dfl-20100801.zip 内の packages/dfl/examples/ 以下
dmd.exeとdfl.exeにPATHが通っている状態で、同梱のmakeall.batを実行でビルド出来ます
drop.d と droplist.d のdebugビルドはD1/D2共に、ドラッグするとAccessViolation
934デフォルトの名無しさん:2011/04/14(木) 21:05:44.91
>>928
OPTLINKを使わなくていいなんて嗚呼
なんて羨ましいんだ!!なんて羨ましいんだ!!
935デフォルトの名無しさん:2011/04/14(木) 22:33:34.04
嫌いなの?
936デフォルトの名無しさん:2011/04/14(木) 23:04:27.74
ちょっと大き目のソフトを-gつきでリンクして
意味不明のダイアログが出てきて失敗した思い出しかない
937デフォルトの名無しさん:2011/04/14(木) 23:14:46.33
mingw-gdcとかってないの?
938デフォルトの名無しさん:2011/04/14(木) 23:27:41.52
普通にあるよね
939デフォルトの名無しさん:2011/04/15(金) 18:00:26.25
もうやだこのダメ言語・・・
ttp://ideone.com/iie3s

('A`)
940デフォルトの名無しさん:2011/04/15(金) 19:39:02.84
>>939
wwww
941デフォルトの名無しさん:2011/04/15(金) 20:01:23.33
alignはprivate:みたいな感じでスコープの断絶があるのかな?って想像はできるけど
Bはなんだろな
942デフォルトの名無しさん:2011/04/15(金) 20:18:56.51
D言語はバグとか破壊的変更といった鞭も多いけど高性能なforeachとかscopeとか飴も一杯ある

ここは一つDに飴をくっつけてDame言語と呼ぼうと思う
943デフォルトの名無しさん:2011/04/15(金) 20:47:17.49
>>939
2パスせまんてくすまじっく!
Dはだめじゃないよかわいいよ
944 忍法帖【Lv=4,xxxP】 :2011/04/15(金) 22:54:08.70
import式はgtkbuilderと相性がいいな。UIファイルと実行ファイルをまとめられる。
945デフォルトの名無しさん:2011/04/15(金) 22:58:06.59
>>942
何いってんだ飴ばかりじゃないかと言おうと思ったがDame言語が強まるだけだった。
946デフォルトの名無しさん:2011/04/15(金) 23:11:09.68
D言語は好きだけどD言語erの自虐的なMっぷりも大好き。
947デフォルトの名無しさん:2011/04/15(金) 23:33:11.64
Bugzillaの残り件数見てもなお、D2を使おうとする俺は、Mなんだろうなあ
948デフォルトの名無しさん:2011/04/15(金) 23:33:54.30
ウォルたん「バグ多くねーし。GCCと比べてもちょっと少ないし」
949デフォルトの名無しさん:2011/04/15(金) 23:36:01.62
ヒント:ユーザー数に対して見つかっているバグの数
950デフォルトの名無しさん:2011/04/15(金) 23:54:07.31
Dは仕様が明確だからC++みたいにバグがバグかどうか分からないという事例が少ないんだよ
951デフォルトの名無しさん:2011/04/16(土) 00:59:06.42
そりゃあもちろんバグじゃなく仕様だからな
952デフォルトの名無しさん:2011/04/16(土) 01:17:42.22
VisualDでリンクできねえええええええ
SDL.libとSDL_mixerだけはできてるうう
953921:2011/04/16(土) 04:57:15.84
GDC入れて落ち着いた。
DMDなんて、夢だったんや・・・。
954デフォルトの名無しさん:2011/04/16(土) 12:24:50.18
開発スタッフの人数に対して見つかっているバグの数を考えると憂鬱になる
955デフォルトの名無しさん:2011/04/16(土) 12:57:06.37
発見数は愛の指標だと思うことにした
956デフォルトの名無しさん:2011/04/16(土) 15:57:08.31
.libってバイナリじゃないの?

SDL_netのlibをリンクしようとすると
エラーがでる

エラー 3 Error 43: Not a Valid Library File
957デフォルトの名無しさん:2011/04/16(土) 16:00:24.07
>>956
LIBがCOFFなのでは
958デフォルトの名無しさん:2011/04/16(土) 21:14:50.67
そろそろ次スレの季節だな
↓テンプレに追加してほしい
■ IDE
ttp://www.dsource.org/projects/visuald (Visual D)
■ ライブラリ(OpenGL,SDLなどゲーム開発に便利な詰め合わせ)
ttp://www.dsource.org/projects/derelict (Derelict)
959デフォルトの名無しさん:2011/04/16(土) 22:03:18.32
ひょっとして忍法帖がいるのか?
960デフォルトの名無しさん:2011/04/16(土) 23:55:30.83
Derelictでかいし、SDL+OpenGLだけなら>>829のほうがすき
つうか確認のために踏んだら素材が増えてるよwww やったねたえちゃん!

libはBorland用の(omf)使うか、VC++用(coff)をcoff2omfで変換するか、
もしくはimplib /s xxx.lib xxx.dllでdllから自分で生成する。
この辺のことって今はどっか(友の会あたり?)に書いてあるのかしら。
961デフォルトの名無しさん:2011/04/17(日) 00:17:58.27
逆引きD言語のこともたまには思い出してあげてください・・・
http://wikiwiki.jp/dlang/
962デフォルトの名無しさん:2011/04/17(日) 00:22:48.54
現状見出しにある項目って公式和訳で完全に事足りるよね・・・
963デフォルトの名無しさん:2011/04/17(日) 00:24:44.08
>>829にlibつけてほしいけどライセンス的に問題あったっけ
964デフォルトの名無しさん:2011/04/17(日) 00:40:39.51
>>829 は文面から放置のにおいを感じたから
スルーするつもりだったのにw

もりもり増えてるじゃないか!
965デフォルトの名無しさん:2011/04/17(日) 15:42:36.00
966デフォルトの名無しさん:2011/04/17(日) 16:00:03.63
>>2にいったいなにが
967デフォルトの名無しさん:2011/04/17(日) 19:08:36.65
スペルインターセプト
968デフォルトの名無しさん:2011/04/18(月) 19:27:09.72
D言語は犠牲になったのだ...大量のバグによってな
969デフォルトの名無しさん:2011/04/18(月) 21:37:46.78
もしかして
class C
{
970デフォルトの名無しさん:2011/04/18(月) 21:39:13.38
static int Func() { return 2; }
}

とかして

C.Func()ってできない?

C inst = new C();
inst.Func()でなくて
971デフォルトの名無しさん:2011/04/18(月) 22:03:11.02
できるはず
972デフォルトの名無しさん:2011/04/18(月) 22:03:43.50
久々にバグに出会えたと思ったらデマかよ
973デフォルトの名無しさん:2011/04/18(月) 23:30:07.88
何で出来ないと思っちゃったのか気になる
974デフォルトの名無しさん:2011/04/18(月) 23:38:49.60
バグが出ないってのはアレだ、使い込みが足りない
1日10本ぷろぐらむを書く、それを日課にすべし
975デフォルトの名無しさん:2011/04/18(月) 23:46:40.91
コード2万本です
976デフォルトの名無しさん:2011/04/18(月) 23:49:13.43
それで足りるのか?
977デフォルトの名無しさん:2011/04/19(火) 18:03:22.85
import std.stdio;
class C
{
public:
static int func() @property { return data; }
private:
static int data = 13;
}

void main()
{
writeln(C.func);
}
978デフォルトの名無しさん:2011/04/19(火) 18:06:07.91
しまったまた書きこんでしまった

import std.stdio;
class C
{
public:
  static int func() @property { return data; }
private:
  static int data = 13;
}

void main()
{
  writeln(C.func);
}

これでコンパイル通らず5行目で'this' is only defined in non-static menber functions, not func
と出るのだがどういう意味ですか><
979デフォルトの名無しさん:2011/04/19(火) 18:13:43.26
普通にコンパイル通るし実行もできる@2.052
980デフォルトの名無しさん:2011/04/19(火) 18:43:59.12
あれ?コンパイル通ってしまった

スペルミスだろうか(#^ω^)ビキビキ
981デフォルトの名無しさん:2011/04/19(火) 18:45:28.83
スレ汚しすみません
982デフォルトの名無しさん:2011/04/19(火) 19:42:04.08
こんな感じのシングルトンクラスをマスターに作ってたんですが、
複数のスレッドからA.instance()を呼び出す際に、
ちょくちょくセグメンテーション違反で落っこちます。
static変数はスレッドセーフと思ってましたが、
根本的に何か間違っているでしょうか?

class A {
  B[] b;
  static A instance() {
    static A a;
    if(a is null) {
      a = new A();
    }
    a.update();
    return a;
  }
  void update() {
    B[] tmp;
    // 外部ファイルの更新チェック、読込み等。で、だいたいこの辺で落ちる
    synchronized(this) {
      b = tmp;
    }
  }
}
class B {}
983デフォルトの名無しさん:2011/04/19(火) 19:52:31.78
constでもなけりゃスレッドセーフじゃないんじゃね?
984デフォルトの名無しさん:2011/04/19(火) 20:12:55.09
>>982
D2はそうだけど、D1は違うよ。
985982:2011/04/19(火) 21:58:51.90
ありがとうございます。
log4cxxも同じような感じで使ってたんですが、
ログ出力を止めたら再現しなくなりました。

恐らく他(自分のコード)に問題がありそうなので調査してみます。
986デフォルトの名無しさん:2011/04/19(火) 22:39:43.69
>>985
ところで>>982のコードだと、スレッド別にAのインスタンスが生成されるが大丈夫か?
987デフォルトの名無しさん:2011/04/19(火) 22:57:48.81
>恐らく他(自分のコード)
Dに限っては疑うべきは自分のコードにあらず
988デフォルトの名無しさん:2011/04/19(火) 22:59:22.61
大丈夫じゃないと思います
989デフォルトの名無しさん:2011/04/19(火) 23:01:09.05
っていうかスレッド別に生成されるからスレッドセーフになってるんであって、
sharedにしたらふつーにsynchronizedにしないとダメなんじゃ
990デフォルトの名無しさん:2011/04/19(火) 23:36:19.88
gccにInterlockedIncrementが無いぜーと嘆いてたら、D言語なら文法レベルでサポートしてるぜ、
と言われたんですが、本当ですか。
991デフォルトの名無しさん:2011/04/19(火) 23:53:42.94
>>990
どんな話題だ、と思いつつ、、、
単体の命令には無いけど、synchronized文を使えば同じ事は出来るな。
てか、gccでも同じ関数使えるだろ。。。
992デフォルトの名無しさん:2011/04/20(水) 00:59:01.98
synchronized文は、その文を同時に複数実行できないようにするだけあって、
アトミック化するのとは違うのでは。
core.atomicってどうなってるのだろう。
993デフォルトの名無しさん:2011/04/20(水) 07:06:06.72
>>990
gccには__sync_add_and_fetchってあったような
994デフォルトの名無しさん:2011/04/20(水) 07:15:39.73
キーワード長ぇよ
せめてsyくらいにしてくれ
995デフォルトの名無しさん:2011/04/20(水) 10:51:42.66
>>986
そこは意図的にスレッド別に作ってます。
スレッド数が最大8程度なので、
同期を取って一つを使い回すよりかはこういう使い方のほうがいいかなと。
996デフォルトの名無しさん:2011/04/20(水) 15:12:25.23
>>994
お前studio容認派か
997デフォルトの名無しさん:2011/04/20(水) 20:46:23.63
うめ
998デフォルトの名無しさん:2011/04/20(水) 20:47:24.58
998
999デフォルトの名無しさん:2011/04/20(水) 20:48:25.57
999
1000デフォルトの名無しさん:2011/04/20(水) 20:49:27.97
100000000000000000000000000000!!!!!!!!!!!1111111
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。