Почему код ниже хорошо скомпилирован в 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;
}
Доказательные ссылки: g++/clang++
Когда я переместил функцию друга в глобальное пространство имен, код хорошо скомпилирован для обоих компиляторов (clang++/g++).
Какая реализация в этом случае более совместима с С++ Standart?