При сравнении значения без знака, как в этом тесте:
if (pos == (size_t)-1)
Это сравнение технически отличается от следующего:
if (pos == (size_t)~0)
Я не привык ко второму варианту. Вот почему я задаю вопрос. Ответ может быть довольно неудачным, если это да.