What is the definition of const-correctness?
I thought the concept of "const-correctness" was pretty well defined, but when I talked to other people about it, it seemed we had different ideas of what it means.  Some people say it's about a program having the "const" annotations in as many places as possible.  Others define a program as const-correct if and only if there are no violations of constness where the const annotation is used (ie. it's a property that the compiler checks for you).

So I'd like to know, which of these functions are const correct:

    struct Person {
        string getName1() const { return _name; }
        string getName2() { return _name; }
        string getName3() const { _name = "John"; return _name; }
        string getName4() { _name = "John"; return _name; }

        string _name;
    };

I've searched on the Internet for definitions but couldn't really find definite answer, and I also have suspicions that there might be a case of [citogenesis](http://xkcd.com/978/) at play.  So could anyone provide any solid citation for a definition?
What is the definition of const-correctness?
===

I thought the concept of "const-correctness" was pretty well defined, but when I talked to other people about it, it seemed we had different ideas of what it means.  Some people say it's about a program having the "const" annotations in as many places as possible.  Others define a program as const-correct if and only if there are no violations of constness where the const annotation is used (ie. it's a property that the compiler checks for you).

So I'd like to know, which of these functions are const correct:

    struct Person {
        string getName1() const { return _name; }
        string getName2() { return _name; }
        string getName3() const { _name = "John"; return _name; }
        string getName4() { _name = "John"; return _name; }

        string _name;
    };

I've searched on the Internet for definitions but couldn't really find definite answer, and I also have suspicions that there might be a case of [citogenesis](http://xkcd.com/978/) at play.  So could anyone provide any solid citation for a definition?