C++ C+中的替代STL实现+;11及以上

C++ C+中的替代STL实现+;11及以上,c++,c++11,stl,C++,C++11,Stl,随着时间的推移,出现了STL*的各种替代实现,例如STLPort。某些大公司还将自己的STL内部端口用于各种用途 用C++ 03,可以使用只使用C++的C++语言编写STL的端口,这意味着任何符合编译器的编译器都应该能够编译它。 但是对于C++11,难道没有需要编译器支持的某些特性吗 例如,我不知道如何使用C++语言特性来实现代码> STD::ISHStand。我认为std::is_base_of可以通过std::is_convertible实现,使用基指针和派生指针。但我无法想象如何实现标准布

随着时间的推移,出现了STL*的各种替代实现,例如STLPort。某些大公司还将自己的STL内部端口用于各种用途

用C++ 03,可以使用只使用C++的C++语言编写STL的端口,这意味着任何符合编译器的编译器都应该能够编译它。 但是对于C++11,难道没有需要编译器支持的某些特性吗

例如,我不知道如何使用C++语言特性来实现代码> STD::ISHStand。我认为
std::is_base_of
可以通过
std::is_convertible
实现,使用基指针和派生指针。但我无法想象如何实现标准布局。可能还有其他一些我没有想到的功能

那么,我说的对吗?用C++语言的特点,不可能在C++ 11中写入标准库的完整端口吗?
<> p>*我知道STL和C++标准库不是严格可互换的,但我的意思是C++ C++标准库。在< C++ >任何版本的版本中,你不能编写一个完全可移植的标准C++库实现。首先,一些标准的C++库组件清楚地抽象了系统的细节。例如,文件流抽象了对文件访问的访问。是的,你可以在引擎盖下使用<代码>文件*/COD>,但是我认为标准C库是标准C++库的一部分,而且一个便携实现也需要包括这个部分。此外,某些类型实际上取决于编译器,例如,因为它们之间存在语言级别的交互。例如,
std::bad_cast
是由于
动态_cast()
而引发的。此外,一些标准的C++库组件需要利用内存布局的知识,而 ReRealtTyCaster()/<代码>做正确的事情。在其他情况下,标准库指定无法确定的值,例如,
std::numeric_limits
的某些字段


《标准C++库》的总体思想是:它涵盖了常见的需求,实现了某些不能实现的、高效的、可实现的特征。您引用的类型特征只是编译器需要提供一些帮助的一些示例。虽然我试图在编译器如何公开类型特征方面达成一些一致,但是编译器作者坚持他们需要在他们的选择上自由,标准C++库应该只给特性暴露的方式提供一个公共接口。< /P>如何重写例如C++中的代码> STD::StIGESTATEATION/<代码>?那么
new
std::bad_alloc
呢?需要语言支持的功能和需要编译器支持的功能之间有什么区别?
new
是一种语言功能,而不是库功能。但是你有一点我想的是,谁在乎呢?如果没有编译器支持,也无法编写标准C库实现。根据规范,实现由编译器+库组成。这告诉我们很多事情。@DyP:是的。我会修好的。谢谢