Hi,
I have been looking at some basic variadic template uses and so decided to give clang a go.
I downloaded the latest binaries from LLVM Download Page for Ubuntu 11.10 and have tried compiling the below code without success. The error returned is Error: too many template parameters in template redeclaration. I believe the syntax is correct. Can somebody confirm whether the error is a compiler bug or simply incorrect implementation.
#include <iostream>
template<typename ...ArgTypes>
class Tuple;
template<>
class Tuple<>
{
};
template<typename FirstType, typename ...RestTypes> // Too many template parameters
class Tuple : public Tuple<RestTypes...>
{
private:
FirstType Value;
public:
Tuple( FirstType ValueIn, RestTypes ...Others )
:Tuple<RestTypes...>( Others ), Value( ValueIn )
{
}
FirstType GetValue() const
{
return Value;
}
};
int main( int argc, char **argv )
{
Tuple<std::string> TestTuple( std::string( "Hello Tuple World!" ) );
std::cout << TestTuple.GetValue() << std::endl;
return 0;
}
clang -I /opt/clang/libcxx/include -I /media/Source/Generic -L /opt/clang/libcxx/lib hello_world.cpp -o hello_world -Wall -v -m64 -std=c++0x -stdlib=libc++ -ferror-limit=1
clang version 3.0 (tags/RELEASE_30/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
Thanks
Nick