Compilation error of variadic template (C++0x)
I am using GCC 3.4.4 (Cygwin) and I have variadicg++ 4.1.1 instaled
on this.
Lets take a look at the code (I wrote to make myself more familiar
with variadic templates) in file named temp.cpp:
template<typename... Values>
struct list;
template<>
struct list<> {
typedef list<> tail;
};
template<typename Head, typename... Tail>
struct list<Head, Tail...> {
typedef Head head;
typedef list<Tail...> tail;
};
template<typename... Lists>
struct join;
template<typename... ListElements>
struct join<list<ListElements...> > {
typedef list<ListElements...> type;
};
template<typename... ListElements, typename... ListElements2,
typename... Lists>
struct join<list<ListElements...>, list<ListElements2...>, Lists...> {
typedef join<list<ListElements..., ListElements2...>, Lists...>::type
type;
};
After compiling it I get following error:
temp.cpp:26: error: type 'join<list<ListElements ...,
ListElements2 ...>, Lists ...>' is not derived from type
'join<list<ListElements ...>, list<Tail ...>, Lists ...>'
temp.cpp:26: error: expected ';' before 'type'
I don't understand the error. The reason of it.
All I wanted to express with "join" is that "join" of a single list
is that list and "join" of two lists and perhaps something more is
"join" of those two lists joined and the rest.
What is wrong?
Adam Badura
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]