Задать вопрос

В чем отличие forward_list::iterator от _Fwd_list_iterator?

Вероятно, туплю, но не могу понять, в чем дело.
Следующий код без проблем компилируется:
#include <forward_list>
template<typename T>
class Foo
{
    std::_Fwd_list_const_iterator<T> cur;
    //...
};

А вот следующий выдает ошибку:
#include <forward_list>
template<typename T>
class Foo
{
    std::forward_list<T>::const_iterator cur;
    //...
};

$ g++ -c -std=c++11 1.cpp
1.cpp:5:5: error: need ‘typename’ before ‘std::forward_list<T>::const_iterator’ because ‘std::forward_list<T>’ is a dependent scope
     std::forward_list<T>::const_iterator cur;
     ^

$ clang++ -c -std=c++11 1.cpp
1.cpp:5:5: error: missing 'typename' prior to dependent type name 'std::forward_list<T>::const_iterator'
    std::forward_list<T>::const_iterator cur;
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    typename 
1 error generated.

Fwd_list_const_iterator определен в libstdc++ вот так: (см https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++...
typedef _Fwd_list_const_iterator<_Tp>           const_iterator;

Есть идеи?
  • Вопрос задан
  • 2712 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя Hertz К ответам на вопрос (3)
@Hertz
_Fwd_list_const_iterator это внутренние детали реализации libstdc++, Вы вообще им пользоваться не должны.
Ответ написан
Комментировать