std::vector<T> vector(ElementTypes... els)
{
    std::vector<T> coll;
    size_t num_els = vararg_len<ElementTypes...>::len;
    coll.reserve(num_els);
    populate_vector(coll, els...);
    return coll;
}
示例#2
0
  void driver()
  {
    meter_vector results;
    std::vector<double> inputs = {1.0, 10.0, 12.25};
    std::vector<double> expected = {1.0, 1000.0, 1609.34,
				    10.0, 10000.0, 16093.4,
				    12.25, 12250.0, 19714.5};
    for (double input : inputs) {
      populate_vector(fr::oonits::meters(input), &results);
      populate_vector(fr::oonits::kilometers(input), &results);
      populate_vector(fr::oonits::miles(input), &results);
      // Will result in a surprisingly informative error message
      // in gcc 4.9.0
      // populate_vector(fr::oonits::celcius(input), &results);
    }
    for (int i = 0; i < expected.size(); ++i) {
      std::cout << "Expected: " << expected[i] << " result: " << results[i].units << std::endl;
      CPPUNIT_ASSERT(equalish(expected[i], results[i].units));
    }
  }
inline void populate_vector(std::vector<T>& coll, Arg_T arg, RestTypes... rest_args)
{
    coll.push_back(arg);
    populate_vector(coll, rest_args...);
}