¿Puede C ++ 0x todavía asignar explícitamente con el operador global nuevo?

Wikipedia estados:

Se puede hacer imposible asignar un tipo con el operador new:

struct NonNewable {
    void *operator new(std::size_t) = delete;
};

Un objeto de este tipo solo se puede asignar como objeto de pila o como miembro de otro tipo. No se puede asignar directamente al montón sin trucos no portátiles. (Dado que la colocación nueva es la única forma de llamar a un constructor en la memoria asignada por el usuario y este uso se ha prohibido como anteriormente, el objeto no se puede construir correctamente).

Eliminar el operador new es similar a hacerlo privado en C ++ actual, pero no está utilizando explícitamente el operador global new, lo que evita la búsqueda específica de clase, ¿sigue siendo válido C ++ 0x?

NonNewable *p = ::new NonNewable();
// neither non-portable nor trickery, though perhaps not widely known

¿Me he perdido algo en el draft?

Para ser claros, esto es válido C ++ 03 yfunciona bien:

struct NonNewable {
private:
  void *operator new(std::size_t);  // not defined
};

int main() {
  // ignore the leaks, it's just an example

  void *mem = operator new(sizeof(NonNewable));
  NonNewable *p = ::new(mem) NonNewable();

  p = ::new NonNewable();

  return 0;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta