You were actually right, obfuscated. What I said had no sense because in fact, once created, C++ references cannot be repointed to another variable! If you try to change it, it performs assignment on the pointed variable instead.
I just wrote a small program to show the differences.
This should give compile errors in the last 2 appendings:
#include <iostream> // [ C++ STL ] I/O Streams
#include <string> // [ C++ STL ] Strings
using namespace std;
int main()
{
string str = "string";
string another;
string& const StringRefConst = str;
string const& StringConstRef = str;
const string& ConstStringRef = str;
// attempts to change the string
StringRefConst += " changed from StringRefConst"; // allowed
StringConstRef += " changed from StringConstRef"; // error
ConstStringRef += " changed from ConstStringRef"; // error
return 0;
}