Разрушаются ли представления / контроллеры представления из стека при изменении корневого представления в ios?

Обходное решение - определить operator<< как друга внутри определения Bar:

template< class T >
struct Foo {

  struct Bar {
    Bar ( const T &t ) : otherT_( t ) {}

    T otherT_;

    friend std::ostream& operator<< ( std::ostream &os, const Bar &bar )
    {
      os << "<bar: " << bar.otherT_ << ">";
      return os;
    }

  };

  Foo ( const T &t ) : myT_( t ) {}

  T myT_;
};

Проблема с вашим подходом заключается в том, что, как сказал в комментариях KerrekSB, T не может быть выведено. Для Foo<T>::Bar возможно бесконечно много T, каждый из которых может привести и к другому типу.

0
задан Hadrien Pierre Mazelier 26 February 2015 в 10:03
поделиться