import size_t into pybind11 namespace (fixes #498)
diff --git a/include/pybind11/common.h b/include/pybind11/common.h
index c422081..f6e54e7 100644
--- a/include/pybind11/common.h
+++ b/include/pybind11/common.h
@@ -93,6 +93,7 @@
 #  pragma warning(pop)
 #endif
 
+#include <cstddef>
 #include <forward_list>
 #include <vector>
 #include <string>
@@ -182,7 +183,8 @@
 
 NAMESPACE_BEGIN(pybind11)
 
-typedef Py_ssize_t ssize_t;
+using ssize_t = Py_ssize_t;
+using size_t  = std::size_t;
 
 /// Approach used to cast a previously unknown C++ instance into a Python object
 enum class return_value_policy : uint8_t {
@@ -320,7 +322,7 @@
 };
 
 struct overload_hash {
-    inline std::size_t operator()(const std::pair<const PyObject *, const char *>& v) const {
+    inline size_t operator()(const std::pair<const PyObject *, const char *>& v) const {
         size_t value = std::hash<const void *>()(v.first);
         value ^= std::hash<const void *>()(v.second)  + 0x9e3779b9 + (value<<6) + (value>>2);
         return value;