Хорошо, понял. Проблема заключается в типе данных size_t, который имеет разные размеры для двух разных платформ. Оператор << определен для различного списка типов данных: </p>
StringBuffer& operator<<(unsigned short int n) { _UITOA(n); }
StringBuffer& operator<<(unsigned int n) { _UITOA(n); }
На 32-битной платформе "unsigned int" идеально подходит для size_t. На 64-битных платформах size_t равен 64 битам и не совпадает точно ни с одним объявлением оператора.
Решение состоит в том, чтобы выбрать точного оператора, используя правильный тип данных:
case 't': os_ << (unsigned int)path->rnode->char_type; break;
Или перегрузить оператор с помощью size_t:
StringBuffer& operator<<(size_t) { _UITOA(n); }