Devolviendo una referencia inválida

A veces cuando estoy programando en C ++ me gustaría que hubiera unundefined Valor para cada variable algo como Javascript !. Por ejemplo, cuando estoy devolviendo un valor para el elemento fuera de los límites de una matriz, fue útil devolver unundefined en lugar de lanzar una excepción, o

template <typename T, int SIZE>
class MyArray
{
  T arr[SIZE];
  static T badref;
public:
  T &operator[](int i)
  {
    if (i >=0 && i < SIZE)
      return arr[i];
    else
      throw std::string("OUT-OF-BOUNDS"); // or: return badref; !!
  }
};

Otra opción sucia (en mi opinión) es devolver una referencia de una variable pre-defind como una variable de mala referencia. Sé que no podemos asignarnull o algo así a una variable de referencia.

¿Hay algún otro patrón bien formado para devolver una referencia donde la persona que llama tenga la capacidad de averiguar si el valor devuelto no es válido?

EDITAR: No soy malopointer

Respuestas a la pregunta(4)

Su respuesta a la pregunta