Question: ```
const std::string  s1("foo");
const std::string& s2("foo");

```

Not sure how they are different but I'm seeing evidence of both usages. Any ideas?

Answer: 
They are identical in meaning, due to the way constant references can bind to temporaries plus string having an implicit conversion from char\*.

For clarity and readability, prefer the non-reference.
The first instance creates a constant string variable initialized to hold "foo". The second one creates a constant reference to a string and then initializes that constant reference to point at a temporary string that was initialized to hold "foo".