С течением времени появились различные альтернативные реализации STL *, такие как STLPort. Некоторые крупные корпорации также используют собственный внутренний порт STL для различных целей.
С С++ 03 можно написать порт STL, используя только переносимые возможности языка С++, что означает, что любой соответствующий компилятор должен скомпилировать его.
Но с С++ 11 нет определенных функций, которые требуют поддержки компилятора?
Например, я не вижу, как std::is_standard_layout
может быть реализовано с использованием только функций языка С++. Я думаю, что std::is_base_of
может быть реализовано в терминах std::is_convertible
, используя базовые и производные указатели. Но я не могу представить, как реализовать std::is_standard_layout
. Могут быть и другие функции, которые мне не приходили.
Итак, я исправлю здесь? Невозможно ли написать полный порт стандартной библиотеки в С++ 11, используя только функции языка С++?
* Я знаю, что STL и "стандартная библиотека С++" не являются строго взаимозаменяемыми, но, очевидно, я имею в виду С++ Standard Libary в этом случае.