0

それで、しばらくいじった後、私はそれを得ることができません...なぜこれはまだ標準の一部ではないのでしょうか?

template<class T> accept_all(T) {}
void give_void() {}
int give_int() { return 1;}

int main() {
accept_all(give_void());
accept_all(give_int());
}

これにより、テンプレート クラスの特殊化を使用する手間が大幅に軽減されます...そして、一般的な構文に関しては、void を返すことができて void を渡すことができないということはほとんど意味がありません。

このことを呼び出すだけのメソッドタイプごとに醜い「メディエータークラス」を特殊化することを伴わずにできることはありますか?

ありがとう。

編集:関数の戻り値を受け入れるテンプレートを実装する良い方法は何でしょうか?

4

2 に答える 2

3

本当に奇妙に見えると思います。これらの関数を連続して呼び出さない理由:

give_void();
accept_void();

はるかにきれい。

accept_void(give_void());実際には、入力する必要がある記号の数が同じであっても、入力しても何も節約できません。

編集あなたが達成したいことを本当に理解しているかどうかはわかりませんが、:

template <typename Result, typename Callable>
static Result func(Callable c)
{
    return c();
}
于 2012-07-30T12:11:45.403 に答える