我有以下设置:
template< class T >
struct Foo {
struct Bar {
Bar ( const T &t ) : otherT_( t ) {}
T otherT_;
};
Foo ( const T &t ) : myT_( t ) {}
T myT_;
};
现在,我想让Foo< T >::Bar
std::cout 和朋友可以流式传输实例。我试过这个:
template< class T >
std::ostream& operator<< ( std::ostream &os,
const typename Foo< T >::Bar &bar ) {
os << "<bar: " << bar.otherT_ << ">";
return os;
}
但以下代码无法编译:
Foo< int > foo( 5 );
Foo< int >::Bar bar( 7 );
std::cout << bar << std::endl;
我猜编译器无法推断出类型T
或其他东西。有没有办法让嵌套类的此类实例表现良好operator<<
?
谢谢!