C++相談室 part54

このエントリーをはてなブックマークに追加
47デフォルトの名無しさん
ちょっとした質問です。

namespace A
{
 struct X {};
 void *operator new (size_t n, X&) { return 0; }
 void f()
 {
  X c;
  new (c) int; // ←ここ
 }
}

"ここ"で(size_t n, X&)に適合する呼出が見つかりませんと言われてしまいます。
ネームスペースAからグローバルスペース?に移すと難なく通ります。
operator new (...)で呼び出すとネームスペースから外さなくてもエラーになりません。
仕様でしょうか?

ちなみにVS2003です。