Please note that's just a curious question, I don't need a problem solution!
I have a method that takes in a string reference (string &some_string) and only reads from referenced string. Writing some code I forgot that it needs a reference and passed a quoted string (not a variable, just like "something") and IDE suggested casting it to string reference, as it won't compile. I didn't give it a thought and applied the suggestion (now passing (string &) "something"). And my program crashed as it reached this piece of code. So, why exactly would it cause a crash, compiling without even a warning (g++, c++11)? I don't really understand it since I'm only reading from this string.
Example:
#include <string>
#include <iostream>
using namespace std;
class CharSet
{
private:
    const string basis = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    const int N = 26;
    string array;  // string containing all element of the set
    int length;
    bool add_element(char chr) // Add an element (as char) if not already. Returns true if added, false if not.
    {
        bool b = false;
        if (!in_set(chr) && basis.find(chr) != string::npos) {
            array += chr;
            length++;
            b = true;
        }
        return b;
    }
    bool in_set(char chr) const  // Checks whether an element (as char) is in set. Returns corresponding bool value.
    {
        bool b = false;
        if (array.find(chr) != string::npos) b = true;
        return b;
    }
public:
    explicit CharSet(string& str)  // str - string of possible elements
    {
        array = "";
        length = 0;
        int len = (int) str.length();
        for (int i = 0; i < len; i++)
            add_element(str[i]);
        if (str.length() != length)
            cout << "\nSome mistakes corrected. Elements read: " << array << endl;
    }
};
int main()
{
    CharSet A((string &)"AKEPTYUMRX");
    getchar();
    return 0;
}
 
    