As already noted, new lexical_cast disables whitespace skipping, which breaks 
cases like

  lexical_cast<int>(" 1");

I've just found a more serious consequence: 

    class Estimation_context {
    public:
          Estimation_context() {}

    private:
         int resource_count;
         int eta_ir1;
         int bline1;

        friend std::istream& operator>>(std::istream&, Estimation_context&);
  };

   istream& operator>>(istream& is, Estimation_context& c)
   {
       is >> c.resource_count >> c.eta_ir1 >> c.bline1;
       return is;
   }

More complex version of this code used to work, but now 

     lexical_cast<Estimation_context>("50 0 1 ");        

throws exception, because embedded spaces are not skipped. If I write

    is >> c.resource_count >> ws >> c.eta_ir1 >> ws >> c.bline1;

everything works, but is this a good solution? I think not skipping whitespace 
in operator>> is idiomatic usage and I would not like adding those "ws" to 
all operators>> just for lexical_cast sake.

- Volodya

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to