Bug#271121: vdr-plugin-freecell: FTBFS with gcc-3.4: dependent-name ` cTBList<T>::cItem' is parsed as a non-type, but instantiation yields a type
Andreas Jochens
pkg-vdr-dvb-devel@lists.alioth.debian.org
Sat, 11 Sep 2004 12:55:04 +0200
Package: vdr-plugin-freecell
Severity: normal
Tags: patch
When building 'vdr-plugin-freecell' with gcc-3.4 I get the following error:
tools/list.h:288: instantiated from `T& cTBList<T>::Append() [with T = cTBString]'
tools/list.h:307: instantiated from `void cTBList<T>::Append(const T&) [with T = cTBString]'
tools/list.h:535: instantiated from here
tools/list.h:206: error: dependent-name ` cTBList<T>::cItem' is parsed as a non-type, but instantiation yields a type
tools/list.h:206: note: say `typename cTBList<T>::cItem' if a type is meant
tools/list.h: In member function `typename cTBList<T>::cItem* cTBList<T>::Unlink() [with T = cCard*]':
tools/list.h:398: instantiated from `T cTBList<T>::Take() [with T = cCard*]'
tools/list.h:66: instantiated from `T cTBList<T>::TakeFirst() [with T = cCard*]'
cards.c:64: instantiated from here
tools/list.h:341: error: dependent-name ` cTBList<T>::cItem' is parsed as a non-type, but instantiation yields a type
tools/list.h:341: note: say `typename cTBList<T>::cItem' if a type is meant
tools/list.h: In member function `typename cTBList<T>::cItem* cTBList<T>::NewItem(cTBList<T>::cItem*, cTBList<T>::cItem*) const [with T = cCard*]':
tools/list.h:288: instantiated from `T& cTBList<T>::Append() [with T = cCard*]'
tools/list.h:307: instantiated from `void cTBList<T>::Append(const T&) [with T = cCard*]'
cards.c:71: instantiated from here
tools/list.h:206: error: dependent-name ` cTBList<T>::cItem' is parsed as a non-type, but instantiation yields a type
tools/list.h:206: note: say `typename cTBList<T>::cItem' if a type is meant
make[1]: *** [cards.o] Error 1
make[1]: Leaving directory `/vdr-plugin-freecell-0.0.1'
make: *** [build-stamp] Error 2
With the attached patch 'vdr-plugin-freecell' can be compiled using gcc-3.4.
Regards
Andreas Jochens
diff -urN ../tmp-orig/vdr-plugin-freecell-0.0.1/tools/list.h ./tools/list.h
--- ../tmp-orig/vdr-plugin-freecell-0.0.1/tools/list.h 2004-02-11 13:33:26.000000000 +0100
+++ ./tools/list.h 2004-09-11 12:52:20.473217385 +0200
@@ -90,22 +90,22 @@
T &SetNextCurrent ();
T &SetPrevCurrent ();
- friend cTBList<T> &operator+= <> (cTBList<T> &list1, const cTBList<T> &list2);
- friend cTBList<T> &operator+= <> (cTBList<T> &list, const T &element);
+// friend cTBList<T> &operator+= <> (cTBList<T> &list1, const cTBList<T> &list2);
+// friend cTBList<T> &operator+= <> (cTBList<T> &list, const T &element);
- friend cTBList<T> operator+ <> (const cTBList<T> &list1, const cTBList<T> &list2);
- friend cTBList<T> operator+ <> (const T &element, const cTBList<T> &list);
- friend cTBList<T> operator+ <> (const cTBList<T> &list, const T &element);
+// friend cTBList<T> operator+ <> (const cTBList<T> &list1, const cTBList<T> &list2);
+// friend cTBList<T> operator+ <> (const T &element, const cTBList<T> &list);
+// friend cTBList<T> operator+ <> (const cTBList<T> &list, const T &element);
/*friend cSource &operator<< <> (cSource &dest, const cTBList<T> &list);
- friend cSource &operator>> <> (cSource &dest, cTBList<T> &list);*/
+// friend cSource &operator>> <> (cSource &dest, cTBList<T> &list);*/
};
// Template Implementation (inline funcs)
template<class T>
inline int cTBList<T>::Find (const T & i) {
- cTBList<T>::cItem *item = m_First;
+ typename cTBList<T>::cItem *item = m_First;
int index = 0;
while (item && (item->Data != i)) {
@@ -203,7 +203,7 @@
template<class T>
typename cTBList<T>::cItem *cTBList<T>::NewItem (cTBList<T>::cItem *pBefore, cTBList<T>::cItem *pAfter) const {
- cTBList<T>::cItem *item = new cTBList<T>::cItem;
+ typename cTBList<T>::cItem *item = new typename cTBList<T>::cItem;
item->Next = pAfter;
item->Prev = pBefore;
@@ -235,7 +235,7 @@
if ((int)idx == m_CurPos)
return m_Current;
- cTBList<T>::cItem *item;
+ typename cTBList<T>::cItem *item;
int dist = idx - m_CurPos;
bool direct;
@@ -271,7 +271,7 @@
template<class T>
T &cTBList<T>::Prepend () {
- cTBList<T>::cItem *item = NewItem(NULL, m_First);
+ typename cTBList<T>::cItem *item = NewItem(NULL, m_First);
m_First = m_Current = item;
if (!m_Last)
@@ -285,7 +285,7 @@
template<class T>
T &cTBList<T>::Append () {
- cTBList<T>::cItem *item = NewItem(m_Last, NULL);
+ typename cTBList<T>::cItem *item = NewItem(m_Last, NULL);
m_Last = m_Current = item;
if (!m_First)
@@ -317,13 +317,13 @@
return true;
}
- cTBList<T>::cItem *nextItem = Locate(idx);
+ typename cTBList<T>::cItem *nextItem = Locate(idx);
if (!nextItem)
return false;
- cTBList<T>::cItem *prevItem = nextItem->Prev;
+ typename cTBList<T>::cItem *prevItem = nextItem->Prev;
- cTBList<T>::cItem *item = NewItem(prevItem, nextItem);
+ typename cTBList<T>::cItem *item = NewItem(prevItem, nextItem);
item->Data = i;
m_CurPos = idx;
@@ -338,7 +338,7 @@
if (!m_Current)
return NULL;
- cTBList<T>::cItem *item = m_Current;
+ typename cTBList<T>::cItem *item = m_Current;
if (item == m_First) {
if (m_First = item->Next)
m_First->Prev = NULL;
@@ -370,7 +370,7 @@
if (Find(i) == -1)
return false;
- cTBList<T>::cItem *item = Unlink();
+ typename cTBList<T>::cItem *item = Unlink();
if (!item)
return false;
@@ -383,7 +383,7 @@
if (!Locate(idx))
return false;
- cTBList<T>::cItem *item = Unlink();
+ typename cTBList<T>::cItem *item = Unlink();
if (!item)
return false;
@@ -412,13 +412,13 @@
template<class T>
void cTBList<T>::Clear () {
- cTBList<T>::cItem *item = m_First;
+ typename cTBList<T>::cItem *item = m_First;
m_First = m_Last = m_Current = NULL;
m_Count = 0;
m_CurPos = -1;
- cTBList<T>::cItem *Prev;
+ typename cTBList<T>::cItem *Prev;
while (item) {
Prev = item;
item = item->Next;