title: Getting started with boost mpl with vector and push_back
body: <p>I've been scratching my head for far too long, I'm finding using MPL very difficult to get around and hoping somebody can get me started. Here is some <strong>partial</strong> code from a class I am developing which does not use MPL. I eventually want to implement this class all at compile time. This code probably won't make sense but I don't want all the solution in MPL - hopefully I can achieve that myself (see below for particular help).</p>
  
  <pre><code>class define_cell_type{
  public:
      define_cell_type () = default;
      define_cell_type (const std::string&amp; name_of_cell) : 
              cName {name_of_cell} {};
  
      double&amp; add_variable (const std::string&amp; Name,
              const double&amp; 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&lt;double&gt; vInit_val;
      std::vector&lt;variable_tuple&gt; vData;
  };
  </code></pre>
  
  <p>To get started, how do I do push_back on an mpl::vector of type double? here is an example I want to begin with similar to the function in the class I'm developing. </p>
  
  <pre><code>std::vector&lt;double&gt; state;
  double&amp; add_variable ( const double&amp; 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);
  }
  </code></pre>
  
  <p>All I can get is something like this</p>
  
  <pre><code>typedef mpl::vector&lt;double&gt; state;
  typedef mpl::push_back&lt;state,double&gt;::type types;
  </code></pre>
  
  <p>I would be grateful if somebody got me started, to produce a compile time vector with values pushing back the example above</p>