为什么下面的代码在 g++ 中编译良好,但在 clang 中出错?
#include <iostream>
class Object {};
class Print
{
public:
template <typename CharT>
inline friend std::basic_ostream<CharT> & operator<<(std::basic_ostream<CharT> & out, const Object&)
{
return (out << "object");
}
static void f( const Object& str )
{
std::cout << str;
}
};
int main()
{
std::cout << Object() << std::endl;
return 0;
}
当我将朋友函数移动到全局命名空间时,为两个编译器(clang++ / g++)编译好的代码。
在这种情况下,哪种实现更兼容 C++ Standart?