I used g++ 4.7.0 to compile the piece of code:
#include <stdio.h>
#include <boost/call_traits.hpp>
using namespace boost;
template <typename... Args> long add(Args...);
template <typename T> long add( typename call_traits<T>::param_type t) { return t; }
template <typename A, typename... Args>
long add( typename call_traits<A>::param_type a, typename call_traits<Args>::param_type... args )
{
return a + add( args... );
}
int main()
{
char c = 0;
short s = 1;
int i = 2;
long l = 3;
long n = add( c, s, i, l );
return 0;
}
And I encountered a link error:
/tmp/cc8rJ4xe.o: In function `main':
variadic-templates.cpp:(.text+0x33): undefined reference to `long add<char, short, int, long>(char, short, int, long)'
collect2: error: ld returned 1 exit status
Is there anyone who can help me to resolve the problem? Thanks very much!
Sincerely,
Cyril
[Linux C Programming]
[Linux Kernel]
[eCos]
[Fedora Development]
[Fedora Announce]
[Autoconf]
[The DWARVES Debugging Tools]
[Yosemite Campsites]
[Yosemite News]
[Linux GCC]