随着时间的推移,出现了 STL* 的各种替代实现 - 例如 STLPort。某些大公司也出于各种目的使用自己的 STL 内部端口。
使用 C++03,可以仅使用可移植的 C++ 语言功能编写 STL 的端口,这意味着任何符合要求的编译器都应该能够编译它。
但是对于 C++11,是否有某些功能需要编译器支持?
例如,我看不出如何std::is_standard_layout
仅使用 C++ 语言功能来实现。我认为std::is_base_of
可以std::is_convertible
使用基指针和派生指针来实现。但我无法想象如何std::is_standard_layout
实施。可能还有其他我没有想到的功能。
那么,我在这里正确吗?仅使用C++ 语言功能就不可能在 C++11 中编写标准库的完整端口吗?
*我知道 STL 和“C++ 标准库”不能严格互换,但显然在这种情况下我指的是 C++ 标准库。