Да, стандартные библиотеки должны соответствовать стандарту, но в этом есть некоторая гибкость. Стандарт не требует конкретной реализации функций, и реализация может свободно добавлять внутренние функции, атрибуты ... при условии соблюдения требований.
Обратите внимание, что существует другая концепция библиотеки, соответствующей стандарту, и библиотека реализуется с использованием только стандартных функций.
По конкретным вопросам ниже:
Может ли стандартная библиотека, предоставляемая одним компилятором, компилироваться с другими компиляторами?
Некоторые будут, некоторые нет. реализация стандартной библиотеки может использовать встроенные функции компилятора для некоторых операций, функций, присутствующих только в одной платформе, но не для других ... Некоторые реализации STL могут быть скомпилированы с использованием различных компиляторов, например, таких как STLPort, Dinkumware (которые также поставляется с VS, с некоторыми модификациями VS)
Когда мы говорим, что определенный компилятор является стандартным конформантом, означает ли это автоматически, что stdlib, который идет с ним, также является константой стандарта? Или это просто означает, что этот компилятор может компилировать стандартный код, написанный нами, программистами?
Это означает, что библиотека должна быть совместимой, но опять же, стандарт не предписывает реализацию библиотеки, и они могут использовать нестандартные расширения и тому подобное, которые будут работать в одном компиляторе, но, возможно, не в других компиляторах , Рассмотрим, например, реализацию shared_ptr
, счетчик ссылок должен обновляться атомарно, но в текущем стандарте не было атомарных операций над целыми числами, поэтому он должен быть реализован с точки зрения нестандартных функций.
Могу ли я использовать стандартную библиотеку, предоставленную одним компилятором, в моем проекте, который использует другой компилятор для компиляции проекта? Является ли портативность такой же, как стандартное соответствие?
Не обязательно.