допустим первый вариант:
vector<string> v;
v.push_back("str");
почему первый вариант считается правильным и даже предпочтительным, а не например более правильный и более осмысленный (нет неявного преобразования char* в string) с моей точки зрения второй вариант?:
vector<string> v;
v.push_back(string("str"));
из той же оперы что и первый вариант:
string foo()
{
return "str";
}
существуют ли контейнеры отличные от std::string которые могут работать только со вторым вариантом или оба этих варианта это просто синонимы?