14

私には、D テンプレートのすべての例を速記で書いた教授がいます。

T exec(alias f,T)(T t) {
    return f(t);
}

これが何を意味するのかを説明する例が見つかりません。誰かここで説明できますか?

4

2 に答える 2

4
T exec(alias f,T)(T t) {
    return f(t);
}

これは簡略化されたテンプレート関数です。« 通常の書き方 » は次のとおりです。

template exec(alias f, T) {
    T exec(T t) {
        return f(t);
    }
}

ではD、テンプレート スコープ内のシンボルがテンプレート自体と同じ名前の場合、それをテンプレートとして使用できます (エイリアスのようなものです)。

次に、aliasテンプレート パラメーターは、それが何でもかまいません – 任意のシンボルであることを意味します。ここでは、デリゲート、関数、フォンクターなど、何でもかまいません。先生がstd.functional.unaryFun.

パラメータはT、C++ と同様に、単なる型シンボルです。

その関数はファンクターを適用するだけです。最強のバージョンは次のとおりです。

https://github.com/D-Programming-Language/phobos/blob/master/std/functional.d#L39

于 2012-12-10T09:31:15.863 に答える