2012-04-13 4 views
6

다음 예제에서 멤버 함수의 반환 형식을 가져 오는 방법은 무엇입니까?멤버 함수의 decltype

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

물론 문제는 MyClass를 정의하는 동안 "mygetter"개체가 ​​없다는 것입니다.

내가하려고하는 것은 : getter가 반환 한 것이 무엇이든지간에 키를 사용할 수있는 캐시를 생성하는 것입니다.

답변

11

나는 당신이 원하는 것이 확실하지 않지만, mygetter은 단순히 Getter 유형의 모든 객체로 생각됩니다.

typedef decltype(std::declval<Getter>().get()) gotten_t; 
+0

헤이 오, 나는 그것에 대해 알지도 못하는 (당신이 유일한 유형 공제에 사용할 수 있습니다) 다른 것없이 이러한 객체를 얻기 위해 std::declval를 사용합니다. 멋지다! 나는 항상'Getter(). get()'을 사용했고'Getter'는 기본적으로 생성 가능하다고 가정했습니다. –

관련 문제