make nullable portable
authorKonrad Rosenbaum <konrad@silmor.de>
Tue, 3 Jan 2017 20:43:40 +0000 (21:43 +0100)
committerKonrad Rosenbaum <konrad@silmor.de>
Tue, 3 Jan 2017 20:43:40 +0000 (21:43 +0100)
Change-Id: I00c8e8b8b8d1d32bc52035528ebf7a504effb33e

qtbase/include/nullable.h

index b246cc0..86bcae4 100644 (file)
@@ -11,6 +11,8 @@
 #define WOLF_BASE_EXPORT Q_DECL_IMPORT
 #endif
 
+#include <cstddef>
+
 ///special class for Null values
 ///this was a legacy class before nullptr was introduced, use nullptr now!
 class WOLF_BASE_EXPORT NullValue
@@ -18,15 +20,15 @@ class WOLF_BASE_EXPORT NullValue
        public: 
                NullValue(){} 
                NullValue(const NullValue&){}
-               NullValue(const nullptr_t&){}
+               NullValue(const std::nullptr_t&){}
                
 //             operator void*()const{return (void*)0;}
                template<typename T> operator T*()const{return (T*)nullptr;}
                
                bool operator==(const NullValue&)const{return true;}
                bool operator!=(const NullValue&)const{return false;}
-               bool operator==(const nullptr_t&)const{return true;}
-               bool operator!=(const nullptr_t&)const{return false;}
+               bool operator==(const std::nullptr_t&)const{return true;}
+               bool operator!=(const std::nullptr_t&)const{return false;}
 
                template<typename T>bool operator==(const T*p)const{return p==nullptr;}
                template<typename T>bool operator!=(const T*p)const{return p!=nullptr;}
@@ -45,7 +47,7 @@ template<class T>class WOLF_BASE_EXPORT Nullable
                Nullable(const NullValue&):isnull(true),elem(){}
                /**creates a NULL value*/
                //TODO: find an implementation that works without auto-casting 0 to nullptr while not using explicit
-               explicit Nullable(const nullptr_t&):isnull(true),elem(){}
+               explicit Nullable(const std::nullptr_t&):isnull(true),elem(){}
                /**creates a wrapped non-NULL value that is equivalent to the original*/
                Nullable(const T&t):isnull(false),elem(t){}
                /**copies a nullable value*/
@@ -101,9 +103,9 @@ template<class T>class WOLF_BASE_EXPORT Nullable
                ///compares the Nullable with the special null value
                bool operator!=(const NullValue&)const{return !isnull;}
                ///compares the Nullable with the special null value
-               bool operator==(const nullptr_t&)const{return isnull;}
+               bool operator==(const std::nullptr_t&)const{return isnull;}
                ///compares the Nullable with the special null value
-               bool operator!=(const nullptr_t&)const{return !isnull;}
+               bool operator!=(const std::nullptr_t&)const{return !isnull;}
        private:
                bool isnull;
                T elem;