Re: pureとnothrowの判定

投稿ツリー


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

なし Re: pureとnothrowの判定

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009/9/9 2:08
SHOO  管理人   投稿数: 658
バグっぽい気がしますね。

#code(d){{{
import std.traits : ParameterTypeTuple;

template isNothrowFunction(alias fun)
{
enum isNothrowFunction = is(typeof(
{
void test() nothrow
{
ParameterTypeTuple!fun args;
fun(args);
}
}()));
}

template isPureFunction(alias fun)
{
enum isPureFunction = is(typeof(
{
static void test() pure
{
ParameterTypeTuple!fun args;
fun(args);
}
}()));
}


void fn(){}
void fnNothorw() nothrow {}
void fnPure() pure {}

static assert(isNothrowFunction!fn == false);
static assert(isNothrowFunction!fnNothorw == true);
static assert(isPureFunction!fn == false);// Error: static assert (1 == 0) is false
static assert(isPureFunction!fnPure == true);
}}}
こうあるべきなのに、うまくいかない…ということでしょうか。

それと、その過程で変な事を発見しましたが…
#code(d){{{
void test() nothrow
}}}
この個所を、
#code(d){{{
nothrow void test()
}}}
こうするとうまく動作しなくなります。
謎です。(というかたぶんバグ)
投票数:125 平均点:4.64
返信する

この投稿に返信する

題名
ゲスト名
投稿本文

  条件検索へ


メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu