Отталкивание строки назад к вектору объектов

Я просматривал код, написанный для школьного проекта, который при ближайшем рассмотрении показался мне странным. У меня был класс, подобный приведенному ниже:

class Foo {
public:
    Foo(std::string s) : _s(s) {}
private:
    std::string _s;
};

int main() {
    std::string str = "Hiyo";

    std::vector<Foo> f;
    f.push_back(str); // Compiles. Weird to me though.
    f.push_back(Foo(str)); // Predictably, this compiles as well.

    return 0;
}

Почему первый вызов push_back является допустимым утверждением, хотя str не является Foo?

8
задан songyuanyao 23 August 2016 в 14:13
поделиться