13/01/21 12:39:54.40
プログラミング言語 D (D Programming Language) について語るスレッドです。
■本家
URLリンク(dlang.org) - 公式(英語)
URLリンク(www.kmonos.net) - 公式の和訳
URLリンク(d.puremagic.com) - D言語バグ報告
URLリンク(github.com) - D言語開発リポジトリ
■Wiki
URLリンク(dusers.dip.jp) - D言語友の会(日本語フォーラムあり)
URLリンク(prowiki.org) - Wiki4D(公認Wiki)
■前スレ
D言語 Part30
スレリンク(tech板)
■過去スレ、関連スレ
URLリンク(makimo.to:8000)
2:Win64ビルドをやりたい場合はMSVCをインストールしておくこと
13/01/21 12:41:38.26
■IDE
URLリンク(www.dsource.org) - Visual D(Visual Studioプラグイン)
URLリンク(code.google.com) - DDT(Eclipseプラグイン)
URLリンク(mono-d.alexanderbothe.com) - Mono-D (MonoDevelop プラグイン)
■ライブラリ
URLリンク(www.dsource.org) - DWT(GUIライブラリ)
URLリンク(www.dsource.org) - GtkD(GUIライブラリ)
URLリンク(github.com) - DFL(GUIライブラリ・非公式最新版)
URLリンク(www.dsource.org) - Derelict(SDL/OpenGLなどのポーティング)
URLリンク(www.ku6.jp) - 傾き指向プログラミング(SDLなどのポーティング)
■D言語で作られたゲーム
URLリンク(www.nicovideo.jp) - D言語で作られた芝ゲー niconico動画
URLリンク(www.asahi-net.or.jp) - ABA Games
3:デフォルトの名無しさん
13/01/21 15:17:29.09
新スレ記念にマジレスすると
Qt とか Python とか知ってしまうと
D いらないんだよね
4:デフォルトの名無しさん
13/01/21 16:59:54.30
dusers.dip.jp/ - D言語友の会(日本語フォーラムあり)
403
5:デフォルトの名無しさん
13/01/21 17:18:13.62
ひょっとしたら復活するかもしれないので一応そのままにしておいた
が、そろそろ一ヶ月たつから見込みは低い
避難所がほしいな
6:デフォルトの名無しさん
13/01/21 17:34:27.03
dmd.exe -c -inline -O -release -w -version=Unicode -version=Windows7 -version=WondersBuild -ofwonders\gdiplus.obj wonders\gdiplus.d
wonders\gdiplus.d(1147): Warning: min property is deprecated, use min_normal instead
wonders\gdiplus.d(6005): Error: class wonders.gdiplus.CachedBitmap identity assignment operator overload is illegal
7:デフォルトの名無しさん
13/01/21 18:46:05.48
core.sys.windows.windows 定義の数値型は64bitに対応できてないね
もうバグ報告されてるかもしれないけど
英語書けないので誰かよろしく…
8:デフォルトの名無しさん
13/01/21 20:12:47.72
LONG_PTRとかは対応してるけど
WPARAMとかLPARAMとかLRESULTがuintとかint決め打ちなのが原因みたい
9:デフォルトの名無しさん
13/01/21 21:29:01.16
やっぱりC/C++のintとかlongのサイズの型の定義モジュールがいるんだって
10:デフォルトの名無しさん
13/01/21 21:56:12.97
cintとかcfloatとかcdouble…
あれ?
11:デフォルトの名無しさん
13/01/21 22:09:45.22
まずcintを定義するために条件分岐が必要で、
次にDWORDみたいなのをcintを使って定義するために条件分岐が必要で…
12:デフォルトの名無しさん
13/01/21 22:10:58.37
別名定義と条件コンパイルで何とかしてくれという方針では
13:デフォルトの名無しさん
13/01/21 22:27:45.07
version(Win64) { }
14:デフォルトの名無しさん
13/01/21 22:34:29.65
(size_tじゃ)いかんのか?
15:デフォルトの名無しさん
13/01/21 23:36:13.58
com関連と64bitが整備されれば
Windows用のGUIアプリケーション作るときに視野に入ってくるんだけどな
手が届きそうなのに届かないw
16:デフォルトの名無しさん
13/01/23 12:43:45.25
関数の引数に構造体の代わりに alias thisした型を入れたら暗黙的に型変換してくれないかなぁ・・・
opAssignでいけるかと思ったらそんなことなかった
17:デフォルトの名無しさん
13/01/23 13:19:45.67
いや無理だろ
alias this以外にもメンバあったら死ぬじゃん
18:デフォルトの名無しさん
13/01/23 17:09:08.13
bgzlrks
19:デフォルトの名無しさん
13/01/23 20:23:01.64
なげーよ
20:デフォルトの名無しさん
13/01/23 20:38:05.86
>>18
ロシア大使館に言えよ
21:デフォルトの名無しさん
13/01/24 12:06:21.22
友の会 URLリンク(dusers.dip.jp)<)
年末につながらなくなっていたが両方とも復活した
22:デフォルトの名無しさん
13/01/25 03:28:31.95
ありがとうございます!
23:デフォルトの名無しさん
13/01/26 17:30:10.97
DDTは最新のeclipseに対応していないんだ
24:デフォルトの名無しさん
13/01/26 17:31:29.19
DDTステロ!
25:デフォルトの名無しさん
13/01/26 17:38:17.43
DMDscriptってコンパイル通し作業行われてないんですか?
26:デフォルトの名無しさん
13/01/26 19:44:56.20
ウォルター様は通し作業は有志が動作確認できるようにとわざわざチェックしないでリリースして下さります
27:デフォルトの名無しさん
13/01/26 20:27:51.33
ラムダ式の時だけじゃなくてもうすべての場所でreturn省略できたらいいのに
28:デフォルトの名無しさん
13/01/26 20:34:12.14
関数型言語とかはそうだな
でもあれ手続き型言語でやるとバグの温床だからな
29:デフォルトの名無しさん
13/01/26 20:37:26.34
ハゲの温床に見えた俺
そろそろ寝るか
30:デフォルトの名無しさん
13/01/26 20:40:59.94
return を廃止してその代わりに
関数の頭に fn みたいなキーワードを必須にするのなら
賛成してやってもいい
31:デフォルトの名無しさん
13/01/26 21:00:12.74
なにそのjavascriptの派生言語みたいなそれ やめろよ
32:デフォルトの名無しさん
13/01/26 21:07:14.30
それ何てrust
33:デフォルトの名無しさん
13/01/26 21:16:25.75
一文なら、という条件付きならいいんじゃね
34:デフォルトの名無しさん
13/01/26 21:20:10.90
>>28
詳しく知りたい
なんかまずいの?
35:デフォルトの名無しさん
13/01/26 21:26:13.10
return忘れても
別の値が返ってとりあえず動いてしまうとか
36:デフォルトの名無しさん
13/01/26 21:40:11.17
狙ってなくても戻り値を返してしまうからな
特に関数定義の頭で戻り値の型を明示しなくて良い場合(動的型や型推論付き)は
さらにややこしくなる、まあ組めなくはないけどね
37:デフォルトの名無しさん
13/01/26 22:58:43.29
そんなこと言ってたらOCamlとかバグの塊でとてもじゃないけど使えないみたいな状況になってるはずなんだけど
38:デフォルトの名無しさん
13/01/26 23:00:33.57
ウォルターの人生そのものであるD言語を
そう簡単に仕様変更するわけがないだろ!!
39:デフォルトの名無しさん
13/01/26 23:02:33.16
OCaml は型チェックが厳しいから。
40:デフォルトの名無しさん
13/01/26 23:15:46.04
少なくとも表向きは型のチェックなんてないように思うが
それでも型チェックがうるさいと判断するのかね?
41:デフォルトの名無しさん
13/01/26 23:19:56.11
OCamlは整数の加算と小数の加算で演算子が変わるほど厳しいじゃん・・・
42:デフォルトの名無しさん
13/01/26 23:22:29.97
関数が常に一文なら問題ないんじゃね
必ず戻り値を何か書かないといけないわけで
43:デフォルトの名無しさん
13/01/26 23:30:01.83
関数定義をラムダ式を代入でもいけるようにしてほしいわ・・・
44:デフォルトの名無しさん
13/01/26 23:40:12.59
enum func = (int a)=>a;
45:デフォルトの名無しさん
13/01/26 23:40:14.40
enum f = (int n){ return n+1; }; // 旧
enum f = (int n) => n+1; // lambda
戻り値型の省略なんてしなくていいからreturn省略したい
enum f = int(int n){ n+1; };
これでいいじゃない・・
46:デフォルトの名無しさん
13/01/27 00:11:52.28
それならセミコロンがないほうがいいな
最後の文にセミコロンが無い時に限りreturnの代わりになる、でどうだ
enum f = int(int n){ n+1 };
47:デフォルトの名無しさん
13/01/27 01:24:29.69
ラムダ式だけは何か趣味機能な気がする
これあると便利な事ってどういう分野なんだ
48:デフォルトの名無しさん
13/01/27 01:50:29.88
ラムダ式便利すぎるだろう
むしろ使わない方がおかしい
49:デフォルトの名無しさん
13/01/27 02:07:51.61
サッパリ想像できない
具体例がほしい
50:デフォルトの名無しさん
13/01/27 02:47:44.46
レンジとかアルゴリズム使わない人にはわからないかもね
51:デフォルトの名無しさん
13/01/27 04:46:41.37
普通のdelegateリテラルで十分な気がするんだけど
52:デフォルトの名無しさん
13/01/27 07:14:51.87
=>の糖衣構文はアルゴリズムに渡す時に素敵すぎるね
53:デフォルトの名無しさん
13/01/27 07:54:38.16
記述が短くなるというのは想像以上にいい
これは実際に使う場面に行き当たらないと実感するの無理かも
54:デフォルトの名無しさん
13/01/27 07:56:45.25
あれだ
推論可能な場面でいちいちautoでもvarでもなく
型名を書かなきゃいけないJavaとかに絶望するのといっしょの感覚かも
55:デフォルトの名無しさん
13/01/27 09:24:01.61
どうせ引数の型あんまり省略できないし、delegateとはreturnの有無の差くらいしか無いと思うんだけどなあ・・
56:デフォルトの名無しさん
13/01/27 09:31:30.61
便利かどうかなんて主観でしかないんだから互いに「お前がそう思うんならそうなんだろうお前ん中ではな」で終わる話
57:デフォルトの名無しさん
13/01/27 11:49:13.97
平行線だったのは結果論だけどなー。
その主観が交わる可能性があった以上、コピペでまとめちゃうのはいくないっすよ
58:デフォルトの名無しさん
13/01/27 12:00:05.55
( {...} ) <- こういうのがイヤ
59:デフォルトの名無しさん
13/01/27 12:01:17.46
俺は好き
60:デフォルトの名無しさん
13/01/27 12:48:16.97
>>58
ブレース消えるのいいよね
61:デフォルトの名無しさん
13/01/27 13:17:04.96
我・乱無駄の名において命ず・消え去れ無礼衆!
62:デフォルトの名無しさん
13/01/27 13:26:12.22
// delegateが無い場合
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 == ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 != ps;} });
hoge(new class Func : IFunc { void func(Parameter p1, Parameter p2) {return p1 < ps;} });
// delegateが使える場合
hoge((Parameter p1, Parameter p2) {return p1 == ps;});
hoge((Parameter p1, Parameter p2) {return p1 != ps;});
hoge((Parameter p1, Parameter p2) {return p1 < ps;});
// ラムダ式が使える場合
hoge((p1, p2) => p1 == ps);
hoge((p1, p2) => p1 != ps);
hoge((p1, p2) => p1 < ps);
>>55
俺は大差があると思う
63:デフォルトの名無しさん
13/01/27 13:57:07.48
ヒント:ラムダで引数の型が省略できる場合には関数リテラルでも同じ書き方ができる
64:デフォルトの名無しさん
13/01/27 13:59:44.79
URLリンク(dlang.org)
今までdeprecated で生き延びていた機能の多くが
2.061で抹殺されていることに気づいた
65:デフォルトの名無しさん
13/01/27 14:27:09.51
結局のところdelegateあるならラムダいらないんじゃね?と言う話
別にあって都合が悪いこともないから消せ!とは言わんけどw
66:デフォルトの名無しさん
13/01/27 14:50:42.78
ラムダは構文糖だからいらないと言われても困る
autoが消滅して型名を書けと言われたりscope(exit)が消滅してtry-finallyを書けと言われたりしたら俺はDを投げる
67:デフォルトの名無しさん
13/01/27 14:53:25.86
ラムダ要らない派とか今まで一人も出てきてないと思うけど
68:デフォルトの名無しさん
13/01/27 14:57:55.37
>>61
ダークフレイムマスター
69:デフォルトの名無しさん
13/01/27 19:38:44.30
complex型がいつ消えるかどきどきだわ・・・
70:デフォルトの名無しさん
13/01/27 19:59:21.59
消えたらC99の複素数関数をABI互換性を保って呼ぶ方法が無くなるのか?
71:デフォルトの名無しさん
13/01/27 20:00:11.78
std.complexじゃダメなの?
72:デフォルトの名無しさん
13/01/27 20:06:07.70
C99のcomplexはFPUだかSSEだかのレジスタ渡しだろ?
ライブラリ定義はstructに詰めた状態だからスタック渡しになってしまわね?
73:デフォルトの名無しさん
13/01/27 22:52:36.94
ライブラリ内でアセンブラで書いてあれば別にいいんじゃないの
あるいは何らかの最適化に通るのでもいいわけで
ABI互換性は困りそうだが
74:デフォルトの名無しさん
13/01/28 06:15:55.98
D言語って、
int[100] a, b;
a[] += b[];
で勝手にSIMD演算とかいうのやってくれるんですか?
75:デフォルトの名無しさん
13/01/28 07:13:31.71
>>74
URLリンク(www.kmonos.net)
頑張ってくれる可能性はあるけどわりと限界もある、みたいな感じ
76:デフォルトの名無しさん
13/01/28 11:06:58.13
ターゲット環境を明示してなければ勝手にそういうコードを吐くわけ無い
環境を特定するなら素直に core.simdで定義されている配列もどきを使うべし
77:デフォルトの名無しさん
13/01/28 14:26:03.01
classのコンストラクタで定義した変数をメンバーにしちゃえる的な機能がほしいなぁ
多分害悪の元なんだろうけど
class hoge
{
this()
{
int a = 0 as public;
}
}
見たいにしたらhoge.aが使えるみたいなね!
thisが一個のとき限定でいいからさぁ・・・
78:デフォルトの名無しさん
13/01/28 19:16:36.49
>>77
どんな意図の機能?
頑張れば既存の機能でやりたいことが解決できるかも
79:デフォルトの名無しさん
13/01/28 19:44:42.31
黒魔術ツールopDispatchがあるからなあ
ただコンストラクタで書くならメンバでいいだろという気がするが
80:デフォルトの名無しさん
13/01/28 19:52:33.02
現在のスコープから参照できるすべてのシンボルを列挙する__traitsが欲しい
あとそのシンボルが変数なのかモジュールなのかクラスなのか構造体なのか判別するのもついでに欲しい
81:デフォルトの名無しさん
13/01/28 19:59:59.78
C++の特殊化でなら省力のために欲しいかな
mixin無ぇーし
82:デフォルトの名無しさん
13/01/28 20:02:09.25
顧客が本当に必要だったもの:賢いIDE
83:デフォルトの名無しさん
13/01/28 20:17:53.73
IDEとか重いだけだよ!
84:デフォルトの名無しさん
13/01/28 21:31:09.49
DDTがeclipse4.2に入らないのが痛い
85:デフォルトの名無しさん
13/01/28 23:29:27.58
軽いIDEには需要があるのか
86:デフォルトの名無しさん
13/01/28 23:48:53.99
Sublime Textがそんな感じじゃない?
プロジェクト機能あるしD対応してるし
87:デフォルトの名無しさん
13/01/29 04:08:55.24
言語仕様の追加まで対応出来る賢いIDEをだな
88:デフォルトの名無しさん
13/01/29 12:34:31.13
IDEの触手の一端がウォルたんの脳みそに取り付いているだと…!?
89:デフォルトの名無しさん
13/01/29 19:19:11.01
IDE(CUI)
90:デフォルトの名無しさん
13/01/29 19:25:51.70
Integrated Drive Electronics
Integrated Development Environment
エンビロンメント?
91:片山博文MZパンク ◆0lBZNi.Q7evd
13/01/29 23:58:06.70
>>90
エンヴァイロンメント。
電子辞書を買いましょうね。
92:デフォルトの名無しさん
13/01/30 00:21:20.93
マクロまだー?
93:デフォルトの名無しさん
13/01/30 00:21:34.89
カタカナ表記につっかかるのはナンセンスだと思うけど
94:デフォルトの名無しさん
13/01/30 00:34:25.28
カタカナ表記としてもエンヴァイロンメント、エンバイロンメント以外に存在しない
95:デフォルトの名無しさん
13/01/30 01:31:06.21
ディーゲンゴも大五郎も大して変わらんしな
96:デフォルトの名無しさん
13/01/30 04:13:06.10
インバイロンメントさんが泣いてる
97:デフォルトの名無しさん
13/01/30 04:32:45.97
わーにんぐ・わーにんぐ
98:デフォルトの名無しさん
13/01/30 12:23:27.28
エンベロープメント
モーリメメント
ヤックデカルチュアメント
99:デフォルトの名無しさん
13/01/30 19:39:48.11
DPasteのコンパイラが止まってるじゃないかクソッタレー!
import std.stdio;
void main() {
// ポインタの配列
int i = 42;
int*[1] src = [&i];
// スライスの代入
int*[1] dest = src[];
// srcとdestの内容が違う! (2.061以降)
writeln(src, " == ", dest);
}
これが2.061の破壊的変更だったら欣喜雀躍するんだが…
100:デフォルトの名無しさん
13/01/30 20:08:25.15
>>99
githubの最新では直っているっぽい
101:デフォルトの名無しさん
13/01/30 20:17:56.79
>>100
おおっと、さすがにこういうのはすぐ発見されるんですね
Thx
102:デフォルトの名無しさん
13/01/31 01:43:11.46
override attribute is deprecated
ってどうすりゃいいの?
103:デフォルトの名無しさん
13/01/31 01:46:40.11
ああ、withoutか
104:デフォルトの名無しさん
13/01/31 14:35:15.40
void f(void delegate(int) dg) {}
f((i) { ... });
で推論できるなら
class C { this(int i){} }
C obj;
obj = new(10);
とかもできそうだよね
105:デフォルトの名無しさん
13/01/31 18:53:52.42
構造体ならそれでいいかも知れんけど
それでもやっぱりきもい
106:デフォルトの名無しさん
13/01/31 21:20:11.34
>>Error 42: Symbol Undefined _D6object9Exception6__ctorMFNaNbNfAyaAyakC6object9ThrowableZC9Exception (pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable))
⇒pure nothrow @safe Exception object.Exception.__ctor(immutable(char)[], immutable(char)[], uint, object.Throwable)
なんですかこれ・・・
あるし
class Exception : Throwable
{
@safe pure nothrow this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null)
{
super(msg, file, line, next);
}
@safe pure nothrow this(string msg, Throwable next, string file = __FILE__, size_t line = __LINE__)
{
super(msg, file, line, next);
}
}
107:デフォルトの名無しさん
13/01/31 21:44:53.91
2.061 に変えて自前のライブラリの再構築を忘れてたときに
そういうエラーを見た気がする
108:デフォルトの名無しさん
13/01/31 22:01:57.58
>>107
VisualD使ってるんだけどそれ見てもしかしてと思ってエラーログ確認したら
使用するDMDが2.060のDMD環境指してた・・・
VisualStudioShell起動中に2.060と2.061をディレクトリリネームで切り替えた覚えがあるけど
勝手に設定まで追従しやがったのか・・・
109:デフォルトの名無しさん
13/02/01 12:39:50.73
そういえば昔ErrorとExceptionがあったような気がしたんだけど、なんで片方なくなってるの?
110:デフォルトの名無しさん
13/02/01 13:03:51.57
なくなってないよ
ぜんぜんちがうよ
111:デフォルトの名無しさん
13/02/01 14:07:22.40
あれ?ほんとだ・・
公式のobjectのドキュメントに載ってなかったから無くなったのかと
112:デフォルトの名無しさん
13/02/02 09:11:57.85
タプルリテラルってないの?
113:デフォルトの名無しさん
13/02/02 09:27:53.05
ない
114:デフォルトの名無しさん
13/02/02 11:58:43.31
入るとしたらどんな構文になるんだろうな
Pythonみたいにしたらえらいことになりそうだけど
115:デフォルトの名無しさん
13/02/02 19:04:01.41
DDTでライブラリパスの追加とかlibファイルの追加ってどこでやるん?
116:デフォルトの名無しさん
13/02/02 21:09:34.98
タプル構文か・・・fortranの配列を採用しようじゃないか (/ a, b /)
117:デフォルトの名無しさん
13/02/02 21:19:05.80
(|a, b|)
(>a, b<)
(*a, b*)
(a, b)
(!a, b!)
{|a, b|}
118:デフォルトの名無しさん
13/02/02 21:44:37.48
ここでついに<a, b>の出番が
119:デフォルトの名無しさん
13/02/02 21:46:42.75
そういえばしばらく前の話だけど、タプルリテラルを
(a, b)みたいに書きたいからコンマ演算子廃止しようぜ、
という話がMLに出てたな。
120:デフォルトの名無しさん
13/02/02 21:58:14.18
コンマ演算子って実際、使われてるの? Dに限らずCとかでも
121:デフォルトの名無しさん
13/02/02 21:59:28.92
ラムダ式と組み合わせて使います
122:デフォルトの名無しさん
13/02/02 22:01:33.27
マクロで時々見る。#define f(x) (sideeffect(x), x + 1) とか。書いたやつ死ねとしか思わんが
123:デフォルトの名無しさん
13/02/02 22:05:53.34
for文の括弧内の各部に文を複数突っ込むときに使う気がする
124:デフォルトの名無しさん
13/02/02 22:10:38.72
for (i = 0, j = 0; i < x && j < y; i++, j++)
みたいな
125:デフォルトの名無しさん
13/02/02 22:10:59.88
forで複数突っ込みたいのは最後のとこだけだろうから、
++i, ++jの値がjではなく(i, j)のタプルになっても影響ないな
126:デフォルトの名無しさん
13/02/02 22:23:24.90
forの最後でたまに使うから無くなると困る
他にも
while ((x = foo()) == y) { } を
while (x = foo(), x == y) { } と書く事もなくもない
127:デフォルトの名無しさん
13/02/02 22:26:35.51
(x = foo(), x == y)の値がx == yではなく、(x, x == y)のタプルになって空ではないってことで無限ループしても
まあ影響ないな
128:デフォルトの名無しさん
13/02/02 22:57:20.76
なんか人いるみたいだし、ちょっとスレに張り付いてみる。
いまのDでこれが気になる、とかある?
129:デフォルトの名無しさん
13/02/02 23:11:33.70
構造体がテンプレートなら、内部の普通のメンバ関数も@safe pure nothrowを推論して欲しい。
void foo()(){...}ならできるけど
130:デフォルトの名無しさん
13/02/02 23:18:34.88
>>129
あー、Jonathanが欲しいといってたやつか。std.rangeとかでいろいろ苦労しているから
実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
対応するかは半々だなあ。
131:デフォルトの名無しさん
13/02/02 23:20:11.83
ちなみに、現状は「テンプレートの直下の関数」のみ推論が行われる。
void foo()() { ... } は
template foo() { void foo() { ... } }
の構文糖なので推論が効く、という仕組みになっている。
132:デフォルトの名無しさん
13/02/02 23:22:47.25
個人的に連想配列の使い勝手が悪い
~で連結したいしmapとかで回したい
133:デフォルトの名無しさん
13/02/02 23:30:05.36
>>132
~での連結はコンパイラ対応の範疇だな。
2つの結合したい連想配列に重複するキーがあるときどういう動作をすべきか、
という所が決まらないと駄目だと思う。
mapでまわすのはPhobosの範疇。しばらく前にそれっぽい話題がMLで出てた気が
するけど、特に話は進まずに終わったと思う…
そういう挙動を実現すること自体に問題はなさそうなので、enhanceをbugzillaに
投稿したら興味ある人が対応してくれるんじゃないかな。
134:デフォルトの名無しさん
13/02/02 23:38:09.82
自分は最近コンパイラにかかりっきりなので、正直Phobosまで手を入れる余裕が無い。
他の人のPullReqをレビューするぐらいが精一杯です。
135:デフォルトの名無しさん
13/02/03 00:07:51.37
rvalue refってどうなってるの?
136:デフォルトの名無しさん
13/02/03 00:23:47.64
>>135
まだセマンティクスがはっきりしていない。現在テンプレート関数で使える
auto refは、厳密には右辺値参照とは違うものなので、これをそのまま
非テンプレート関数にもってくることは出来ない(構文的にも意味論的にも)
Andreiが URLリンク(d.puremagic.com) で
Dにおける右辺値をrefで束縛した場合の挙動についてある程度書いてくれている。
興味深いのは、DはC++と違って参照型の変数が存在せず、関数の仮引数と戻り値
にのみrefが出現するため、右辺値を関数引数のrefで束縛しても「本質的には」
問題ない、という所かな。
とはいえ、実際には@systemな関数の内部で、ref引数からアドレスを取って
グローバル変数に束縛するなどのエスケープ問題が絡んでくるので、セマンティクスを
もっと詰めないと実装できない、というのが俺個人の現状認識。
結論:近いうちに状況が動く可能性は低い
137:デフォルトの名無しさん
13/02/03 00:30:46.53
そろそろ抜けます。このスレは時々覗いているので
面白そうな質問あったらそれなりに答えるつもりです。では。
138:デフォルトの名無しさん
13/02/03 00:49:20.05
乙
139:デフォルトの名無しさん
13/02/03 01:47:49.82
連想配列にclear()なりremoveAll()なりが無いのはもはや意味不明なレベル
140:デフォルトの名無しさん
13/02/03 01:59:45.45
いや clear あるっしょ・・・あれ、どこに書いてあったっけ?
141:デフォルトの名無しさん
13/02/03 02:15:36.29
dupも欲しいな
142:デフォルトの名無しさん
13/02/03 02:23:16.25
>>140
object.destroyのaliasでclearがあるけどこれ呼ばれてるんじゃね?
>>141
dup使えたぞ
ドキュメント無さそうだがww
143:デフォルトの名無しさん
13/02/03 02:39:50.10
マジダclearできた
替わりにこうしてた・・・
typeof(h) tmp;
tmp.swap(h);
で、h.dup.swap(h);がコンパイル通らなくて泣いてた
144:デフォルトの名無しさん
13/02/03 02:41:09.83
あれ?よく考えたらh.dup.swap(h);意味ないじゃん。何やってんだ俺
145:デフォルトの名無しさん
13/02/03 11:40:10.23
>>140-142
い、一体いつから…
ヒャアやっぱDはたまんねぇな!
146:デフォルトの名無しさん
13/02/03 11:49:37.17
dupはあるんだった
何かと勘違いしたわ
147:デフォルトの名無しさん
13/02/03 16:28:43.01
ポトペタなRAD今作ってるからGUI厨はちょっと待ってろ
148:デフォルトの名無しさん
13/02/03 16:38:16.81
♪~(・ε・。)ヒューー
boost licで頼む
149:デフォルトの名無しさん
13/02/03 16:40:58.13
ポトペタとかは比較的どうでもいいんだ
まともに保守されてるだけでもぶっちぎりに優れたライブラリになれる
150:デフォルトの名無しさん
13/02/03 18:32:28.27
逆に考えるんだ
唯一まともに保守されているから
公式のライブラリとして存在できていると考えるんだ
151:デフォルトの名無しさん
13/02/05 13:23:14.36
UDAってCTFEした値も取ってこれるのか
無茶しやがって
152:デフォルトの名無しさん
13/02/05 13:36:21.90
シンボルが欲しくなるな
153:デフォルトの名無しさん
13/02/05 23:48:43.40
templateは要素がひとつで同名って条件でtemplate名称を省略できるって
公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
使えちゃうのは合法?
template A(T){
class A{}
T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
}
※
auto x = new A!(int).A();
ではなく
auto x = new A!(int)();
として使用できてしまう。
154:前々スレ(Part29)より
13/02/05 23:57:39.76
143 :営利利用に関するLR審議中@詳細は自治スレへ : 2012/04/08(日) 17:55:55.18
>>140-141
メンバ一つに限るっていう条件は 2.058 で外れたとかどこかで見たような
Eponymous Template っていうらしい
155:デフォルトの名無しさん
13/02/06 00:06:06.75
Change Log見てもそれっぽいこと書いてないから怖いな・・
ありがとん
156:デフォルトの名無しさん
13/02/08 01:45:26.22
Templateパラメータで渡された型のクラスインスタンスをalias thisする方法あります?
struct S(T){
T t;
alias t this;
}
T型が同じファイルに定義されている場合はコンパイル通るけど
別ファイルの場合Tのメンバを呼ぶコードがundefined identifierとなりました
157:デフォルトの名無しさん
13/02/08 02:22:51.53
Dで作ったDLLをFreeLibraryするとホスト側が止まる(というか処理が戻ってこない)んですけど・・・
158:デフォルトの名無しさん
13/02/08 10:53:08.11
>>156
通ると思うけど…
リンク漏れの Symbol Undefined じゃなくて?
159:デフォルトの名無しさん
13/02/08 18:30:45.33
>>157
ソース無いからどうしようもないけど
静的呼び出ししたらどうなるよ?
160:デフォルトの名無しさん
13/02/08 19:34:02.45
>>159
今やってみました。静的リンクだと問題なく呼び出せました。
目的は実行時に激しくDLLのロード/アンロードをすることなのでLoadLibrary/FreeLibraryが必要だと思ってます。
DLL側、使用側のソースです→URLリンク(dpaste.dzfl.pl)
試しにDMDで作ったものでない(たとえば、SDLの)DLLを読み込ませてみましたが、そっちでは問題なくLoad/Freeできました
なんかDLLの作り方間違えてるのかな・・
161:デフォルトの名無しさん
13/02/08 21:44:06.14
>>160
横レス
なぜか最後のwriteln の中で死んでるっぽい
# デバッガが使えればみんな悲しまずに済むのに・・・!
試しにメッセージボックスに変えてみたらイケた
import core.sys.windows.windows;
MessageBoxA(null, "4 end".ptr, "message".ptr, 0);
162:デフォルトの名無しさん
13/02/08 22:15:23.76
core.runtimeのloadLibrary/unloadlibraryを呼んだらどうなる?
なんかGC関係の追加処理してそうだけど
163:デフォルトの名無しさん
13/02/08 22:22:33.15
呼び出し規約
164:デフォルトの名無しさん
13/02/08 22:31:37.13
>>163 よく読め
>>160はDLL内の関数を呼んではいないぞ
165:デフォルトの名無しさん
13/02/08 22:40:40.32
>>164
落ちる場所のアセンブリよく読め
スタック巻き戻してretするとこで落ちてる
DLL内の関数の呼び出し規約とは言ってない
166:160
13/02/08 23:27:18.56
呼び出し規約と聞いてよくわからないままいろいろ試しました。
alias extern(D) void* function(in char*) LoadLibrary_t;
alias extern(D) uint function(void*) FreeLibrary_t;
void main() {
writeln("1 load");
auto p = (cast(LoadLibrary_t)&LoadLibraryA)("plugin.dll");
writeln("2 ", (p is null) ? "error" : "ok");
writeln("3 free");
(cast(FreeLibrary_t)&FreeLibrary)(p);
writeln("4 end");
}
なんかこんな利用側コードで結局エラーが出なくなりました。
なんでDの呼び出し規約で正しい動きをするのか
まったくわけわかんないんですがこれでいいんでしょうか・・・
167:160
13/02/08 23:38:46.24
動いたように見えただけでなんも動いてなかった・・・適当なこと書いてごめんなさい
168:デフォルトの名無しさん
13/02/09 00:09:10.44
URLリンク(d.puremagic.com)
D DLLs close standard input/output streams when unloading
169:デフォルトの名無しさん
13/02/09 00:30:31.25
2007-10-07
(´・ω・`)
170:デフォルトの名無しさん
13/02/09 00:33:55.29
マジか。つまりDMDのDLL作成機能に実用性なし!
通りでD言語で作られたライブラリが一切DLL化されないわけだぜ
171:デフォルトの名無しさん
13/02/09 00:47:09.49
なあ、手元で>>160を動かしたら、何の問題もなく動いたんだが……
172:デフォルトの名無しさん
13/02/09 00:47:13.47
いや
173:デフォルトの名無しさん
13/02/09 00:57:20.66
マジマジ。ちゃんと全部出る。一行も変更してない。
1 load
2 ok
3 free
4 end
174:デフォルトの名無しさん
13/02/09 01:10:41.83
kankyouwo
175:デフォルトの名無しさん
13/02/09 01:11:38.05
xp
176:デフォルトの名無しさん
13/02/09 01:18:43.24
7 dame
177:デフォルトの名無しさん
13/02/09 08:12:52.75
mamamajika
178:デフォルトの名無しさん
13/02/09 16:31:15.36
>>156のわかった
alias thisするメンバがprivateだとundefined identifierになるぽい
これって動作としては正しい?
privateにしないと外からalias this対象がメンバとして触れちゃうから問題な気が・・
URLリンク(ideone.com)
179:デフォルトの名無しさん
13/02/09 17:03:54.30
>>178
逆に private な alias this はどんな動作になるべきだと考えてるの?
180:デフォルトの名無しさん
13/02/09 17:28:02.48
>>178
エスパーだが、こういうことがしたいのではないか
struct S
{
private:
T x;
public:
@property T getX() { return x; }
alias getX this;
}
181:デフォルトの名無しさん
13/02/09 17:44:02.76
>>180
YES!
182:デフォルトの名無しさん
13/02/11 22:29:44.30
あれ、clear って deprecated になってるじゃん
destroy の方が新しいのか
逆だと思ってたわ
183:デフォルトの名無しさん
13/02/11 23:08:46.70
デデデデストローイ
184:デフォルトの名無しさん
13/02/11 23:22:19.46
これって破壊的変更なんですかね
185:デフォルトの名無しさん
13/02/12 13:42:22.61
>>171
もしかしてDMD以外のコンパイラを使ってないか?
186:デフォルトの名無しさん
13/02/12 14:05:39.37
>>185
俺もxpでdmdだが問題出ない
load~freeを100回ループさせても正常
187:デフォルトの名無しさん
13/02/12 14:22:30.57
未だに修正されない理由はこれか!
188:デフォルトの名無しさん
13/02/12 14:39:03.09
>>168にある回避策を試すといいかも
副作用出るかは知らないが
189:デフォルトの名無しさん
13/02/13 19:38:22.65
確かに Win7/64 だと >>168に引っかかってるぽいけど
同じバイナリが WinXP/32 だと普通に動くな
190:デフォルトの名無しさん
13/02/15 02:52:24.19
同一の領域を指すレンジの距離ってどうにか簡単に得られませんか?
191:デフォルトの名無しさん
13/02/15 20:19:41.44
1.まず説明する能力を鍛えます
192:デフォルトの名無しさん
13/02/15 20:25:52.02
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
assert(distance(range1, range2) == 2);
のdistanceみたいな関数ないですか?
193:デフォルトの名無しさん
13/02/15 20:53:18.04
import std.algorithm;
range1.countUntil(range2);
194:デフォルトの名無しさん
13/02/15 20:56:53.49
間違えた
auto range1 = [0, 1, 2, 3];
auto range2 = range1.find(2);
auto range3 = range1.find(3);
assert(distance(range2, range3) == 1);
こっちのほうです。
195:デフォルトの名無しさん
13/02/15 21:01:53.65
indexOfで場所を取得して差の絶対値を取れば?
196:デフォルトの名無しさん
13/02/16 08:23:22.80
ややこしい型名のメンバーをautoで書きたい(;;.;;)
197:デフォルトの名無しさん
13/02/16 10:42:54.48
つ (T)
198:デフォルトの名無しさん
13/02/16 11:59:49.24
つalias
199:デフォルトの名無しさん
13/02/16 18:11:00.11
optlink のソースが公開されてるっぽい
アセンブリ 70% とか書いてあるのを見て俺はおまいらに託すことに決めたぜ
URLリンク(github.com)
200:デフォルトの名無しさん
13/02/17 20:46:00.37
たまに実行時定数がほしい
201:デフォルトの名無しさん
13/02/18 12:30:12.77
github ソースから最新を取ってきたら
alias INT = int; の構文がさっそく死んだ…?
202:デフォルトの名無しさん
13/02/18 14:29:36.52
URLリンク(wiki.dlang.org)
公式wikiがいい感じに作られている
次スレのテンプレに入れておこう
203:デフォルトの名無しさん
13/02/18 18:15:17.15
2.062
204:デフォルトの名無しさん
13/02/18 18:26:51.04
>>201
2.062 では消されていないようだ
てかgithubのブランチが分かれてよくわからなくなってるんだが
205:デフォルトの名無しさん
13/02/18 20:35:50.72
The D Programming Language Conference 2013
URLリンク(dconf.org)
206:デフォルトの名無しさん
13/02/18 22:38:15.93
>>204
masterが最新だと思っていたら 2.062 よりはるかに古かったぜ…
207:デフォルトの名無しさん
13/02/18 22:49:24.28
gitつかいにくw
208:デフォルトの名無しさん
13/02/18 23:29:35.25
opAssignが使えなくなった…
代替法あるん?
class C{
C opAssign(C c){
return this;
}
}
void main(){
C c = new C;
C d;
d = c;
}
Error: class temp.C identity assignment operator overload is illegal
209:デフォルトの名無しさん
13/02/18 23:52:55.23
同じ型のopAssignはもともと使えんぞ
210:デフォルトの名無しさん
13/02/19 00:07:59.38
まじっか
今までコンパイル通ってたから気付かなかった
じゃあみんなディープコピーしたい場合どうしてるん
211:デフォルトの名無しさん
13/02/19 00:26:29.64
ポリモが不要なら struct
必要なら mixinとか alias thisで誤魔化す
212:デフォルトの名無しさん
13/02/19 00:33:26.34
ウソです
ほんとは cloneとかdeepCopy とかいう関数を地道に呼んでます
213:デフォルトの名無しさん
13/02/19 01:21:16.89
そ、そう…がんばる
214:デフォルトの名無しさん
13/02/19 19:40:03.01
関数の引数の型で「.lengthが定義されている配列であればなんでも」という記法ってありましたっけ
215:デフォルトの名無しさん
13/02/19 21:24:53.37
static if (is(typeof(T.init.length)))
とかそういうこと?
216:デフォルトの名無しさん
13/02/20 00:16:31.82
>>208
classは参照型のセマンティクスを持っているので、自身と同じ型を取るopAssignは定義できない。
一方structは値型のセマンティクスなので、自身と同じ型を取るopAssignでも定義可能。
217:デフォルトの名無しさん
13/02/20 00:22:32.50
>>153
>templateは要素がひとつで同名って条件でtemplate名称を省略できるって
>公式のどこかで見た記憶があるんだけど下の例でクラスのAをtemplate名称なしで
>使えちゃうのは合法?
>
>template A(T){
> class A{}
> T s; ←A.Aとしてclassを参照するために邪魔になると思われるもの
>}
この用法は合法(TDPLに上の様な場合「メンバsはテンプレートAの外側からは
アクセスできなくなる」と書かれている)。またstd.traitsのテンプレートの多くは
この仕組みを使って細かい実装用のテンプレートを内側に隠している。
218:デフォルトの名無しさん
13/02/20 00:57:28.94
ありがとうメーン
219:デフォルトの名無しさん
13/02/20 15:03:21.31
githubから最新ソース使ってる人どれくらいいるかな
・新機能はいらないけどバグ修正はほしい -> staging
・PullRequestを出したい -> master を取得して staging/master/hogeFeatureのどれかへ
・最新機能を試したい -> master を取得して hogeFeatureを各自でマージ
こういう認識で合ってる?
masterとstaging のどちらが新しいと一概に言えないっぽいところが悩ましい
URLリンク(wiki.dlang.org)
誰か訳してくれないかな~(チラッ
220:デフォルトの名無しさん
13/02/20 19:25:56.86
>>214
「arr.lengthとarr[i]が定義されてるようなもの」ってことなら、
std.rangeのhasLengthとisRandomAccessRange使えばいいよ
221:デフォルトの名無しさん
13/02/20 23:33:05.73
> URLリンク(wiki.dlang.org)
残念だけど、今のところそこに書かれていることは
「こういうプロセスで開発したら良いんじゃない?」程度で
実際にそれに則って開発がされているわけではない。
stagingブランチは2.060のReleaseから作られているが、現状では
「ベータ版が出てる最中に、Release用のRegression fixとかを
masterとは別に積み上げるためのブランチ」程度の意味しかない。
222:デフォルトの名無しさん
13/02/20 23:36:28.91
>>220
ありがとうございます。
223:デフォルトの名無しさん
13/02/21 13:16:57.80
>>221
そうか。ありがとう
224:デフォルトの名無しさん
13/02/22 13:08:56.76
2/22 に 222get
ズサ━━⊂(゚Д゚⊂⌒`つ≡≡≡━━!!
225:デフォルトの名無しさん
13/02/22 18:49:57.59
惜しい・・・。君は実に惜しい逸材だったよ。
226:デフォルトの名無しさん
13/02/22 19:04:12.44
もうすぐ22:22ですね
227:デフォルトの名無しさん
13/02/23 00:07:53.66
>>130
>>>129
>実験パッチは作って試してみる予定。ただ、Fwdref問題がいっぱい出てくるかもしれないから
>対応するかは半々だなあ。
PullReq出して、マージされました。
URLリンク(github.com)
大きな問題が出なければ、2.063で使えるようになると思います。
228:デフォルトの名無しさん
13/02/23 00:40:11.25
2/22 22:22 に 222get
ズサ━━⊂(゚Д゚⊂⌒`つ≡≡≡━━!!
229:デフォルトの名無しさん
13/02/23 00:40:36.58
>>227
うおおお!
ありがとうございます!
230:デフォルトの名無しさん
13/02/23 00:47:00.25
>>228
localeおかしいぞ
231:デフォルトの名無しさん
13/02/23 07:28:58.42
>227
すげえええ
内部でrange関数使ってるからnothrowなのにnothrowじゃない日々ともおさらばだ!
232:デフォルトの名無しさん
13/02/23 14:16:00.62
隠していても俺がウスノロだってバレてしまうのかよッ
233:デフォルトの名無しさん
13/02/23 19:12:31.79
not ウスノロ
you're ウスベニウンコ
234:片山博文MZパンク ◆0lBZNi.Q7evd
13/02/24 00:07:31.36
COBOLからD言語への変換って面白そうだね
235:デフォルトの名無しさん
13/02/24 00:13:17.53
実用性ゼロの最悪の選択だ
236:デフォルトの名無しさん
13/02/24 03:46:42.64
rubyをDに変換して、さらにJavaで動くように変換したら凄いことになりそう
237:デフォルトの名無しさん
13/02/25 15:51:16.98
>>235
バカタ山に構うな
238:デフォルトの名無しさん
13/02/25 16:46:43.58
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
239:デフォルトの名無しさん
13/02/25 17:58:44.93
遠隔操作で片山が逮捕されたと聞いたとき、最初に思い浮かんだ片山は(ry
240:デフォルトの名無しさん
13/02/25 18:44:21.72
なぜDじゃなくてC#なんて比較的ショボい言語を使ったんだ
241:デフォルトの名無しさん
13/02/28 17:44:20.81
Dを使った方はまだ極秘で捜査を進めている段階で情報を出すことが出来ない
242:デフォルトの名無しさん
13/02/28 19:28:26.70
でもC#のref/outとかプロパティとかはたまに欲しくなるんだ