使用vector和push_back开始使用boost mpl

时间:2013-03-18 06:47:46

标签: c++ boost vector boost-mpl push-back

我一直在摸不着头脑,我发现使用MPL非常难以绕过并希望有人能让我开始。这是我正在开发的类中的一些部分代码,它不使用MPL。我最终想在编译时实现这个类。这段代码可能没有意义,但我不想要MPL中的所有解决方案 - 希望我能自己实现(见下面的特殊帮助)。

class define_cell_type{
public:
    define_cell_type () = default;
    define_cell_type (const std::string& name_of_cell) : 
            cName {name_of_cell} {};

    double& add_variable (const std::string& Name,
            const double& init_value,
            VARIABLE declr_type = VARIABLE::STATIC_V)
    {
       vInit_val.push_back(init_value);
       vData.push_back( std::make_tuple(Name) );
            return vInit_val.back();
    };

private:
    std::string cName;
    std::vector<double> vInit_val;
    std::vector<variable_tuple> vData;
};

要开始,我如何在double类型的mpl :: vector上执行push_back?这是一个我想要开始的例子,类似于我正在开发的类中的函数。

std::vector<double> state;
double& add_variable ( const double& init_val)
{
    state.push_back(init_val);
    return state.back();
} 

int main() {
    auto var1 = add_variable (12.2);
    auto var2 = add_variable (1.2);
    auto var2 = add_variable (6.4);
}

我能得到的就是这样的东西

typedef mpl::vector<double> state;
typedef mpl::push_back<state,double>::type types;

如果有人让我开始,我会很感激,产生一个编译时矢量,其价值推回上面的例子

0 个答案:

没有答案