operator std :: string:为什么对象无法输出?

时间:2016-06-28 13:40:31

标签: c++ string typecast-operator

为什么这段代码无法编译?

#include <string>
#include <iostream>

struct Foo
{
    operator std::string () const
    {
        return std::string("Hello world !");
    }
};

int main(void)
{
    Foo f;

    std::cout << f << "\n";
}

虽然这个:

#include <string>
#include <iostream>

int main(void)
{
    std::cout << std::string("Hello world !") << "\n";
}

也是这个:

#include <string>
#include <iostream>

struct Bar
{
    operator int ()
    {
        return 42;
    }
};

int main(void)
{
    Bar b;

    std::cout << b << "\n";
}

我认为这是同一件事,因为operator std::string,但g ++不会编译clang ++。

0 个答案:

没有答案