如何使std :: get成为成员方法?

时间:2013-07-11 05:06:20

标签: c++ templates tuples

std::get link获取元组的元素。重载函数有许多版本。如果我有一个派生自元组的类,并想通过使用std :: get引入一个成员方法Get()来获取元组元素。我是否需要为std :: get的每个版本编写成员方法,否则我只能写一个?

template<class... Args>
class Data
    : public std::tuple<Args...>
{
public:
    typedef std::tuple<Args...> TupleTy;

    // This is only one version.
    template<unsigned N>
    (typename std::tuple_element<N, TupleTy>::type)& Get()
    {
        return std::get<N>(*this);
    }
};

0 个答案:

没有答案