STL容器的二进制兼容性

| 假设我用C ++写了一个DLL,想导出一个带有std :: vector参数的方法。我可以希望不同的STL版本之间具有任何二进制兼容性吗?     
已邀请:
如果您是指同一个编译器的更新版本包含的版本之间,是的,它在某些情况下可以(并且将)起作用,但是您必须小心。还有一些特殊情况,例如Windows上的Intel和Microsoft编译器- Intel非常谨慎地保持二进制兼容性,至少在我尝试过它时,它总是能很好地工作。 对于大多数其他情况,答案是否定的。     
我不知道版本之间是否有任何兼容性保证,甚至同一个编译器上的发行版和调试版本之间也没有保证。 一种解决方案是为向量创建包装器。创建一个具有您从容器中所需的所有功能的类,并根据对该类的唯一成员私有向量的操作来实现它们。将所有类代码保留在DLL中。     
绝对不!如果使用相同编译器的不同版本进行编译,则您甚至不能依靠相同版本的STL进行兼容。     

要回复问题请先登录注册