Retornando uma referência inválida

Às vezes, quando estou programando em C ++, gostaria que houvesse umundefined valor para cada variável algo como Javascript !. Por exemplo, quando estou retornando um valor para o elemento fora de limite de uma matriz, é útil retornar umundefined em vez de lançar uma exceção ou:

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; !!
  }
};

Outra opção suja (na minha opinião) está retornando uma referência de uma variável pré-defind como uma variável de referência ruim. Eu sei que não podemos atribuirnull ou algo assim para uma variável de referência.

Existe um outro padrão bem formado para retornar uma referência onde o chamador tem a capacidade de descobrir que o valor retornado não é válido?

EDITAR: Eu não sou maupointer

questionAnswers(4)

yourAnswerToTheQuestion