Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Unified Diff: sky/engine/wtf/NullPtr.h

Issue 719063002: Revert "Remove support for MSVC" (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/engine/wtf/NullPtr.h
diff --git a/sky/engine/wtf/NullPtr.h b/sky/engine/wtf/NullPtr.h
index ccc9014fd57034d974b88bfca072013cec04dbc4..9614104e97603a8abef9c8115c2d162e5e2cce6f 100644
--- a/sky/engine/wtf/NullPtr.h
+++ b/sky/engine/wtf/NullPtr.h
@@ -27,6 +27,45 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef NullPtr_h
#define NullPtr_h
+// For compilers and standard libraries that do not yet include it, this adds the
+// nullptr_t type and nullptr object. They are defined in the same namespaces they
+// would be in compiler and library that had the support.
+
+#if COMPILER_SUPPORTS(CXX_NULLPTR) || defined(_LIBCPP_VERSION)
+
+// libstdc++ supports nullptr_t starting with gcc 4.6. STLport doesn't define it.
+#if (defined(__GLIBCXX__) && __GLIBCXX__ < 20110325) || defined(_STLPORT_VERSION)
+namespace std {
+typedef decltype(nullptr) nullptr_t;
+}
+#endif
+
+#else
+
+#include "wtf/WTFExport.h"
+
+namespace std {
+class nullptr_t {
+public:
+ // Required in order to create const nullptr_t objects without an
+ // explicit initializer in GCC 4.5, a la:
+ //
+ // const std::nullptr_t nullptr;
+ nullptr_t() { }
+
+ // Make nullptr convertible to any pointer type.
+ template<typename T> operator T*() const { return 0; }
+ // Make nullptr convertible to any member pointer type.
+ template<typename C, typename T> operator T C::*() { return 0; }
+private:
+ // Do not allow taking the address of nullptr.
+ void operator&();
+};
+}
+WTF_EXPORT extern const std::nullptr_t nullptr;
+
+#endif
+
#define WTF_DISALLOW_CONSTRUCTION_FROM_ZERO(ClassName) \
private: \
ClassName(int) = delete

Powered by Google App Engine
This is Rietveld 408576698