В некотором коде, который я унаследовал, я часто использую size_t с квалификатором пространства имен std. Например:
std::size_t n = sizeof( long );
Он компилируется и работает нормально, конечно. Но мне кажется плохой практикой (возможно, перенесенной с C?).
Не правда ли, что size_t встроен в С++ и, следовательно, в глобальное пространство имен? Должен ли заголовочный файл использовать size_t в С++?
Другой способ задать этот вопрос: не ожидается ли компиляция следующей программы (без включения) для всех компиляторов С++?
size_t foo()
{
return sizeof( long );
}