X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fstrings%2Flexicalcast.cpp;h=1c1f72010cc49c6b55c9013b4fc5bd4fbd662d75;hp=f5b3a95ee9af7ea0db2e1865b709dadf77dbf1de;hb=641a71730a0135fe647f6a230e9704d8b677f2c5;hpb=9f754b788b872f9768af8c3a4f9e001a588e011a diff --git a/source/strings/lexicalcast.cpp b/source/strings/lexicalcast.cpp index f5b3a95..1c1f720 100644 --- a/source/strings/lexicalcast.cpp +++ b/source/strings/lexicalcast.cpp @@ -10,12 +10,8 @@ namespace { using namespace Msp; -template -struct IsSigned -{ enum { result = !(static_cast(-1)>0) }; }; - /* Helper to avoid warnings about an unsigned type never being < 0 */ -template::result> +template::value> struct IsNegative { static bool eval(T v) { return v<0; } }; @@ -25,7 +21,7 @@ struct IsNegative /* Helper to avoid errors about ambiguous function calls since there are no overloads of abs for unsigned types */ -template::result> +template::value> struct Absolute { static T eval(T v) { return v<0 ? -v : v; } }; @@ -113,13 +109,13 @@ T str_to_int(const string &s, const Fmt &f) if(s.empty()) throw lexical_error("conversion of '' to integer"); - string::const_iterator i = s.begin(); + auto i = s.begin(); // See if the input starts with a sign bool neg = false; if(*i=='-') { - if(!IsSigned::result) + if(is_unsigned::value) throw lexical_error(format("conversion of '%s' to unsigned integer", s)); neg = true; ++i; @@ -389,7 +385,7 @@ T str_to_flt(const string &s, const Fmt &) if(s.empty()) throw lexical_error("conversion of '' to floating-point"); - string::const_iterator i = s.begin(); + auto i = s.begin(); // See if the input starts with a sign bool neg = false;