Added variadic '...' syntax for inheritance introduced in C++0x.

Added sizeof... syntax introduced in C++0x.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@11467 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Matevz Jekovec 2009-07-29 13:38:22 +00:00
commit 2e01562965
2 changed files with 107 additions and 11 deletions

View file

@ -1,8 +1,67 @@
/* This testcase checks whether Swig correctly parses and generates the code
for variadic templates. This covers the variadic number of arguments inside
the template brackets, new functions sizeof... and multiple inheritance
using variadic number of classes.
*/
%module cpp0x_variadic_templates
////////////////////////
// Variadic templates //
////////////////////////
%inline %{
#include <vector>
#include <string>
#include <map>
template<typename... Values>
class tuple {
class MultiArgs {
};
class MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>> multiArgs;
%}
// TODO
//%template (MultiArgs) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>;
////////////////////////
// Variadic sizeof... //
////////////////////////
%inline %{
template<typename ...Args> struct SizeOf {
static const int size = sizeof...(Args);
};
%}
// TODO
//%template (SizeOf) SizeOf<int, int>;
//////////////////////////
// Variadic inheritance //
//////////////////////////
%inline %{
class A {
public:
A() {
a = 100;
}
int a;
};
class B {
public:
B() {
b = 200;
}
int b;
};
template <typename... BaseClasses> class MultiInherit : public BaseClasses... {
public:
MultiInherit(BaseClasses&&... baseClasses) : BaseClasses(baseClasses)... {}
};
%}
// TODO
//%template (MultiInherit) MultiInherit<A,B>;