- typename T::value_type tmp;
- std::istringstream ss(a);
- ss>>tmp;
- if(ss.fail())
- throw usage_error("Invalid argument for --"+lng);
-
- data.push_back(tmp);
+ try
+ {
+ data.push_back(lexical_cast<typename T::value_type>(a));
+ }
+ catch(const lexical_error &e)
+ {
+ throw usage_error("Invalid argument for --"+lng+" ("+e.what()+")");
+ }