为什么这段代码无法编译?
#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 ++。