Найден один «улов», хотя для большинства людей он никогда не проявится. Со страницы проекта:
Атомная операция. Он не записывает элементы операторов по одному, как IOStreams, поэтому не имеет проблем с атомарностью
Единственный способ увидеть, как это происходит, - это если он буферизирует весь вывод вызова write()
, а затем записывает его в ostream
за один шаг. Это означает, что ему нужно выделить память, и если объект, переданный в вызов write()
, производит много выходных данных (несколько мегабайт или более), он может потреблять вдвое больше памяти во внутренних буферах (при условии, что он использует растущий трюк a-buffer-by-dupling-его-size-каждый раз).
Если вы просто используете его для ведения журнала, а не, скажем, для сброса огромных объемов XML, вы никогда не увидите эту проблему.
Единственный другой «улов», который я вижу:
Очень переносимый. Он будет работать со всеми хорошими современными компиляторами C ++; это даже работает с Visual C ++ 6!
Так что он не будет работать со старым компилятором C ++, таким как cfront
, тогда как iostreams
обратно совместим с поздними 80-ми. Опять же, я бы удивился, если бы у кого-нибудь возникла проблема с этим.