6

次の例でメンバー関数の戻り値の型を取得するにはどうすればよいですか?

template <typename Getter>
class MyClass {
   typedef decltype(mygetter.get()) gotten_t;
 ...
};

もちろん、問題は、MyClass を定義するときに「mygetter」オブジェクトがないことです。

私がやろうとしているのは、ゲッターから返されたものをキーとして使用できるキャッシュを作成していることです。

4

1 に答える 1

11

あなたが何を望んでいるのかよくわかりませんが、mygetter単に type の任意のオブジェクトであると思われますGetter。そのようなオブジェクトを取得するために使用std::declvalします (型推論にのみ使用できます)。

typedef decltype(std::declval<Getter>().get()) gotten_t;
于 2012-04-13T17:30:16.547 に答える