CTFE時にdelegateの配列が正しく作られない

投稿ツリー


このトピックの投稿一覧へ

なし CTFE時にdelegateの配列が正しく作られない

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/3/31 9:30
satoru_h  新米   投稿数: 9
CTFE時にdelegateを返す関数の返り値(=delegate)の配列が正しく作られない問題が発生しました.

Linux/dmd 2.042

#code(d,title=test.d){{{
int delegate() delegatize(int n_)
{
auto n = n_; // Issue 4027
return { return n; };
}

static assert([delegatize(0), delegatize(1)][0]() == 0); // Error: static assert (1 == 0) is false
}}}

以下のコードのコンパイル結果から
[delegatize(0), delegatize(1), /*...*/, delegatize(n)]
とした場合
[delegatize(n), delegatize(n), /*...*/, delegatize(n)]
な配列が作られているように思います.
#code(d){{{
pragma(msg, [delegatize(0), delegatize(1), delegatize(2)][0]());
pragma(msg, [delegatize(0), delegatize(1), delegatize(2)][1]());
pragma(msg, [delegatize(0), delegatize(1), delegatize(2)][2]());
}}}

#code(console){{{
dmd test.d -c
2
2
2
}}}
投票数:70 平均点:3.29
返信する

この投稿に返信する

題名
ゲスト名
投稿本文

  条件検索へ


メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu