]> git.tdb.fi Git - libs/core.git/blobdiff - source/strings/lexicalcast.cpp
Deprecate various meta-programming constructs in favor of std ones
[libs/core.git] / source / strings / lexicalcast.cpp
index 2fc4be35c182f2d3dde801212580b2329df7a4b1..1c1f72010cc49c6b55c9013b4fc5bd4fbd662d75 100644 (file)
@@ -10,12 +10,8 @@ namespace {
 
 using namespace Msp;
 
-template<typename T>
-struct IsSigned
-{ enum { result = !(static_cast<T>(-1)>0) }; };
-
 /* Helper to avoid warnings about an unsigned type never being < 0 */
-template<typename T, bool f = IsSigned<T>::result>
+template<typename T, bool f = is_signed<T>::value>
 struct IsNegative
 { static bool eval(T v) { return v<0; } };
 
@@ -25,7 +21,7 @@ struct IsNegative<T, false>
 
 /* Helper to avoid errors about ambiguous function calls since there are no
 overloads of abs for unsigned types */
-template<typename T, bool f = IsSigned<T>::result>
+template<typename T, bool f = is_signed<T>::value>
 struct Absolute
 { static T eval(T v) { return v<0 ? -v : v; } };
 
@@ -119,7 +115,7 @@ T str_to_int(const string &s, const Fmt &f)
        bool neg = false;
        if(*i=='-')
        {
-               if(!IsSigned<T>::result)
+               if(is_unsigned<T>::value)
                        throw lexical_error(format("conversion of '%s' to unsigned integer", s));
                neg = true;
                ++i;