What are the differences between size_t and std::size_t in terms of where they are declared, when they should be used and any other differentiating
size_t
std::size_t
std::size_t is in fact stddef.h's size_t.
cstddef gives the following:
#include namespace std { using ::ptrdiff_t; using ::size_t; }
...effectively bringing the previous definition into the std namespace.