フリー オブジェクトの初期化順序は、C++ では定義されていません。しかし、次の場合はどうでしょうか。
namespace foo {
char const* str = "hey";
struct A {
A() { cout << str; }
} obj;
}
これはまだ定義されていない動作ですか、それとも文字列リテラルで初期化されたポインターのための特別な規定がありますか?
それはさておき: str が "char const[]" 型だったら? それが std::string だったら?