これは、のconstコピーの処理におけるSTL実装間の違いについての質問ですstd::string
。私はそのような短いテストを持っています、それは2つのconstコピーをして、そしてによって返されたアドレスを印刷しますc_str()
:
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
string a("Hello World!");
const string b(a);
const string c(b);
printf("a: %p = %s\n", a.c_str(), a.c_str());
printf("b: %p = %s\n", b.c_str(), b.c_str());
printf("c: %p = %s\n", c.c_str(), c.c_str());
return c.c_str() == b.c_str();
}
libstdc++。so.6.0.16STLを使用するgcc4.6.2では、すべてのポインターが等しいものとして返されます。
この動作に頼ることはできますか?
ポータブルですか、それとも最近の規格で定義されていますか?
これは、libstdc ++、libc ++、Microsoft STL、stdcxx(apache.org)の現在または将来のバージョンで機能しますか?