返信する: 汎用質問板



オプション

参照

Re: pureとnothrowの判定
投稿者: SHOO 投稿日時: 2009/9/9 2:08
バグっぽい気がしますね。

#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()
}}}
こうするとうまく動作しなくなります。
謎です。(というかたぶんバグ)
メインメニュー

ログイン

ユーザー名:


パスワード:





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

Menu