thisとalias thisの優先順位


投稿ツリー



前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/10/17 0:13
ゲスト 
class S {
}
 
class T {
  S val;
  alias val this;
}
 
void main() {
  auto t = new T;
  t.val = new S;
  // t or t.val
  destroy(t);
}

上記のコードで、destroyにSとTのどちらが渡っているのかが曖昧なので、コンパイラで弾くべきでは?と思ったのですが、優先順位のようなものがあるのでしょうか?

よろしくお願いします。
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2013/10/19 9:07
SHOO  管理人   投稿数: 658
その例だと基本Tが優先です。
(ただし、例だとtが破壊された時点でt.valにはアクセスできなくなるため、どちらが先に壊されるかは不定ですね)

ただし、現在druntimeにバグが有り、Sのほうが先に壊されてしまっているようです。
バグ報告しておきました。

http://d.puremagic.com/issues/show_bug.cgi?id=11294
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013/10/19 18:31
ゲスト 
なるほど、そういうことでしたか。
回答ありがとうございました。
投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文

  条件検索へ


メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu