Boost logo

Boost Users :

Subject: [Boost-users] [Ranges] make_view: when will it be part of a release?
From: Christoph Duelli (christoph.duelli_at_[hidden])
Date: 2009-01-11 06:24:46


I recently had the need to produce from a vector<uint> a string
representation (like for IPs) like "23.1.4.742.234.0".

I thought that if only those were uints were strings I could
boost::join them together.

After a bit of searching the internet I found: make_view... very helpful, as
indeed operating on iterators and containers only is a bit restrictive.

So, first, I'd like to express my thanks for providing such
helpful libraries (I love it how Boost.Bind and ASIO fit together, e.g.!).
Great job everyone!

Is there a better way to get to the string
representation hinted to above? What I did is:

#include <boost/view.hpp> // not yet part of Boost 1.37

   // Helper to convert an uint to a std::string
   struct Stringer
   {
      std::string operator() (unsigned u) const
      {
         return boost::lexical_cast<std::string>(u);
      }
   };

   boost::function<std::string(unsigned)> stringer = Stringer();
   // way better than writing the loop by hand!
   std::string s = boost::join(boost::make_view(data_, stringer), ".");
   // Does not compile with gcc 4.2.1
   // std::string s = boost::join(boost::make_view(data_, Stringer()), ".");

Is there some existing class that makes my helper class Stringer
unnecessary? (Can I use lexical_cast here w/o a helper class?)
Is it possible to avoid putting the functor into a local Boost.Function
variable?
When will range_ex and make_view() be part of a Boost release? 1.38?
(Please?)

Best regards, and thank you

-- 
Christoph Duelli

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net