C++ 从boost::fusion::tuple访问第0个元素

C++ 从boost::fusion::tuple访问第0个元素,c++,boost,tuples,boost-fusion,C++,Boost,Tuples,Boost Fusion,通常,我会通过以下方式访问常规元组元素,比如0 mytuple->get<0>(); 但是,如果元组的类型为boost::fusion::tuple,那么如何访问第0个元素 更多细节 我有类似的东西 typedef boost::fusion::tuple<double,double,double,std::string,double,double,int, double,double,double,double

通常,我会通过以下方式访问常规元组元素,比如0

mytuple->get<0>();
但是,如果元组的类型为boost::fusion::tuple,那么如何访问第0个元素

更多细节

我有类似的东西

typedef boost::fusion::tuple<double,double,double,std::string,double,double,int, 
                            double,double,double,double,int,  
                            double,double,double,double,double,
                            double,double,double,double,double,
                            double,double,double,double> tuple_def; 

typedef boost::shared_ptr<tuple_def> my_tuple_def;
现在我使用它如下

shared_tuple_def btuple = boost::make_shared<tuple_def>(boost::fusion::make_tuple(323,0,0,"A",0,0,0,
                                                                                  0,0,0,0,0,
                                                                                  0,0,0,0,0,
                                                                                  0,0,0,0,0,
                                                                                  0,0,0,0));
如何访问第0个元素323?

您可以使用

你可以用

您可以使用或:

您可以使用或:


我敢问tuple_def到底是什么意思吗?它就像一大堆双元组和其他一些随机片段,似乎是使用结构而不是元组的好选择。最初它只有5个元素,直到它增加到这么多。我最终会将其转换为结构。tuple_def是First类型的def。第一个typedef在下一个语句中使用。我想这就是我几乎完全避免使用元组的原因。它从5个元素开始,接下来是25个元素,很难修复我敢问tuple_def到底是什么意思吗?它就像一大堆双元组和其他一些随机片段,似乎是使用结构而不是元组的好选择。最初它只有5个元素,直到它增加到这么多。我最终会将其转换为结构。tuple_def是First类型的def。第一个typedef在下一个语句中使用。我想这就是我几乎完全避免使用元组的原因。它从5个元素开始,接下来是25个元素,很难修复
int main()
{
    shared_tuple_def btuple = boost::make_shared<tuple_def>
    (
        boost::fusion::make_tuple
        (
            323, 0, 0, "A", 0, 0, 0,
            0, 0, 0, 0, 0,
            0, 0, 0, 0, 0,
            0, 0, 0, 0, 0,
            0, 0, 0, 0
        )
    );
    std::cout << boost::fusion::get<0>(*btuple) << std::endl;
}
#define FUSION_MAX_VECTOR_SIZE 26
#include <string>
#include <iostream>
#include <boost/fusion/tuple.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/mpl/int.hpp>
typedef boost::fusion::tuple<double,double,double,std::string,double,double,int, 
                            double,double,double,double,int,  
                            double,double,double,double,double,
                            double,double,double,double,double,
                            double,double,double,double> tuple_def; 

typedef boost::shared_ptr<tuple_def> shared_tuple_def;

int main() {
    shared_tuple_def btuple =
        boost::make_shared<tuple_def>(
            boost::fusion::make_tuple(
                323,0,0,"A",0,0,0,
                0,0,0,0,0,
                0,0,0,0,0,
                0,0,0,0,0,
                0,0,0,0));

    std::cout << boost::fusion::get<0>(*btuple) << "\n";
    std::cout << boost::fusion::at<boost::mpl::int_<0> >(*btuple) << "\n";
}