Piszę niestandardową klasę leniwych ciągów znaków.Nie można zdefiniować elementu zależnego typedef
template <typename charT, typename traits = std::char_traits<charT>>
class lazy_basic_string
{
class char_proxy
{
char_proxy& operator=(charT ch);
};
char_proxy operator[](size_type i);
}
Następnie chcę zdefiniować te metody poza deklaracją klasy.
template <typename charT, typename traits>
using char_proxy = typename lazy_basic_string<charT, traits>::char_proxy;
template <typename charT, typename traits>
char_proxy<charT, traits>& char_proxy<charT, traits>::operator=(charT ch)
{
...
}
ale mam skompilować błędu:
cannot define member of dependent typedef char_proxy
więc nie mogę dowiedzieć się, co jest problemem. Dlaczego kompilator nie może używać skrótu char_proxy zamiast lazy_basic_string :: char_proxy?
Używam g ++ 4.7. Wygląda na to, że definicja członków klasy według aliasu szablonu nie jest obsługiwana, więc lepiej będzie uniknąć tej funkcji. – eucpp