ネタ元: System::String constructor
当初の疑問点は 2 つありました。
で、これを調査しているうちに「char と signed char」で書いたように char と signed char は compile option "/J" に関わらず別ものであるということがわかりました。理由は「charは虚数ですか?」で comment されました。
# re: charは虚数ですか? 2009/06/15 1:53 egtra
X3014:2003の3.9.1 基本型の中に「単なる文字型(char)、符号なし文字型(unsigned char)、及び符号付き文字型(signed char)は、三つの別々の型とする」という規定がありです。
なんでこんなことするんだろう?って疑問は尽きませんが。。。
で、いろいろ実験しているうちに String(signed char *) は間違いで、C++/CLI では String(char *) であるということがわかりました。
とりあえず、「String コンストラクタ (SByte*)」に書かれている内容は間違っていますね。
また、egtra さんの実験により C++/CLI では System::String(System::SByte *) もつぶされていると推測できる現象が確認できました。
ここから導き出せる結論としては、System::String constructor は C++/CLI とその他の言語で overload が全く別物になっているということです。
ということで、System::String constructor は String(char *) や String(wchar_t *) として新たに目次を起こすべきだと思います。