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.
`const std::string s1("foo");` creates a `std::string` object on the stack and initializes it with the `const char*` string "foo." `const std::string& s1("foo")`, on the other hand, is a *const reference* to an implicitly constructed `std::string`.