Jak używać typu powrotu na końcu z członkiem klasy z szablonem
Próbuję zaimplementować następującą klasę:
template <typename Container>
class reverse_adaptor
{
public: // Construction
reverse_adaptor(Container &container) :
m_container(container)
{}
public: // STL container static polymorphism
auto begin() const -> decltype(m_container.rbegin())
{
return m_container.rbegin();
}
auto end() const -> decltype(m_container.rend())
{
return m_container.rend();
}
private: // Members
Container &m_container;
};
Powodem, dla którego używam typu powrotu na końcu, jest to, że nie wiem, czy m_container będzie stały, czy nie, więc pozwalam kompilatorowi na to pracować. Dostaję jednak następujące błędy kompilatora:
/Users/mark/Blah/Stdx.h:77:40: Brak członka o nazwie 'm_container' w 'stdx :: reverse_adaptor>>'
Myślałem, że może to być związane z wielostopniowym przebiegiem typów szablonów, więc zmieniłem go na czytaniedecltype(this->m_container.rbegin())
, ale to też nie zadziałało.
Jak mogę to uruchomić?
Przykład -http://ideone.com/ekVYlH