1

std::get linkはタプルの要素を取得します。オーバーロードされた関数には、いくつかのバージョンがあります。タプルから派生したクラスがあり、メンバー メソッド Get() を導入して、std::get を使用してタプル要素を取得したい場合。std::get のバージョンごとにメンバー メソッドを作成する必要がありますか? それとも 1 つしか作成できませんか?

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);
    }
};
4

0 に答える 0