2014-04-08 4 views
0

getValue 메소드를 작성하려면 어떻게해야합니까? 가능합니까? 도와주세요.튜플 요소를 반환하는 방법

template <typename... Args> 
    class Base 
    { 
     private: 
     std::tuple<Args...> v_tuple; 

     public: 
     /.../ getValue(const int a){ 
     return std::get<a>(v_tuple); 
    } 

    }; 
+2

런타임 유형 정보는 거의 사라졌습니다. 이 함수는 아무 의미가 없습니다. 가능하다면,'std :: get'이 이런 식으로 작동한다고 생각하지 않습니까? :) – filmor

+0

하지만 'a'는 const int이므로 컴파일러는 – user3403717

+0

값을 알고 있습니다. 함수 인수의 cv-modifiers는 함수 본문의 모드 *를 결정합니다. 외부에서 전달하는 것은 int (상수 또는 비상유)처럼 보이는 한 여기에서 부적합합니다. – filmor

답변

0

는 함수에 전달하면 아니, 당신은 a는 (아무와 함수 본문에 const int를 구성, 거 도움이되지 임) constexpr 할 필요가 없습니다 수 있기 때문이다. 대신 템플릿 인수를 사용할 수 있습니다.

template<std::size_t I> 
auto getValue() -> decltype(std::get<I>(v_tuple)) { 
    return std::get<I>(v_tuple); 
}