Как использовать конечный тип возврата с шаблонным членом класса
Я пытаюсь реализовать следующий класс:
template
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;
};
Причина ям, используя конечный тип возврата, потому что я неЯ не знаю, будет ли m_container постоянным или нет, поэтому я позволю компилятору решить это за меня. Однако я'm получает следующие ошибки компилятора:
/Users/mark/Blah/Stdx.h:77:40: ни один участник не назван 'm_container» в 'stdx :: reverse_adaptor> >»
Я подумал, что это может быть связано с многоэтапным проходом шаблонных типов, поэтому изменил его на чтениеdecltype(this->m_container.rbegin())
но это нетоже не работает.
Как я могу заставить это работать?
Пример -http://ideone.com/ekVYlH