我正在尝试实现以下类:
templateclass 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是否为const,所以我让编译器为我工作.但是,我收到以下编译器错误:
/Users/mark/Blah/Stdx.h:77:40:'stdx :: reverse_adaptor>>中没有名为'm_container'的成员
我认为它可能与模板化类型的多阶段传递有关,因此将其更改为读取decltype(this->m_container.rbegin())
,但这也不起作用.
我怎样才能让它发挥作用?
示例 - http://ideone.com/ekVYlH