>>232
g++ では通りませんでした。char p[] = "ABC"; なら通ります。
C++ の仕様的には、>>224 に出てるエラーが言ってるように、
「外部リンケージを持つオブジェクトのアドレス」、つまり定数でなくては
なりません。
232 の p は変数なので、まあ通らないのは仕方がないかとも思うんですが、
定数である (char *)0 くらいはコンパイルできてもよいんじゃないかと。
元々は次のようなコードを書きたかったのです。
template<class X, const char *Name> class Hoge {
public:
void printName() {
if (Name) {
cout << Name << endl;
} else {
cout << typeid(X()).name() << endl;
}
}
};