template struct Foo { friend void operator<<(int, Foo const &) {} }; template class Bar : public Foo {}; inline Bar<0> bar(int,int,int) { return Bar<3>(); } // ERROR - no conversion